Ejemplo n.º 1
0
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);
  }
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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 */
}
Ejemplo n.º 4
0
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();
}
Ejemplo n.º 5
0
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);
        }
      }
    }
  }
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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;
    }
  }
}
Ejemplo n.º 8
0
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();
}
Ejemplo n.º 9
0
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 */
}
Ejemplo n.º 10
0
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;
}
Ejemplo n.º 11
0
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);
  }
}
Ejemplo n.º 12
0
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();
  }
}
Ejemplo n.º 13
0
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);
    }
  }
}