Stap 7: Een andere stap dichter bij het samenstellen van het allemaal
http://www.Arduino.CC/en/Reference/AttachInterrupt
Voordat we in het lezen van de RTC en parseren van de gegevens, gewoon laten de gauge teek weer zoals in stap 4, maar deze keer met behulp van de blokgolf van de RTC en een interrupt. U zult opmerken in het schema dat ik Toon een pull up weerstand op pin 2. Dit is vereist door de RTC naar de uitgang van de blokgolf 1 Hz (u leest het gegevensblad recht? :^) maar in het circuit in op de foto ontbreekt. Dit is omdat de invoer pinnen op de arduino hebben gebouwd in pull-ups, maar je moet hen in staat stellen. Door het schrijven van een hoge waarde aan op pin 2, is de interne pull up ingeschakeld voor dat de PIN-code en u hoeft te gebruiken een externe. Lees de opmerkingen in de code om te zien van de opdracht die dit doet.
Teek routine met behulp van een interrupt getriggerd door de blokgolf van de RTC DS3231
#define pwmpin 5
byte pwmval;
VOID Setup
{
pwmval = 0; initialiseren
Serial.begin(9600); uitgang voor seriële inschakelen
digitalWrite(2,HIGH); Schakel interne pull up op pin 2. Dit ondervangt de behoefte aan de externe pull up weerstand getoond in het schema
attachInterrupt (0, onderbroken, stijgt); interrupt 0 de functie 'onderbroken' wanneer pin twee een stijgende spanning ziet koppelen
}
void loop {}
; stuff hier toevoegen als u wilt
}
VOID interrupted() {//this is de functie aangeroepen wanneer pin 2 een stijgende spanning ziet
Serial.println ("Interrupt ontdekt"); afdrukken naar seriële terminal
pwmval += 4; _ / / verhogen de waarde van de pwm door 4 graven
Als (pwmval > 240) {//set de pwmvalue terug naar nul als het groter is dan 240
pwmval = 0;
}
updateGauge(); Bel de updatefunctie gauge
}
ongeldig updateGauge() {}
analogWrite (pwmpin, pwmval); uitgang van de pwmvalue tot en met pin 5
}