#include "pico/stdlib.h"

#define LED_R_PIN 12
#define LED_G_PIN 13
#define LED_B_PIN 11

#define BTN_A_PIN 5
#define BTN_B_PIN 6
#define BTN_C_PIN 7
#define BTN_D_PIN 9

#define LED_OFF 8

void set_leds(bool blue, bool green, bool red){
  gpio_put(LED_R_PIN, red);
  gpio_put(LED_G_PIN, green);
  gpio_put(LED_B_PIN, blue);
}

void init_pin(){
  gpio_init(LED_R_PIN);
  gpio_set_dir(LED_R_PIN, GPIO_OUT);

  gpio_init(LED_G_PIN);
  gpio_set_dir(LED_G_PIN, GPIO_OUT);

  gpio_init(LED_B_PIN);
  gpio_set_dir(LED_B_PIN, GPIO_OUT);


  gpio_init(BTN_A_PIN);
  gpio_set_dir(BTN_A_PIN, GPIO_IN);
  gpio_pull_down(BTN_A_PIN);

  gpio_init(BTN_B_PIN);
  gpio_set_dir(BTN_B_PIN, GPIO_IN);
  gpio_pull_down(BTN_B_PIN);

  gpio_init(BTN_C_PIN);
  gpio_set_dir(BTN_C_PIN, GPIO_IN);
  gpio_pull_down(BTN_C_PIN);

  gpio_init(BTN_D_PIN);
  gpio_set_dir(BTN_D_PIN, GPIO_IN);
  gpio_pull_down(BTN_D_PIN);  

  gpio_init(LED_OFF);
  gpio_set_dir(LED_OFF, GPIO_IN);
  gpio_pull_down(LED_OFF);  
} 

int main(){

  uint CONT=0;
  init_pin();    

  while(true){
    if(gpio_get(BTN_A_PIN)){
      set_leds(0,1,0);//todos leds acesos
    }else if (gpio_get(BTN_B_PIN)){
      set_leds(1,0,0);//led verde aceso
    }else if (gpio_get(BTN_C_PIN)){
      set_leds(1,1,1);//led azul aceso
    }
    
    if (gpio_get(LED_OFF)){
      set_leds(0,0,0);
    sleep_ms(100);
    }

    if(gpio_get(BTN_D_PIN)){
      switch(CONT){
        case 0:
          set_leds(0,0,0);
          CONT++;
          sleep_ms(300);
          break;
        case 1:
          set_leds(0,0,1);
          CONT++;
          sleep_ms(300);
          break;
        case 2:
          set_leds(0,1,0);
          CONT++;
          sleep_ms(300);
          break;
        case 3:
          set_leds(0,1,1);
          CONT++;
          sleep_ms(300);
          break;
        case 4:
          set_leds(1,0,0);
          CONT++;
          sleep_ms(300);
          break;
        case 5:
          set_leds(1,0,1);
          CONT++;
          sleep_ms(300);
          break;
        case 6:
          set_leds(1,1,0);
          CONT++;
          sleep_ms(300);
          break;
        case 7:
          set_leds(1,1,1);
          CONT=0;
          sleep_ms(300);
          break;
        default:        
      }    

    }


    sleep_ms(100);
  }

  return 0;    

}
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT