Eine LED dimmen – Arduino Kurs Teil 5
Zwei Taster lösen im Arduino Programm einen Interrupt aus und die LED wird damit gedimmt. Die Kurve der PWM Dimmung wird dem optischen Eindruck angepaßt.
Schlagwort-Archive: Interrupt
Arduino Tutorial #4 – Zwei Taster per Interrupt einlesen
Arduino Kurs Teil 4
Zwei Taster können zwei Interrupts auslösen.
Der eine Taster-Interrupt schaltet die LED ein und der andere Taster-Interrupt schaltet die LED aus.
Arduino Tutorial #3 – Taster mit einem Interrupt einlesen
Arduino Kurs Teil 3
Hier wird der Taster per Interrupt eingelesen und die Interrupt Service Routine wird ausgeführt. Das Hauptprogramm muss also nicht ständig den Taster auslesen, sondern kann einfach durchlaufen. Der Tastendruck ruft sozusagen seine eigene Funktion auf.
Mit dem Arduino Timer Interrupt eine LED Blinkfolge ausgeben
Wenn ein Programmstatus oder ein Programmierschritt durch das mehrfaches blinken einer LED angezeigt werden soll bietet sich hierfür auch der Timer Interrupt an. Wie im vorherigen Artikel beschrieben wird der Interrupt gesetzt.
Mit Hilfe einer 8 stelligen Binärzahl kann nun das Blinkmuster festgelegt werden.
1 x Blink ist 00000001
2 x Blink ist 00000101
3 x Blink ist 00010101
Mit der Variablen folgeindex werden die Bits bei jeden Interrupt Aufruf nacheinander verglichen und die LED wird entsprechend geschaltet. Weiterlesen
Mit dem Timer Interrupt des Arduino die LED blinken lassen
Wenn im Programm keine Zeit ist eine Status LED blinken zu lassen, dann kann das ein Interrupt machen.
Er werden die Interrupt Register gesetzt, der Prescaler gesetzt und das Vergleichsregister eingestellt.
In meinem Beispiel ist der Prescaler auf 256 eingestellt. Damit wird das Vergleichsregister folgendermaßen berechnet.
Taktfrequenz / Prescaler ergibt einen Aufruf des Interrupt pro Sekunde.
Soll eine LED einmal die Sekunde blinken, dann ist sie 1/2 Sekunde aus und dann 1/2 Sekunde an. Das ergibt einen Wert von 16.000.000 / 256 / 2 = 31250 Weiterlesen
3 Tasten: Einen Wert einstellen und im EEPROM ablegen
Um einen Kalibrationswert oder ähnliches einzustellen und im EEPROM abzulegen kann man 3 Tasten nehmen.
Die erste Taste unterbricht das Programm per Interrupt und geht in das Menu.
Die zwei anderen Tasten verändern den Wert. Eine Taste für kleiner und die andere für größer.
Danach verlässt die Interrupt Taste das Menu wieder und der Wert wird im EEPROM abgelegt. Weiterlesen
Eine Taste per Interrupt einlesen und entprellen
Ein Taster an speziellen Anschlüssen kann per Interrupt das laufende Programm anhalten und sofort ein Unterprogramm per Interrupt ausführen.
Die Arduino Uno und Arduino Nano haben 2 solche Interrupt Pins
Pin 2 für Interrupt 0
Pin 3 für Interrupt 1
Für andere Arduino Versionen gibt es hier die Beschreibung.
Wenn z.B. der Pin2 mit digitalWrite(2, HIGH) über den internen Pull up Widerstand auf 5V gelegt wird und als INPUT definiert wird, ist nur noch ein Schalter oder Taster gegen Masse notwendig. Weiterlesen
Ein Rechteck Signal mit einstellbarer Frequenz ausgeben
Nachdem ich nun die Obergrenze des Rechtecksignals getestet habe, will ich mir jetzt mal die unteren Frequenzen ansehen. Da bieten sich die delay(ms) und delayMicroseconds(us) Funktionen an.
Ein Prozessortakt dauert bei 16 MHz Takt 62,5 Nano Sekunden. Meine while schleife mit den nops und Portausgaben benötigt 6 Takte. delayMicroseconds() lässt sich in 1 Mikrosekunden Stufen einstellen bis hin zu 16383, was hier einer Frequenz von ca. 31 Hz entspricht. Weiterlesen