#define PIR 27
#define LAMPADA 32
int estadoPIR = 0;
int ultimoEstado = 0;
int contador = 0;
bool lampadaLigada = false;
unsigned long ultimoTempo = 0;
int intervalo = 3000;
String comando = "";
// =========================
// 🔌 FUNÇÕES DA LÂMPADA
// =========================
void ligarLampada() {
digitalWrite(LAMPADA, HIGH); // relé ativo em LOW
lampadaLigada = true;
}
void desligarLampada() {
digitalWrite(LAMPADA, LOW); // relé ativo em LOW
lampadaLigada = false;
}
void setup() {
Serial.begin(115200);
pinMode(PIR, INPUT);
pinMode(LAMPADA, OUTPUT);
desligarLampada(); // começa desligada
Serial.println("Sistema iniciado!");
Serial.println("Digite: acender ou apagar");
}
void loop() {
// =========================
// 📟 CONTROLE PELO SERIAL
// =========================
if (Serial.available()) {
comando = Serial.readStringUntil('\n');
comando.trim();
comando.toLowerCase();
if (comando == "acender") {
ligarLampada();
Serial.println("Lâmpada ligada manualmente");
}
else if (comando == "apagar") {
desligarLampada();
Serial.println("Lâmpada desligada manualmente");
}
else {
Serial.println("Comando inválido");
}
}
// =========================
// 👁️ SENSOR PIR
// =========================
estadoPIR = digitalRead(PIR);
if (estadoPIR == HIGH && ultimoEstado == LOW) {
if (millis() - ultimoTempo > intervalo) {
contador++;
// alterna estado usando funções
if (lampadaLigada) {
desligarLampada();
} else {
ligarLampada();
}
Serial.print("Pessoa passou, ");
Serial.print(contador);
Serial.println(" pessoas passaram por aqui");
ultimoTempo = millis();
}
}
ultimoEstado = estadoPIR;
}