#define sensorPin 4 // define entrada analógica pino A0
#define LedR 23
#define LedG 22
#define LedB 21
#define Buzzer 2
#define Botao 5
int sensorValue = 0; // Deve receber o valor lido da entrada analógica
float voltage; // Recebe o valor da entrada analógica convertido para tensão
byte b_Bt1Atual;
byte b_Bt1Anterior;
boolean StopBuzzer = false;
void setup()
{
Serial.begin(115200); // monitor serial - velocidade 9600 Bps
pinMode(LedR, OUTPUT); // Saída para o led vermelho
pinMode(LedG, OUTPUT); // Saída para o led Verde
pinMode(LedB, OUTPUT); // Saída para o led azul
pinMode(Buzzer, OUTPUT); // Saída para o Buzzer, usar a função tone https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/
pinMode(Botao, INPUT_PULLUP); // Entrada digital para o botão
}
void loop()
{
// Leitura do Sensor
sensorValue = analogRead(sensorPin); // leitura da entrada analógica A0
voltage = sensorValue * (3.3 / 4096); // cálculo da tensão
Serial.print("Tensão do potenciometro: "); // imprime no monitor serial
Serial.print(voltage, 3); // imprime a tensão
Serial.print(" Valor: "); // imprime no monitor serial
Serial.println(sensorValue); // imprime o valor
delay(250); // atraso de 250 milisegundos
// Controle do Led RGB
if (voltage > 2.700 && voltage <= 3.3) {
if(digitalRead(LedR) && StopBuzzer){
StopBuzzer = false; // Libera o Buzzer tocar
}
digitalWrite(LedR, LOW); // acende o Led Vermelho
digitalWrite(LedG, HIGH); // apaga o Led Verde
digitalWrite(LedB, HIGH); // apaga o Led Azul
} else if (voltage > 2.300 && voltage <= 2.700) {
digitalWrite(LedR, HIGH); // apaga o Led Vermelho
digitalWrite(LedG, LOW); // acende o Led Verde
digitalWrite(LedB, HIGH); // apaga o Led Azul
} else if (voltage >= 2.000 && voltage <= 2.300) {
digitalWrite(LedR, HIGH); // apaga o Led Vermelho
digitalWrite(LedG, HIGH); // apaga o Led Verde
digitalWrite(LedB, LOW); // acende o Led Azul
} else {
digitalWrite(LedR, LOW); // acende o Led Vermelho
digitalWrite(LedG, LOW); // acende o Led Verde
digitalWrite(LedB, LOW); // acende o Led Azul
}
// Leitura do Botão
b_Bt1Atual = 1 - digitalRead(Botao);
if (b_Bt1Atual != b_Bt1Anterior) {
if (b_Bt1Atual == 1) {
StopBuzzer = true;
}
b_Bt1Anterior = b_Bt1Atual;
}
// Toca o buzzer se o Led vermelho estiver acesso.
if (!StopBuzzer && !digitalRead(LedR) && digitalRead(LedG) && digitalRead(LedB)) {
tone(Buzzer, 262, 250); // Toca um tom de 262Hz por 0,250 segundos
}
}