#include <ESP32Servo.h>
#define servo1 15
Servo servo;
void loop_servo()
{
for(int i = 0; i <= 180; i++)
{
servo.write(i);
Serial.println(i);
delay(10);
}
for(int j = 180; j >= 0; j--)
{
servo.write(j);
Serial.println(j);
delay(10);
}
}
#define botao1 5
int passo = 15;
int angulo = 0;
bool subindo = true;
void servo_botao1()
{
if(digitalRead(botao1) == LOW)
{
if(subindo == true)
{
angulo = angulo + passo;
if(angulo >= 180)
{
subindo = false;
}
}
else if(!subindo)
{
angulo = angulo - passo;
if(angulo <= 0)
{
subindo = true;
}
}
servo.write(angulo);
Serial.printf("posição = %d\n", angulo);
delay(300);
}
}
/****************************
**** TRECHO PARA OS LEDS ***
****************************/
#define red 32
#define blue 25
#define green 26
void leds(bool r, bool g, bool b)
{
digitalWrite(red, r);
digitalWrite(green, g);
digitalWrite(blue, b);
}
/********************************
*** TRECHODA LÒGICA PRINCIPAL ***
*********************************/
int contador = 0;
int max_casos = 7;
void casos()
{
switch(contador)
{
case 0: leds(0,0,0); break;
case 1: leds(1,0,0); break;
case 2: leds(0,1,0); break;
case 3: leds(0,0,1); break;
case 4: leds(1,1,0); break;
case 5: leds(0,1,1); break;
case 6: leds(1,0,1); break;
case 7: leds(1,1,1); break;
default:
Serial.println("Caso impossível!");
break;
}
}
#define botao2 18
void logica_botao2()
{
if (digitalRead(botao2) == LOW)
{
contador++;
contador = contador % (max_casos + 1);
Serial.printf("estado = %d\n", contador);
casos();
delay(300); // debounce simples
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32-S2!");
//servo
servo.attach(servo1);
servo.write(0);
pinMode(botao1, INPUT_PULLUP);
pinMode(botao2, INPUT_PULLUP);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
}
void loop() {
servo_botao1();
logica_botao2();
//delay(10); // this speeds up the simulation
}