Étape 4: Microcontrôleur Code
Voici un exemple de code que vous pouvez utiliser pour démarrer le projet.
Vous pouvez copier et coller dans une nouvelle esquisse ou vous pouvez télécharger le fichier joint.
Ensuite, transférez-le sur votre planche.
int alarmPin = 2 ; Buzzer piezo relié à la broche numérique 2 int motionSensorPin = 13 ; Détecteur de mouvement connecté à la broche numérique 13 int resistanceSensorPin = 5 ; Goupille de centrage des résistances connectées sur la broche 5 d’analot
int sensorHoldTime = 2000 ; Temps que la résistance doit être comprise pour activer l’alarme int resistanceSetValue = 512 ; Réglage de la résistance valeur int resistanceSensorValue = 0 ; Résistance d’entrée lecture int motionSensorState = faible ; Conserver si le mouvement est dected int armState = faible ; Est l’alarme armé int triggerState = faible ; L’alarme est déclenchée currentTime long non signé = 0 ; cours temps int /Delay = 10000 ; Le délai entre la détection de mouvement et alarme unsigned long activateTime = 0 ; stocke le temps que l’alarme est déclenchée
void setup() {pinMode (alarmPin, sortie); / / définit la broche numérique 2 comme sortie pinMode (motionSensorPin, INPUT); / / définit la broche numérique 13 sous la forme d’entrée Serial.begin(9600);}
void loop() {currentTime = millis() ; resistanceSensorValue = analogRead(resistanceSensorPin); / / lit la valeur de résistance
Si (abs (resistanceSensorValue - resistanceSetValue) < 10) / / si la résistance dans la plage cible, activez l’alarme {delay(sensorHoldTime) ; resistanceSensorValue = analogRead(resistanceSensorPin) ; if (abs (resistanceSensorValue - resistanceSetValue) < 10) {armState =! armState; / / permet d’alterner état armé triggerState = faible ;
if(armState == High) / / compte à rebours délai suivant l’armement de l’alarme {Serial.println() ; Serial.println("Arming") ;
pour (int i = 10 ; j’ai > 0; i--) {Serial.println(i) ; delay(1000);} Serial.println("Armed") ; }
if(armState == Low) / / désactiver l’alarme avec retard {Serial.println() ; Serial.println("Disarming") ; Delay(5000) ; } } }
motionSensorState = digitalRead(motionSensorPin) ; lire la sortie du détecteur de mouvement
Si (armState == HIGH & & motionSensorState == haut) / / si le mouvement est détecté, et le système est armé {si (triggerState == faible) {digitalWrite (alarmPin, HIGH); //notification bip pour vous rappeler de désactiver l’alarme delay(100) ; digitalWrite (alarmPin, LOW); triggerState = élevé ; activateTime = currentTime ; Serial.println("Triggered") ; Serial.println ("alarme sonore en 10 secondes") ; } }
Si (triggerState == HIGH & & (heureactuelle > activateTime + delayTime)) //sound alarme si elle n’est pas désactivé dans le temps {Serial.println("Alarm") digitalWrite (alarmPin, HIGH); delay(500) ; digitalWrite (alarmPin, LOW); delay(500);}
}