Schritt 4: Beispiel 2: serielle Kommunikation
Für dieses Projekt habe ich timer2 Interrupts in regelmäßigen Abständen überprüfen, gäbe es serielle Eingangsdaten, es zu lesen, und speichern Sie es in der Matrix "LedData []". Wenn Sie einen Blick auf den Code sehen Sie, dass die Hauptschleife der Skizze, was eigentlich verantwortlich ist für die Nutzung der Info in LedData, die richtigen LEDs leuchten und Kontrolle über den Status der Tasten (eine Funktion namens "shift()"). Die Interrupt-Routine ist so kurz wie möglich - nur Überprüfung für eingehende Bytes und sie entsprechend zu speichern.
Hier ist das Setup für timer2:
(CLI); //stop interrupts
timer2 Interrupt jedes 128us festlegen
TCCR2A = 0; / / gesamte TCCR2A Register auf 0 gesetzt
TCCR2B = 0; / / das gleiche gilt für TCCR2B
TCNT2 = 0; //initialize Zählerstand auf 0
Set im Vergleich Spiel registrieren für 7,8 khz-Schritten
OCR2A = 255; / / = (16 * 10 ^ 6) / (7812.5 * 8) - 1 (muss < 256)
CTC-Modus einschalten
TCCR2A | = (1 << WGM21);
CS21 Bit für 8 Vorteiler gesetzt
TCCR2B | = (1 << CS21);
Timer-Compare Interrupt zu aktivieren
TIMSK2 | = (1 << OCIE2A);
(Sei); //allow interrupts
Hier ist die komplette Arduino-Skizze:
//BUTTON TEST w/ 74HC595 and 74HC165 and serial communication //by Amanda Ghassaei //June 2012
Laden Sie den MaxMSP Patch unten (es läuft auch im Max-Runtime).