void test_pwm(void){ static T_UBYTE cont = 0; cont += 1; cont %=100; if(cont % 10 == 0){ blue_on(); }else{ blue_off(); } }
void app_rgb_led(void) { red_on(); delay_time(BLINK_DELAY); /* Red */ red_off(); green_on(); delay_time(BLINK_DELAY); /* Green */ green_off(); blue_on(); delay_time(BLINK_DELAY); /* Blue */ red_on(); delay_time(BLINK_DELAY); /* Blue + Red */ green_on(); blue_on(); delay_time(BLINK_DELAY); /* Red + Green */ red_off(); blue_on(); delay_time(BLINK_DELAY); /* Green + Blue */ red_on(); delay_time(BLINK_DELAY); /* Green + Blue + Red */ green_off(); blue_off(); }
void state_machine(void) { switch(ruw_state) { case 0: break; case 1: //VOLUMEN rub_stop_flag = 0; break; case 2: //FWD if(rub_pista == 5) rub_pista = 1; else rub_pista++; ruw_i=0; ruw_o=0; if(rub_reproduciendo == 1) ruw_state = 16; else ruw_state = 17; rub_stop_flag = 0; break; case 8: //STOP red_off(); green_off(); blue_off(); rub_flag = 0; rub_reproduciendo = 0; if(rub_stop_flag == 1) rub_pista = 1; rub_stop_flag = 1; ruw_state = 0; ruw_i=0; ruw_o=0; break; case 16: //PLAY rub_reproduciendo = 1; ruw_state = 16; rub_stop_flag = 0; break; case 17: //PAUSE rub_reproduciendo = 0; rub_stop_flag = 0; break; case 128: //VOLUMEN rub_stop_flag = 0; break; //RWD case 129: if(ruw_i>10 || ruw_o>0){ ruw_i=0; ruw_o=0; } else if((ruw_i<10) && (ruw_o==0)) { if(rub_pista == 1) rub_pista = 5; else rub_pista--; ruw_i = 0; ruw_o = 0; } if(rub_reproduciendo == 1) ruw_state = 16; else ruw_state = 17; rub_stop_flag = 0; break; default: rub_stop_flag = 0; break; } }
void player(void) { switch(rub_pista) { case 0: red_off(); green_off(); blue_off(); ruw_i=0; ruw_o=0; break; case 1: if(rub_reproduciendo == 1) { if(ruw_o<4) { if(ruw_i>0) { red_off(); green_on(); blue_off(); } if(ruw_i>6) { red_on(); green_on(); blue_on(); } if(ruw_i>10) { blue_off(); red_on(); green_off(); } if(ruw_i>12) { blue_on(); red_off(); green_off(); } if(ruw_i>16) { ruw_i = 0; ruw_o++; } ruw_i++; } else { ruw_i=0; ruw_o=0; rub_pista++; } } break; case 2: if(rub_reproduciendo == 1) { if(ruw_o<4) { if(ruw_i>0) { red_off(); green_on(); blue_on(); } if(ruw_i>4) { red_on(); green_off(); blue_on(); } if(ruw_i>8) { blue_off(); red_off(); green_on(); } if(ruw_i>14) { blue_off(); red_on(); green_off(); } if(ruw_i>16) { ruw_i = 0; ruw_o++; } ruw_i++; } else { ruw_i=0; ruw_o=0; rub_pista++; } } break; case 3: if(rub_reproduciendo == 1) { if(ruw_o<4) { if(ruw_i>0) { red_on(); green_on(); blue_on(); } if(ruw_i>6) { red_on(); green_on(); blue_off(); } if(ruw_i>12) { blue_on(); red_off(); green_off(); } if(ruw_i>16) { blue_off(); red_on(); green_off(); } if(ruw_i>18) { ruw_i = 0; ruw_o++; } ruw_i++; } else { ruw_i=0; ruw_o=0; rub_pista++; } } break; case 4: if(rub_reproduciendo == 1) { if(ruw_o<3) { if(ruw_i>0) { red_on(); green_on(); blue_off(); } if(ruw_i>4) { red_on(); green_off(); blue_on(); } if(ruw_i>10) { blue_off(); red_off(); green_on(); } if(ruw_i>14) { blue_on(); red_off(); green_off(); } if(ruw_i>20) { ruw_i = 0; ruw_o++; } ruw_i++; } else { ruw_i=0; ruw_o=0; rub_pista++; } } break; case 5: if(rub_reproduciendo == 1) { if(ruw_o<3) { if(ruw_i>0) { red_on(); green_off(); blue_off(); } if(ruw_i>5) { red_on(); green_on(); blue_on(); } if(ruw_i>9) { blue_on(); red_off(); green_off(); } if(ruw_i>15) { blue_off(); red_on(); green_on(); } if(ruw_i>21) { ruw_i = 0; ruw_o++; } ruw_i++; } else { ruw_i=0; ruw_o=0; rub_pista = 1; } } break; default: red_off(); green_off(); blue_off(); ruw_i=0; ruw_o=0; break; } }
void app_rgb_led_fsm(void) { static unsigned char rgb_state = 0; switch(rgb_state) { case 0: /* RESET */ /* All off */ red_off(); green_off(); blue_off(); rgb_state = 1; break; case 1: /* red on */ red_on(); green_off(); blue_off(); rgb_state = 2; break; case 2: /* green on */ red_off(); green_on(); blue_off(); rgb_state = 3; break; case 3: /* blue on */ red_off(); green_off(); blue_on(); rgb_state = 4; break; case 4: /* red + green */ red_on(); green_on(); blue_off(); rgb_state = 5; break; case 5: /* red + blue */ red_on(); green_off(); blue_on(); rgb_state = 6; break; case 6: /* green + blue */ red_off(); green_on(); blue_on(); rgb_state = 7; break; case 7: /* All on */ red_on(); green_on(); blue_on(); rgb_state = 1; break; default: /* Go to RESET */ rgb_state = 0; break; } }
void leds_off(void){ green_off(); red_off(); blue_off(); }
int main(void) { InitAll(); InitRelayPins(); BSP_LED_On(LED_GREEN); BSP_LED_On(LED_BLUE); BSP_LCD_GLASS_DisplayString((uint8_t*)"READY"); // RIGHT: 00 - 27 min: blue led on, relay 1 on // RIGHT_OVERLAP: 28 - 29 min: same + green flashing // LEFT: 30 - 57 min: green led on, relay 2 on // LEFT_OVERLAP: 58 - 59 min: same + blue flashing // BOTH_OFF: both relays off, both LEDs off, counters not active // BOTH_ON: both relays on, both LEDs on, counters not active // USER press: BOTH_OFF // left button: jump to state LEFT // right button: jump to state RIGHT // left + right button: jump to state BOTH_ON const int TIME_OVERLAP = 2 * 60; const int TIME_RIGHT = 30 * 60 - TIME_OVERLAP; const int TIME_LEFT = 15 * 60 - TIME_OVERLAP; while (1) { switch(state) { case RESET_STATE: green_off(); blue_off(); relay_1_off(); relay_2_off(); relay_3_off(); relay_4_off(); set_sec(0); state = RIGHT; break; case RIGHT: if (prev_state != RIGHT) { prev_state = RIGHT; blue_on(); green_off(); relay_1_off(); relay_2_on(); set_sec(TIME_RIGHT); } if (!sec) { state = RIGHT_OVERLAP; } break; case RIGHT_OVERLAP: if (prev_state != RIGHT_OVERLAP) { prev_state = RIGHT_OVERLAP; blue_on(); relay_1_on(); relay_2_on(); set_sec(TIME_OVERLAP); } if (sec & 1) { green_on(); } else { green_off(); } if (!sec) { state = LEFT; } break; case LEFT: if (prev_state != LEFT) { prev_state = LEFT; green_on(); blue_off(); relay_1_on(); relay_2_off(); set_sec(TIME_LEFT); } if (!sec) { state = LEFT_OVERLAP; } break; case LEFT_OVERLAP: if (prev_state != LEFT_OVERLAP) { prev_state = LEFT_OVERLAP; green_on(); relay_1_on(); relay_2_on(); set_sec(TIME_OVERLAP); } if (sec & 1) { blue_on(); } else { blue_off(); } if (!sec) { state = RIGHT; } break; case BOTH_OFF: if (prev_state != BOTH_OFF) { green_off(); blue_off(); relay_1_off(); relay_2_off(); set_sec(0); } break; case BOTH_ON: if (prev_state != BOTH_ON) { green_on(); blue_on(); relay_1_on(); relay_2_on(); set_sec(0); } break; } // Read touch buttons int buttonId = getTouchButtons(); // LEFT button if (buttonId == 0) { prev_state = RESET_STATE; state = LEFT; } // RIGHT button if (buttonId == 3) { prev_state = RESET_STATE; state = RIGHT; } } // Will never get here. return 0; }