Disabled external gits
This commit is contained in:
80
cs473-es/lab2/ch/sw/nios/application/hello_world.c
Executable file
80
cs473-es/lab2/ch/sw/nios/application/hello_world.c
Executable file
@@ -0,0 +1,80 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <math.h>
|
||||
#include "io.h"
|
||||
#include "system.h"
|
||||
|
||||
#include "stdint.h"
|
||||
#include "stddef.h"
|
||||
|
||||
#define SET_LED_COUNT(n) IOWR_32DIRECT(WS28XX_0_BASE,0x4,n)
|
||||
#define SET_LED_RGB(n,v) IOWR_32DIRECT(WS28XX_0_BASE,0x0,(n&0xFF)<<24 | (v&0xFFFFFF));
|
||||
#define CLEAR_LED_RGB(n) IOWR_32DIRECT(WS28XX_0_BASE,0x0,(n&0xFF)<<24 | 0);
|
||||
|
||||
|
||||
int hsv2rgb(float H, float S, float V);
|
||||
int led_idx(int idx, int max);
|
||||
|
||||
#define LEDN (16)
|
||||
#define LED_RGB(n,b) hsv2rgb((n/(float) LEDN),1.0,b)
|
||||
|
||||
int main()
|
||||
{
|
||||
SET_LED_COUNT(LEDN);
|
||||
uint8_t led = 0;
|
||||
while(1){
|
||||
|
||||
for(uint8_t i = 0; i < LEDN; ++i){
|
||||
if(i == led){
|
||||
SET_LED_RGB(i,LED_RGB(i,1.0));
|
||||
}else if(i == led_idx(led-1,LEDN) || i == led_idx(led+1,LEDN) ){
|
||||
SET_LED_RGB(i,LED_RGB(i,0.5));
|
||||
}else if(i == led_idx(led-2,LEDN) || i == led_idx(led+2,LEDN) ){
|
||||
SET_LED_RGB(i,LED_RGB(i,0.25));
|
||||
}else{
|
||||
CLEAR_LED_RGB(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
++led;
|
||||
if(led>=LEDN) led = 0;
|
||||
for(int i =0 ; i < 100000; ++i);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int led_idx(int idx, int max){
|
||||
if(idx<0) return idx+max;
|
||||
if(idx>max) return idx-max;
|
||||
}
|
||||
|
||||
|
||||
//Strongly Inspired from
|
||||
//https://github.com/Inseckto/HSV-to-RGB/blob/master/HSV2RGB.c
|
||||
|
||||
int hsv2rgb(float h, float s, float v) {
|
||||
float r, g, b;
|
||||
|
||||
int i = floor(h * 6);
|
||||
float f = h * 6 - i;
|
||||
float p = v * (1 - s);
|
||||
float q = v * (1 - f * s);
|
||||
float t = v * (1 - (1 - f) * s);
|
||||
|
||||
switch (i % 6) {
|
||||
case 0: r = v, g = t, b = p; break;
|
||||
case 1: r = q, g = v, b = p; break;
|
||||
case 2: r = p, g = v, b = t; break;
|
||||
case 3: r = p, g = q, b = v; break;
|
||||
case 4: r = t, g = p, b = v; break;
|
||||
case 5: r = v, g = p, b = q; break;
|
||||
}
|
||||
|
||||
int fr = ((int)(r*255))&0xFF;
|
||||
int fg = ((int)(g*255))&0xFF;
|
||||
int fb = ((int)(b*255))&0xFF;
|
||||
|
||||
return fr<<16 | fg<<8 | fb<<0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user