Olá a todos,
Gostaria da ajuda de vocês para criação deste projeto.
Estou criando um projeto para detectar intrusos utilizando um módulo laser que é feito a leitura através de um LDR. Meu objetivo é através do monitor serial poder ativar ou desativar ele mandando alguma letra, no caso "a" para ativar e "b" para desativar.
Usei essa lógica, porém não obtive sucesso pois o if só ler apenas uma única vez o comando e volta para o início do loop principal que fica aguardando a letra novamente. Gostaria de que quando eu digitasse "a" ficasse infinitamente lá até quando eu digitar um valor "b" por exemplo, no qual esse valor iria desativar o sistema.
Eis o código:
#define pinoSensorLuz A0
#define laser 2
#define pinoBuzzer 6
#define pinVermelho 3
#define pinVerde 4
int valorLaser;
String comando = "";
void setup() {
Serial.begin(9600);
pinMode(laser, OUTPUT);
pinMode(pinoBuzzer, OUTPUT);
pinMode(pinVermelho, OUTPUT);
pinMode(pinVerde, OUTPUT);
digitalWrite(laser, HIGH);
}
void loop() {
if (Serial.available() > 0) {
comando = Serial.readString();
if (comando == "a") {
digitalWrite(laser, HIGH);
ativar();
} else if (comando == "b") {
digitalWrite(laser, LOW);
digitalWrite(pinVerde, LOW);
digitalWrite(pinoBuzzer, LOW);
digitalWrite(pinVermelho, HIGH);
}
comando = "";
}
}
void ativar() {
digitalWrite(laser, HIGH);
int valorLaser = analogRead(pinoSensorLuz);
if (valorLaser < 800) {
digitalWrite(pinoBuzzer, HIGH);
emAlerta();
} else {
digitalWrite(pinoBuzzer, LOW);
digitalWrite(pinVerde, HIGH);
}
}
void desativar() {
digitalWrite(pinoBuzzer, LOW);
digitalWrite(laser, LOW);
digitalWrite(pinVermelho, HIGH);
digitalWrite(pinVerde, LOW);
}
void emAlerta() {
digitalWrite(pinVerde, HIGH);
delay(100);
digitalWrite(pinVerde, LOW);
delay(100);
digitalWrite(pinVermelho, HIGH);
delay(100);
digitalWrite(pinVermelho, LOW);
delay(100);
}