#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"

const int BTN_0 = 7;
const int LED_0 = 3;

const int STEP_0 = 27;
const int STEP_1 = 26;
const int STEP_2 = 22;
const int STEP_3 = 21;

const int STEP[] = {STEP_0, STEP_1, STEP_2, STEP_3};

void step_rotate (int step) {
  int s = 0;
  for (int i = 0; i < step ; i++){
    
    if (s > 3)
      s = 0;

    for (int j = 0; j <= 3; j++)
      gpio_put(STEP[j], 0);
   
    gpio_put(STEP[s++], 1);
    sleep_ms(20);
  }
}

int main() {

  gpio_init(BTN_0);
  gpio_init(LED_0);
  gpio_init(STEP_0);
  gpio_init(STEP_1);  
  gpio_init(STEP_2);
  gpio_init(STEP_3);

  gpio_set_dir(BTN_0, GPIO_IN);
  gpio_pull_up(BTN_0);

  gpio_set_dir(LED_0, GPIO_OUT);
  gpio_set_dir(STEP_0, GPIO_OUT);
  gpio_set_dir(STEP_1, GPIO_OUT);  
  gpio_set_dir(STEP_2, GPIO_OUT);
  gpio_set_dir(STEP_3, GPIO_OUT);

  stdio_init_all();
  
  while (true) {
    sleep_ms(100);   
    if (!gpio_get(BTN_0) != 0) {
      printf("roda viva roda gigante \n");

      gpio_put(LED_0, 1);
      step_rotate(180);
      gpio_put(LED_0, 0);
    } 
  }
}