static void Elevator(void) { NEO_PixelIdxT i; (void)NEO_ClearAllPixel(); (void)NEO_TransferPixels(); for(i=NEO_PIXEL_FIRST; i<=NEO_PIXEL_LAST; i++) { NEO_SetPixelRGB(i, 0xff/2, 0xff/2, 0xff/2); (void)NEO_TransferPixels(); FRTOS1_vTaskDelay(20/portTICK_RATE_MS); } }
uint8_t NEO_ParseCommand(const unsigned char *cmd, bool *handled, const CLS1_StdIOType *io) { uint8_t res = ERR_OK; uint32_t color; int32_t tmp, x, y; const uint8_t *p; if (UTIL1_strcmp((char*)cmd, CLS1_CMD_HELP)==0 || UTIL1_strcmp((char*)cmd, "neo help")==0) { CLS1_SendHelpStr((unsigned char*)"neo", (const unsigned char*)"Group of neo commands\r\n", io->stdOut); CLS1_SendHelpStr((unsigned char*)" help|status", (const unsigned char*)"Print help or status information\r\n", io->stdOut); CLS1_SendHelpStr((unsigned char*)" clear all", (const unsigned char*)"Clear all pixels\r\n", io->stdOut); CLS1_SendHelpStr((unsigned char*)" set all <rgb>", (const unsigned char*)"Set all pixel with RGB value\r\n", io->stdOut); CLS1_SendHelpStr((unsigned char*)" set <x> <y> <rgb>", (const unsigned char*)"Set pixel with RGB value\r\n", io->stdOut); *handled = TRUE; return ERR_OK; } else if ((UTIL1_strcmp((char*)cmd, CLS1_CMD_STATUS)==0) || (UTIL1_strcmp((char*)cmd, "neo status")==0)) { *handled = TRUE; return PrintStatus(io); } else if (UTIL1_strcmp((char*)cmd, "neo clear all")==0) { NEO_ClearAllPixel(); NEO_TransferPixels(); *handled = TRUE; return ERR_OK; } else if (UTIL1_strncmp((char*)cmd, "neo set all", sizeof("neo set all")-1)==0) { p = cmd+sizeof("neo set all")-1; res = UTIL1_xatoi(&p, &tmp); /* read color RGB value */ if (res==ERR_OK && tmp>=0 && tmp<=0xffffff) { /* within RGB value */ color = tmp; NEO_SetAllPixelColor(color); NEO_TransferPixels(); *handled = TRUE; } } else if (UTIL1_strncmp((char*)cmd, "neo set", sizeof("neo set")-1)==0) { p = cmd+sizeof("neo set")-1; res = UTIL1_xatoi(&p, &x); /* read x pixel index */ if (res==ERR_OK && x>=0 && x<NEO_NOF_X) { res = UTIL1_xatoi(&p, &y); /* read y pixel index */ if (res==ERR_OK && y>=0 && y<NEO_NOF_Y) { res = UTIL1_xatoi(&p, &tmp); /* read color RGB value */ if (res==ERR_OK && tmp>=0 && tmp<=0xffffff) { color = tmp; NEO_SetPixelColor((NEO_PixelIdxT)x, (NEO_PixelIdxT)y, color); NEO_TransferPixels(); *handled = TRUE; } } } } return res; }
static portTASK_FUNCTION(AppTask, pvParameters) { (void)pvParameters; /* not used */ RTC1_TTIME time; RTC1_TDATE date; if (RTC1_GetRTCTimeDate(&time, &date)==ERR_OK) { TmDt1_SetDate((uint16_t)date.year+2000, date.month, date.day); TmDt1_SetTime(time.hour, time.min, time.sec, 0); } else { for(;;) {} /* error */ } (void)NEO_ClearAllPixel(); (void)NEO_TransferPixels(); #if HAS_CLOCK (void)NEOL_PixelTrail(0x00, 0x00, 0xFF, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 8, 25, 20); (void)NEOL_PixelTrail(0x00, 0xff, 0x00, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 16, 25, 15); (void)NEOL_PixelTrail(0x00, 0x50, 0xff, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 16, 25, 10); CLOCK_Init(); #endif for(;;) { #if HAS_ELEVATOR Elevator(); FRTOS1_vTaskDelay(1000/portTICK_RATE_MS); #else CLOCK_Update(); FRTOS1_vTaskDelay(50/portTICK_RATE_MS); #endif } /* for */ }
static void PONG_GameOver(void) { int i; #if PL_HAS_MP3 MUSIC_PlayTheme(MUSIC_THEME_BUZZER); #endif for(i=0;i<PONG_NOF_PIXELS;i++) { NEO_SetPixelColor(i, 0x300000); } NEO_TransferPixels(); }
void TestClock(void) { int hour, minute, second; for(;;) { for(hour=0;hour<24;hour++) { for(minute=0;minute<60;minute++) { for(second=0;second<60;second++) { CLOCK_SetTime(hour, minute, second); (void)NEO_TransferPixels(); WAIT1_WaitOSms(1); } } } } }
static void PONG_InitGame(void) { int i; NEO_ClearAllPixel(); /* background */ for(i=0;i<PONG_NOF_PIXELS;i++) { NEO_SetPixelColor(i, PONG_DEFAULT_BACKGROUND_RGB); } NEO_TransferPixels(); for(i=0;i<PONG_NOF_BALLS;i++) { PONG_InitBall(&PONG_Balls[i]); } POING_InitLimiter(&PONG_LeftLimiter); POING_InitLimiter(&PONG_RightLimiter); }
void CLOCK_Update(void) { static int prevHour=-1, prevMinute=-1, prevSecond=1; TIMEREC time; uint8_t res; res = TmDt1_GetTime(&time); if (res==ERR_OK) { if (time.Hour!=prevHour || time.Min!=prevMinute || time.Sec!=prevSecond) { CLOCK_SetTime(time.Hour, time.Min, time.Sec); (void)NEO_TransferPixels(); prevHour = time.Hour; prevMinute = time.Min; prevSecond = time.Sec; } } }
static void PONG_StartGame(void) { int i; PONG_LeftLimiter.color = 0x442255; PONG_LeftLimiter.pos = 0; PONG_LeftLimiter.isOn = TRUE; PONG_LeftLimiter.buttonTimeoutMs = 250; PONG_RightLimiter.color = 0x222255; PONG_RightLimiter.pos = PONG_NOF_PIXELS-1; PONG_RightLimiter.isOn = TRUE; PONG_RightLimiter.buttonTimeoutMs = 250; #if PONG_NOF_BALLS>=1 PONG_Balls[0].pos = PONG_LeftLimiter.pos+1; /* leftmost */ PONG_Balls[0].color = 0x001100; /* green */ PONG_Balls[0].forward = TRUE; /* left to right */ PONG_Balls[0].speedMs = 200; /* initial speed */ #endif #if PONG_NOF_BALLS>=2 PONG_Balls[1].pos = PONG_NOF_PIXELS-1-1; /* rightmost */ PONG_Balls[1].color = 0x0000ff; /* blue */ PONG_Balls[1].forward = FALSE; /* right to left */ PONG_Balls[1].speedMs = 150; /* initial speed */ #endif #if PONG_NOF_BALLS>=3 PONG_Balls[2].pos = PONG_NOF_PIXELS-1; /* rightmost */ PONG_Balls[2].color = 0x500050; PONG_Balls[2].forward = FALSE; /* right to left */ PONG_Balls[2].speedMs = 50; /* initial speed */ #endif #if PONG_NOF_BALLS>=4 PONG_Balls[3].pos = 0; /* rightmost */ PONG_Balls[3].color = 0x302050; PONG_Balls[3].forward = TRUE; /* right to left */ PONG_Balls[3].speedMs = 5; /* initial speed */ #endif for(i=0;i<PONG_NOF_BALLS;i++) { PONG_DrawBall(&PONG_Balls[i]); } PONG_SetLimiter(&PONG_LeftLimiter); PONG_SetLimiter(&PONG_RightLimiter); NEO_TransferPixels(); }
static portTASK_FUNCTION(AppTask, pvParameters) { (void)pvParameters; /* not used */ RTC1_TTIME time; RTC1_TDATE date; if (RTC1_GetRTCTimeDate(&time, &date)==ERR_OK) { TmDt1_SetDate((uint16_t)date.year+2000, date.month, date.day); TmDt1_SetTime(time.hour, time.min, time.sec, 0); } else { for(;;) {} /* error */ } (void)NEO_ClearAllPixel(); (void)NEO_TransferPixels(); CLOCK_Init(); for(;;) { CLOCK_Update(); FRTOS1_vTaskDelay(50/portTICK_RATE_MS); } /* for */ }
static bool PONG_UpdateBalls(void) { TickType_t currTickCount; bool transferPixels = FALSE; int i; bool gameOver = FALSE; currTickCount = FRTOS1_xTaskGetTickCount(); PONG_CheckLimiterButtons(); for(i=0;i<PONG_NOF_BALLS;i++) { if (currTickCount>=PONG_Balls[i].drawTickCounter+PONG_Balls[i].speedMs/portTICK_RATE_MS) { if (PONG_UpdateBall(&PONG_Balls[i])) { gameOver = TRUE; } transferPixels = TRUE; } } if (transferPixels) { NEO_TransferPixels(); } return gameOver; }
static void DimmColor(NEO_PixelIdxT start, NEO_PixelIdxT end, bool isRed, bool isGreen, bool isBlue) { int i, j; uint8_t red, green, blue; for(i=0;i<0xff;i+=0x10){ for(j=start;j<end;j++) { red = green = blue = 0; if (isRed) { red = i; } if (isGreen) { green = i; } if (isBlue) { blue = i; } NEO_SetPixelRGB(j, red, green, blue); } NEO_TransferPixels(); FRTOS1_vTaskDelay(50/portTICK_RATE_MS); } }
static portTASK_FUNCTION(NeoTask, pvParameters) { int i; #define DIMM 0x50 (void)pvParameters; /* parameter not used */ #if 0 NEO_ClearAllPixel(); for(i=0;i<10;i++) { NEO_SetPixelRGB(0, 0xff, 0x00, 0x00); NEO_TransferPixels(); FRTOS1_vTaskDelay(100/portTICK_RATE_MS); } #endif #if 0 NEO_SetPixelRGB(0, 0xff, 0x00, 0x00); NEO_SetPixelRGB(1, 0x00, 0xFF, 0x00); NEO_SetPixelRGB(2, 0x00, 0x00, 0xff); NEO_SetPixelRGB(3, 0x40, 0x50, 0x80); NEO_SetPixelRGB(4, 0x60, 0x00, 0xA0); NEO_SetPixelRGB(5, 0x40, 0x20, 0x80); NEO_SetPixelRGB(6, 0x20, 0x40, 0xFF); NEO_SetPixelRGB(7, 0xff, 0x60, 0x30); NEO_TransferPixels(); for(i=0;i<7;i++) { NEO_DimmPercentPixel(i,50); } NEO_TransferPixels(); #endif for(;;) { #if 0 for(i=0;i<=NEO_PIXEL_LAST;i++) { NEO_SetPixelRGB(i, 0xff, 0x00, 0x00); if (i>0) { NEO_SetPixelRGB(i-1, 0x00, 0x00, 0x00); } else if (i==0) { NEO_SetPixelRGB(NEO_PIXEL_LAST, 0x00, 0x00, 0x00); } NEO_TransferPixels(); FRTOS1_vTaskDelay(50/portTICK_RATE_MS); } #endif #if 0 NEOL_PixelTrail(0xff, 0x00, 0x00, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10); DimmColor(NEO_PIXEL_FIRST, NEO_PIXEL_LAST, TRUE, FALSE, FALSE); NEOL_PixelTrail(0xff, 0xff, 0x00, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10); DimmColor(NEO_PIXEL_FIRST, NEO_PIXEL_LAST, FALSE, TRUE, FALSE); NEOL_PixelTrail(0x00, 0xff, 0x00, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10); DimmColor(NEO_PIXEL_FIRST, NEO_PIXEL_LAST, FALSE, FALSE, TRUE); NEOL_PixelTrail(0x00, 0xff, 0xff, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10); DimmColor(NEO_PIXEL_FIRST, NEO_PIXEL_LAST, FALSE, TRUE, TRUE); NEO_ClearAllPixel(); NEOL_PixelTrail(0x00, 0x00, 0xff, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10); DimmColor(NEO_PIXEL_FIRST, NEO_PIXEL_LAST, TRUE, FALSE, TRUE); NEO_ClearAllPixel(); NEOL_PixelTrail(0xff, 0x00, 0xff, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10); DimmColor(NEO_PIXEL_FIRST, NEO_PIXEL_LAST, TRUE, TRUE, TRUE); #endif LED1_Neg(); FRTOS1_vTaskDelay(1000/portTICK_RATE_MS); //NEO_TransferPixels(); } }
void APP_Run(void) { int i; uint8_t red, green, blue; uint8_t dimmPercent = 50; NEO_Init(); for(;;) { GPIO_DRV_TogglePinOutput(LEDRGB_BLUE); if (start) { NEO_ClearAllPixel(); NEO_TransferPixels(); for(i=0;i<NEO_NOF_PIXEL;i++) { red = 0x10+(i*0x10); if (red==0) { red = 0x10; } green = 0x20+(i*0x20); if (green==0) { green = 0x10; } blue = 0x30+(i*0x30); if (blue==0) { blue = 0x10; } NEO_SetPixelRGB(i, red, green, blue); NEO_TransferPixels(); OSA_TimeDelay(50); } NEO_ClearAllPixel(); NEO_TransferPixels(); for(i=0;i<=7;i++) { NEO_SetPixelRGB(i, 0x00, 0x00, (i+1)*10); NEO_DimmPercentPixel(i, i*10); } for(i=8;i<=15;i++) { NEO_SetPixelRGB(i, 0x00, i-7*10, 0x00); NEO_DimmPercentPixel(i, (i-8)*10); } for(i=16;i<=23;i++) { NEO_SetPixelRGB(i, i-15*10, 0x00, 0x00); NEO_DimmPercentPixel(i, (i-16)*10); } for(i=24;i<=31;i++) { NEO_SetPixelRGB(i, 0x00, 0x00, (i-23)*10); NEO_DimmPercentPixel(i, (i-23)*10); } for(i=32;i<=39;i++) { NEO_SetPixelRGB(i, 0x00, i-31*10, 0x00); NEO_DimmPercentPixel(i, (i-31)*10); } for(i=40;i<=47;i++) { NEO_SetPixelRGB(i, i-40*10, 0, 0x00); NEO_DimmPercentPixel(i, (i-39)*10); } for(i=48;i<=55;i++) { NEO_SetPixelRGB(i, 0, 0, i-47*10); NEO_DimmPercentPixel(i, (i-47)*10); } for(i=56;i<=63;i++) { NEO_SetPixelRGB(i, 0, 0, i-55*10); NEO_DimmPercentPixel(i, (i-55)*10); } NEO_TransferPixels(); for(i=0;i<NEO_NOF_PIXEL;i++) { green = 0x5+(i*0x10); if (red==0) { red = 0x5; } blue = 0x5+(i*0x15); if (green==0) { green = 0x5; } red = 0x5+(i*0x20); if (blue==0) { blue = 0x5; } NEO_SetPixelRGB(i, red, green, blue); NEO_DimmPercentPixel(i, dimmPercent); } NEO_TransferPixels(); NEOL_PixelTrail(0xff, 0x00, 0x00, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10*2); NEOL_PixelTrail(0xff, 0xff, 0x00, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10*2); NEOL_PixelTrail(0x00, 0xff, 0x00, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10*2); NEOL_PixelTrail(0x00, 0xff, 0xff, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10*2); NEO_ClearAllPixel(); NEOL_PixelTrail(0x00, 0x00, 0xff, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10*2); NEO_ClearAllPixel(); NEOL_PixelTrail(0xff, 0x00, 0xff, NEO_PIXEL_FIRST, NEO_PIXEL_LAST, 12, 50, 10*2); } } }