Stap 4: Sketch: uitzetten en interrupt gebaseerd wakker (lager energieverbruik)
Als u wilt opslaan power/batterij verbruik, zou het zinvol zijn om gebracht arduino laagste vermogen verbruiksmodus of de slaapstand totdat PIR sensor detecteert de beweging. We zullen dit bereiken met behulp van hardware-interrupt en Power Down Mode van arduino board ATMEGA328P microcontroller. Bovendien zullen wij analoog naar digitaal converter (ADC) onbruikbaar maken omdat we niet een ADC hoeven.
"De Power-down modus slaat de inhoud van het register, maar bevriest de Oscillator, alle othe r chip functies uit te schakelen tot de nex t onderbreken of hardware reset."
In deze schets, gebruiken we invoer pin D2 of Interrupt 0 welke uitgang van PIR sensor is aangesloten.
Aangezien PIR detector zelf staat timer heeft, hoeven we niet elke timer van de arduino te houden uitgang pins D13 op vaste duur. De ON-tijd fysiek instelbaar met behulp van Tx potentiometer, zoals in de vorige stap.
-Arduino op eerste power ON, LED knippert op pin 13 voor een minuut, dit is alleen voor visuele indicatie van de opwarmperiode door PIR sensor nodig om te stabiliseren tot kamertemperatuur.
for (int i = 1; ik < = 120; i ++) {}
digitalWrite (LedPin, hoge);
delay(100);
digitalWrite (LedPin, laag); delay(100); }
-De Arduino wordt gehouden in de slaapstand totdat D2 pin laag is.
In de functie Hibernate();
We zullen alle pinnen aan INPUT behalve pin 13 waarmee we onze LED of relay hebben verbonden.
for (int i = 0; ik < 20; i ++) {}
Als (ik! = 13)
pinMode (i, ingang);}
en arduino slaapmodus instelt op de laagste power verbruiksmodus
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
in- en uitschakelen van ADCs
ADCSRA & = ~ (1 << 7);
in- en uitschakelen van Brown out detector gebruikt om te controleren van de ingangsspanning niveau
sleep_bod_disable();
Wij hechten interrupt 0 van pin 2 in analyse verandering in Braziliaanse deelstaat signaal op pin 2
attachInterrupt (PIRsensorInterrupt, wakeUpNow, verandering);
Ten slotte Sleep functie aangeroepen met behulp van
SLEEP_MODE();
-Wanneer de PIR sensor detecteert beweging, output PIR sensor status verandert van laag naar hoog. Deze stijgende rand signaal wordt geplukt door interrupt 0, arduino ontwaakt uit de slaapstand, interrupts tijdelijk worden uitgeschakeld en bijgevolg pin D13 gaat hoog.
Plaats eens, tijd is verstreken, PIR uitgang weer terug terug naar LOW van hoog, dit dalende rand signaal roept een andere interrupt, slaapstand arduino nogmaals.