Stap 3: Code: 1
Dit is waarschijnlijk het moeilijkste deel van dit hele project (voor mij toch). Al mijn vorige Arduino schetsen zijn vrij eenvoudig, niet time kritieke programma's. Met een klok is timing alles. Was het absoluut noodzakelijk dat de code zo soepel en snel mogelijk moet worden uitgevoerd. Elke vertraging bij het proces kon potentieel wegspelen de gehele klok.
Een van mijn vrienden aanbevolen gebruik van een interrupt-reeks voor het beheren van de timing. Op deze manier ik kan ervoor zorgen dat op elke 1/30 van een seconde zou de interrupt brand en er 1 bij optellen om het kleinste tijdsinterval, in dit geval de 1/30s van een seconde. De interrupt zou ook voorkomen dat de timing van af gegooid. Om dit te bereiken is de Timer1 op de Arduino gebruikt en geconfigureerd als een vergelijk Match-timer. Kortom, de graven van de timer tijdens elke klok cyclus van de micro-controller, en zodra het een vooraf gedefinieerde nummer heeft bereikt, het activeert de Interrupt Service Routine, of ISR. Uit te leggen hoe dit werkt valt buiten het bestek van dit instructable, maar er is een aanzienlijke hoeveelheid informatie op het web evenals talrijke instructables die dit concept zeer grondig uitleggen.
Ik heb de meest recente code bijgevoegd. Ik gebruikte een aantal van de code voor de weergave van Blair Thompson op www.justblair.co.uk