Stap 10: Firmware - deel 3: Driver operatie
De complete broncode is beschikbaar in Deze repository GitHub.
Zoals ik al eerder zei, is dit matrix-stuurprogramma eigenlijk een deel van een groter project. Als zodanig, is het circuit ingesteld om op te treden als een slaaf van de bus TWI (I2C). De huidige code zal lopen de standaard chase volgorde (een paar lachebekjes), wacht op verdere instructies van de TWI-bus. In termen van het grotere project, wordt een enkele gegevensbyte verzonden met elke bit in de byte die een quandrant van de matrix vertegenwoordigt om in te schakelen. Zodra de gegevens ontvangen, is de volgorde van de LOOP_QUADS ingeschakeld. Dit gewoon doorlopen alle mogelijke kleuren gedefinieerd in modules/macros/color_8bit.h, het weergeven van de kleuren op die ooit matrix kwadranten zijn ingeschakeld. Als geen gegevens is ontvangen na zo lang (ongeveer 10 seconden), terugkeren de matrices naar de standaard chase volgorde (een paar lachebekjes).
De hele operatie TWI wordt afgehandeld in de TWI Interrrupt service routine. Hoewel de ISR slechts één byte van gegevens verwacht, zullen het onbelangrijk gemakkelijk is te veranderen deze code voor het afhandelen van meer gegevensbytes. Doen, zou externe controle over alle aspecten van het stuurprogramma van de matrix met inbegrip van afzonderlijke LED kleuren, chase sequenties of zelfs inactieve weergave instellen!