Stap 7: Programmeren van de Arduino
Met de elektronica en geluid alle ingesteld, ik heb de software geüpload naar de arduino. Hier is hieronder de volledige code die ik gebruikt.
Het boos hoofd zal klagen over lawaai en verkeer (algemene ravage) op elk gewenst moment de PIR sensor wordt geactiveerd. Ik een chill tijd omdat het vaak anders geprogrammeerd.
De hardnekkige hoofdje zal ook boos schreeuwen als enig licht de slaap van de Heilige verstoort. De lichte sensor detecteert lichtniveaus van 0 tot 256 niveaus, zodat ik getest foutopsporing de lichtniveaus om in te stellen van de juiste drempel voor klachten.
Ik heb 5 geluiden over ravage en nog eens 5 over verlichting, dus de arme dader viel door dat boos beest zal weet waarom het ontschorsen.
/**********************************
Portas Digitais 2, 3, 4, 6 Analogica A0
Fonte 9V
***********************************/
#include
int resetPin = 2; Het pin-nummer van de resetpin.
int clockPin = 3; Het pin-nummer van de pin klok.
int dataPin = 4; Het pin-nummer van de pin van de gegevens.
int busyPin = 5; Het pin-nummer van de drukke pin.
int detectou_Atividade = 0; Indica PIR 800 se detectou atividade
int detectou_Luz = 0; Indica se luz foi detectada
int modo_Busca_ON = 0;
int valor_Luz = 100;
int som_Movimento = 0; de 0 a 4
int som_Luz = 5; de 5 a 9
lange agora_mili, fim_mili;
lange hora_final_ping, hora_atual_ping;
int intervalo_min_ping = 100;
#define pin_Presenca 6
#define pin_LeituraLuz 0
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);
VOID Setup {}
Ativa Serial para Debug
Serial.begin(9600);
Reseta modulo de som WTV020
wtv020sd16p.reset();
Inicia PIR800 - presenca
pinMode (pin_Presenca, INPUT);
int calibrationTime = 20;
de sensor enige tijd te geven om te kalibreren
Serial.Print ("Calibrando sensor de presença");
for (int i = 0; ik < calibrationTime; i ++) {}
Serial.Print(".");
delay(1000); }
Serial.println ("done");
Serial.println ("SENSOR actief");
delay(50);
} //Setup
void loop {}
Checa sensor presenca se houver movimento ativa deteccao
int valPresenca;
Als (modo_Busca_ON == 0) {valPresenca = digitalRead(pin_Presenca); delay(50);}
Als ((valPresenca == LOW) & & (modo_Busca_ON == 0)) {delay(450);}
Als ((valPresenca == HIGH) & & (modo_Busca_ON == 0)) {}
detectou_Atividade = 1;
modo_Busca_ON = 1; valPresenca = laag;
Serial.println ("Detectou Atividade!"); }
Teste luz int leituraLuz;
leituraLuz = analogRead(pin_LeituraLuz);
Serial.Print ("LUZ--->"); Serial.println(leituraLuz);
Als ((leituraLuz > valor_Luz) & & (modo_Busca_ON == 0))
{/ / Acenderam een Luz! detectou_Luz = 1; modo_Busca_ON = 1;}
atualiza_estados();
} / / Main Loop
ongeldig atualiza_estados() {}
Atualiza estados de todos os componentes
Als ((modo_Busca_ON == 1) & & (detectou_Atividade == 1)) {}
Achou alguem se mexendo
TOCA som de algu ben se mexendo
Serial.println ("Vai tocar musica 0");
wtv020sd16p.playVoice(som_Movimento);
Als (som_Movimento == 4) {som_Movimento = 0;} else {som_Movimento ++;}
delay(8000);
Serial.Print ("Acabou Musica - Movimento -");
Serial.println(som_Movimento);
modo_Busca_ON = 0;
detectou_Atividade = 0; }
Als ((modo_Busca_ON == 1) & & (detectou_Luz == 1)) {}
Acenderam een luz
Serial.println ("Vai tocar musica 0 por conta da luz");
wtv020sd16p.playVoice(som_Luz);
Als (som_Luz == 9) {som_Luz = 5;} else {som_Luz ++;}
delay(8000);
Serial.Print ("Acabou Musica - luz -");
Serial.println(som_Luz);
modo_Busca_ON = 0;
detectou_Luz = 0;
}
} / / Atualiza Estados
}