Resistance styrd larm (4 / 13 steg)
Steg 4: Microcontroller kod
Här är några exempel på kod som du kan använda för att starta projektet.
Du kan antingen kopiera och klistra in den i en ny skiss eller du kan ladda ner den bifogade filen.
Sedan ladda upp den till din styrelse.
int alarmPin = 2; Piezo summern ansluten till digital stift 2 int motionSensorPin = 13. Rörelsesensor ansluten till digital stift 13 int resistanceSensorPin = 5; Mittstiftet av motstånd ansluten till analot stift 5
int sensorHoldTime = 2000. Som motstånd måste vara inom intervallet att aktivera larm int resistanceSetValue = 512; Inställning för motstånd värde int resistanceSensorValue = 0; Ingångsmotstånd läsa int motionSensorState = låg; Lagra om motion är dected int armState = låg; Är larmet beväpnade int triggerState = låg; Har larmet utlöst osignerade långa currentTime = 0; nuvarande tid int fördröjningstid = 10000; Fördröjning mellan upptäcka rörelse och larm osignerade långa activateTime = 0; butiker-tiden som larmet utlöses
void setup() {pinMode (alarmPin, produktionen); / / anger det digitala stiftet 2 som output pinMode (motionSensorPin, ingång); / / sätter det digitala stiftet 13 som ingående Serial.begin(9600);}
void loop() {currentTime = millis(); resistanceSensorValue = analogRead(resistanceSensorPin); / / läser motstånd värde
om (abs (resistanceSensorValue - resistanceSetValue) < 10) / / om motstånd i målintervallet, aktivera larm {delay(sensorHoldTime); resistanceSensorValue = analogRead(resistanceSensorPin); om (abs (resistanceSensorValue - resistanceSetValue) < 10) {armState =! armState; / / växlar väpnade staten triggerState = låg;
IF(armState == High) / / räkna ner dröjsmål efter beväpna larm {Serial.println(); Serial.println("Arming");
för (int jag = 10; Jag > 0; i--) {Serial.println(i); delay(1000);} Serial.println("Armed"); }
IF(armState == low) / / avväpna larm med fördröjning {Serial.println(); Serial.println("disarming"); Delay(5000); } } }
motionSensorState = digitalRead(motionSensorPin); Läs resultatet av rörelsesensor
om (armState == hög & & motionSensorState == hög) / / om rörelse detekteras, och systemet är beväpnad {om (triggerState == låg) {digitalWrite (alarmPin, hög); //notification pip att påminna dig att avaktivera larm delay(100); digitalWrite (alarmPin, låg); triggerState = hög; activateTime = currentTime; Serial.println("triggered"); Serial.println ("alarmet kommer att ljuda i 10 sekunder"); } }
om (triggerState == hög & & (currentTime > activateTime + fördröjningstid)) //sound larm om det inte är stängt i tid {Serial.println("Alarm") digitalWrite (alarmPin, hög); delay(500); digitalWrite (alarmPin, låg); delay(500);}
}