#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
// Simula DFPlayer Mini
#define DFPlayer_RX 10
#define DFPlayer_TX 11
LiquidCrystal_I2C lcd(0x27, 16, 2); // Endereço I2C do LCD 16x2
float credito = 0;
int contador = 4;
int botao_start = 2; // Botão para iniciar reprodução de som
int botao_credito = 6; // Botão para adicionar crédito
int flag = 0;
int fita_de_leds = 3;
int saida = 4; // motor
void setup() {
Serial.begin(9600);
// Inicializa o LCD
lcd.begin(16, 2);
lcd.backlight();
// Mensagem inicial no LCD
lcd.setCursor(0, 0);
lcd.print("Coloque moeda");
delay(2000);
// Configuração dos pinos
pinMode(botao_start, INPUT_PULLUP);
pinMode(botao_credito, INPUT_PULLUP); // Configura o botão de crédito
pinMode(fita_de_leds, OUTPUT);
pinMode(saida, OUTPUT);
Serial.println("Inicializado! Simulando DFPlayer Mini.");
}
void loop() {
adicionarCredito();
tarefa2();
}
void adicionarCredito() {
// Verifica se o botão de crédito foi pressionado
if (digitalRead(botao_credito) == LOW) {
delay(200); // Debounce simples
credito += 0.25; // Adiciona R$ 0,25 a cada aperto
Serial.print("Crédito atualizado: R$ ");
Serial.println(credito);
lcd.setCursor(0, 0);
lcd.print("Credito R$: ");
lcd.print(credito);
delay(200); // Evita múltiplas leituras rápidas
}
}
void tarefa2() {
// Simulação de uso de crédito ao pressionar botão start
if (digitalRead(botao_start) == LOW && credito > 0.99) {
credito -= 1.00;
Serial.println("Tocando som 1...");
delay(12000); // Simula duração do som 1 (12 segundos)
Serial.println("Tocando som 2...");
delay(60000); // Simula duração do som 2 (1 minuto)
Serial.println("Reprodução concluída.");
}
// Atualiza o LCD com o valor do crédito
lcd.setCursor(0, 0);
lcd.print("Credito R$: ");
lcd.print(credito);
lcd.print(" "); // Limpa caracteres extras
}