Exemplo n.º 1
0
void normal_mode() {
  if (is_led_on(RED) && counter > led_time[RED]) {
    red_off();
    if (is_led_on(YELLOW)) {
      yellow_off();
    }
    green_on();
    counter = 0;
  } else if (is_led_on(RED) && counter > (led_time[RED] - led_time[YELLOW]) && counter <= led_time[RED]) {
    yellow_on();
  } else if (is_led_on(YELLOW) && counter > led_time[YELLOW]) {
    yellow_off();
    if (is_led_on(RED)) {
      red_off();
      green_on();
    } else if (is_led_on(GREEN)) {
      green_off();
      red_on();
    }
    counter = 0;
  } else if (is_led_on(GREEN) && counter > (led_time[GREEN])) {
    green_off();
    yellow_on();
    counter = 0;
  }
}
Exemplo n.º 2
0
void set_color(COLOR c,T_UBYTE vol){
	static T_UBYTE cont=0;
	cont++;
	cont %=100;
	
	leds_off();
	if(cont % vol !=0){
		switch(c){
		case LED_RED:
			red_on();
			break;
		case LED_GREEN:
			green_on();
			break;
		case LED_BLUE:
			blue_on();
			break;
		case LED_CYAN:
			green_on();
			blue_on();
			break;
		case LED_MAGENTA:
			red_on();
			blue_on();
			break;
		case LED_YELLOW:		
			green_on();
			red_on();
			break;
		case LED_WHITE:
			red_on();
			green_on();
			blue_on();
			break;
		case LED_OFF:
			leds_off();
			break;
		}
	}else{}

}
Exemplo n.º 3
0
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();
}
Exemplo n.º 4
0
int main(){
	u8 res;
	initRCC();
	initGPIO();
	initTIM2();
	initUSART3();
	initI2C1();

	__enable_irq();                       // глобальное включение прерывания

	// I2C1_tx(0xD0,0x6B,0x00);
	// I2C1_tx(0xD0,0x1B,0xE0);
	// I2C1_tx(0xD0,0x1C,0xE0);
	read_I2C1(GY521_ADRESS,WHO_I_AM);
	// read_data_acc();
	green_on();
	while(1){
	    while(!number_of_tasks)
	        {}
	    (*buffer_of_tasks[head_of_tasks])();
	    deleteTask();
	    }
	return 0;
}
Exemplo n.º 5
0
 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;
	 }
	 
 }
Exemplo n.º 6
0
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;
	}
}
Exemplo n.º 7
0
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;
}