#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
// Configurações dos servos
Servo polegar, dedo1, dedo2, dedo3, antebraco;
// Configurações do display I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Variáveis globais
int acertos = 0;
int erros = 0;
void setup() {
// Configuração dos servos
polegar.attach(13);
dedo1.attach(14);
dedo2.attach(15);
dedo3.attach(16);
antebraco.attach(17);
// Configuração do buzzer
pinMode(12, OUTPUT); // Pino do buzzer
// Inicializa o display
lcd.init();
lcd.backlight();
// Mensagem inicial
lcd.setCursor(0, 0);
lcd.print("Iniciando o Jogo");
delay(2000); // Aguarda 2 segundos antes de começar
}
void loop() {
// Contagem regressiva para a jogada
for (int i = 3; i > 0; i--) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Proxima jogada:");
lcd.setCursor(0, 1);
lcd.print(i);
tone(12, 1000, 500); // Buzzer apita
delay(1000);
}
// Realiza uma jogada
int jogada = random(0, 3);
realizarJogada(jogada);
// Mostra a jogada no display
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jogada:");
switch (jogada) {
case 0:
lcd.print("Pedra");
break;
case 1:
lcd.print("Papel");
break;
case 2:
lcd.print("Tesoura");
break;
}
delay(3000); // Tempo para exibir a jogada antes da próxima
}
void realizarJogada(int jogada) {
switch (jogada) {
case 0: // Pedra
polegar.write(0);
dedo1.write(0);
dedo2.write(0);
dedo3.write(0);
antebraco.write(90);
break;
case 1: // Papel
polegar.write(90);
dedo1.write(90);
dedo2.write(90);
dedo3.write(90);
antebraco.write(90);
break;
case 2: // Tesoura
polegar.write(0);
dedo1.write(90);
dedo2.write(90);
dedo3.write(0);
antebraco.write(90);
break;
}
}