Paso 4: Microcontrolador código
Aquí está algún código de ejemplo que puede utilizar para iniciar el proyecto.
Puede copiar y pegar en un dibujo nuevo o puede descargar el archivo adjunto.
Luego subirlo a la placa.
int alarmPin = 2; Zumbador piezoeléctrico conectado al pin digital 2 int motionSensorPin = 13; Sensor de movimiento conectado al pin digital 13 int resistanceSensorPin = 5; Pasador central de resistencias conectado al pin 5 de analot
int sensorHoldTime = 2000; Tiempo que la resistencia debe ser dentro de gama para activar la alarma int resistanceSetValue = 512; Ajuste de resistencia valor int resistanceSensorValue = 0; Resistencia de entrada leer int motionSensorState = bajo; Almacenar si el movimiento es dected int armState = bajo; Es la alarma armado int triggerState = bajo; Lleva la alarma disparada currentTime larga sin signo = 0; actual tiempo int delayTime = 10000; Retardo entre la detección de movimiento y alarma activateTime larga sin signo = 0; almacena el tiempo que se activa la alarma
void setup() {pinMode (alarmPin, salida); / / pone el pin digital 2 como salida pinMode (motionSensorPin, entrada); / / pone el pin digital 13 como entrada Serial.begin(9600);}
void loop() {currentTime = millis(); resistanceSensorValue = analogRead(resistanceSensorPin); / / lee el valor de la resistencia
Si (abs (resistanceSensorValue - resistanceSetValue) < 10) / / si la resistencia en el rango objetivo, activar la alarma {delay(sensorHoldTime); resistanceSensorValue = analogRead(resistanceSensorPin); if (abs (resistanceSensorValue - resistanceSetValue) < 10) {armState =! armState; / / conmuta estado armados triggerState = bajo;
if(armState == High) / / cuenta regresiva de retraso después de la activación de la alarma {Serial.println(); Serial.println("Arming");
para (int i = 10; i > 0; i--) {Serial.println(i); delay(1000);} Serial.println("Armed"); }
if(armState == Low) / / desactivar la alarma con retardo {Serial.println(); Serial.println("disarming"); Delay(5000); } } }
motionSensorState = digitalRead(motionSensorPin); leer la salida del sensor de movimiento
Si (armState == HIGH & & motionSensorState == HIGH) / / si se detecta movimiento, y está armado el sistema {si (triggerState == baja) {digitalWrite (alarmPin, HIGH); //notification bip para recordarle que debe desactivar la alarma delay(100); digitalWrite (alarmPin, LOW); triggerState = alto; activateTime = currentTime; Serial.println("Triggered"); Serial.println ("sonará en 10 segundos"); } }
Si (triggerState == alto & & (currentTime > activateTime + delayTime)) //sound alarma si no se desactiva en el tiempo {Serial.println("Alarm"); digitalWrite (alarmPin, HIGH); delay(500); digitalWrite (alarmPin, LOW); delay(500);}
}