Browse Source

Added Minus fade in/out for test.

Vladimir N. Shilov 3 years ago
parent
commit
41d99cf05e
1 changed files with 118 additions and 2 deletions
  1. 118 2
      Src/main.c

+ 118 - 2
Src/main.c

@@ -58,6 +58,8 @@ static volatile uint8_t dispWDT = 0;
 static void btnProcess(void);
 static void Color_RGB(uint8_t r, uint8_t g, uint8_t b);
 static void ColorCircle(void);
+void MinusFadeIn(void);
+void MinusFadeOut(void);
 /* USER CODE END PFP */
 
 /* Private user code ---------------------------------------------------------*/
@@ -210,6 +212,118 @@ void in15Minus(void) {
   TUBE_C_ON;
 }
 
+void MinusFadeIn(void) {
+  static uint8_t cnt = 0;
+
+  TUBE_C_ON;
+
+  switch (cnt) {
+  case 0:
+    IN15_Minus;
+    RTOS_DeleteTask(MinusFadeOut);
+    RTOS_SetTask(MinusFadeIn, 2, 0);
+    break;
+  case 1:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 18, 0);
+    break;
+  case 2:
+    IN15_Minus;
+    RTOS_SetTask(MinusFadeIn, 4, 0);
+    break;
+  case 3:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 16, 0);
+    break;
+  case 4:
+    IN15_Minus;
+    RTOS_SetTask(MinusFadeIn, 6, 0);
+    break;
+  case 5:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 14, 0);
+    break;
+  case 6:
+    IN15_Minus;
+    RTOS_SetTask(MinusFadeIn, 8, 0);
+    break;
+  case 7:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 12, 0);
+    break;
+  case 8:
+    IN15_Minus;
+    RTOS_SetTask(MinusFadeIn, 10, 0);
+    break;
+  case 9:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 10, 0);
+    break;
+  case 10:
+    IN15_Minus;
+    RTOS_SetTask(MinusFadeIn, 12, 0);
+    break;
+  case 11:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 8, 0);
+    break;
+  case 12:
+    IN15_Minus;
+    RTOS_SetTask(MinusFadeIn, 14, 0);
+    break;
+  case 13:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 6, 0);
+    break;
+  case 14:
+    IN15_Minus;
+    RTOS_SetTask(MinusFadeIn, 16, 0);
+    break;
+  case 15:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 4, 0);
+    break;
+  case 16:
+    IN15_Minus;
+    RTOS_SetTask(MinusFadeIn, 18, 0);
+    break;
+  case 17:
+    IN15_OFF;
+    RTOS_SetTask(MinusFadeIn, 2, 0);
+    break;
+  case 18:
+    IN15_Minus;
+    cnt = 0;
+    return;
+    break;
+  
+  default:
+    cnt = 0;
+    break;
+  }
+  cnt ++;
+}
+
+void MinusFadeOut(void) {
+  static uint8_t off = 0;
+  static uint8_t on = 20;
+  static uint8_t st = 0;
+
+  if (st == 0) {
+    st = 1;
+    IN15_OFF;
+    off += 2;
+    if (off < 20) {
+      RTOS_SetTask(MinusFadeOut, off, 0);
+    }
+  } else {
+    st = 0;
+    IN15_Plus;
+    on -= 2;
+    RTOS_SetTask(MinusFadeOut, on, 0);
+  }
+}
+
 void in15Plus(void) {
   IN15_OFF;
   IN15_Plus;
@@ -232,8 +346,10 @@ void in15P(void) {
   * Show info on tubes.
   */
 void showTime(void) {
-  in15Minus();
-  RTOS_SetTask(in15Off, 500, 0);
+  //in15Minus();
+  //RTOS_SetTask(in15Off, 500, 0);
+  MinusFadeIn();
+  RTOS_SetTask(MinusFadeOut, 500, 0);
 
   uint8_t buf[4];
   buf[Tube_A] = Clock.Hr >> 4;