#include <stdio.h>
#include "pico/stdlib.h"
#define sm_0 14
#define sm_1 13
#define sm_2 12
#define sm_3 11
#define btn_1 19 // horario
#define btn_2 27 // anti
uint8_t sm_pin[4] = {sm_0, sm_1, sm_2, sm_3};
//sequência monofásica (duas bobinas ligadas)
bool sm_monofasico [4][4]={
{1,0,0,0},
{0,1,0,0},
{0,0,1,0},
{0,0,0,1},
};
int main() {
stdio_init_all();
//inicializa pinos do motor
for (uint8_t i = 0; i < 4; i++){
gpio_init(sm_pin[i]);
gpio_set_dir(sm_pin[i], GPIO_OUT);
gpio_put(sm_pin[i], 0);
}
// inicializa botões
gpio_init(btn_1);
gpio_set_dir(btn_1, GPIO_IN);
gpio_pull_up(btn_1);
gpio_init(btn_2);
gpio_set_dir(btn_2, GPIO_IN);
gpio_pull_up(btn_2);
while (true){
bool valor_btn_1 = !gpio_get(btn_1);
bool valor_btn_2 = !gpio_get(btn_2);
if(valor_btn_1 && !valor_btn_2){
// sentido horário
for (uint8_t step = 0; step < 4; step++) {
for (uint8_t i = 0; i < 4; i++) {
gpio_put(sm_pin[i], sm_monofasico[step][i]);
}
sleep_ms(100);
}
}
else if (valor_btn_2 && !valor_btn_1){
//sentido anti-horário
for(int8_t step = 3; step>=0; step--){
for(uint8_t i =0; i<4; i++){
gpio_put(sm_pin[i], sm_monofasico[step][i]);
}
sleep_ms(100);
}
} else{
//nenhum botão - desliga bobinas
for(uint8_t i =0; i<4; i++){
gpio_put(sm_pin[i],0);
}
}
}
}