Stap 4: Toelichting op het algoritme
Elke kolom van de matrix LED geeft één cijfer. Scheiden. de uren, minuten en seconden in twee afzonderlijke cijfers is triviaal...
- Het eerste cijfer isoleren door de uren met een geheel getal delen door 10 (geen rest).
- Krijgen de tweede met module divisie (rest alleen) door 10.
Wij verlichten van een kolom LED(s) overeenstemmen met binaire representatie van het juiste cijfer. Om dit te doen, wij de functie van de bibliotheek van de ledcontrol.h setRow() die drie argumenten--
- Matrix-nummer (de bibliotheek verwerkt tot 8 per exemplaar). Telling begint bij 0 en dat is het nummer dat wordt gebruikt in deze schets, zoals we hebben alleen een matrix.
- Het nummer van de kolom (geteld vanaf de linker, genummerd 0-7). Zoals gebruikt, kolommen 0 en 1 komen overeen met de de eerste en tweede cijfers voor het uur, respectievelijk.
- Byte die beschrijft, boven naar beneden en de LEDs inschakelen (1 = aan).
De één uur/minuut/seconde cijfers worden geretourneerd als decimale integerwaarden (d.w.z. 0-9). Zij moeten worden omgezet ("cast" als, in programmering taalgebruik) de vereiste (binair) bytewaarden met behulp van de functie byte().
SetRow(), op mijn matrix, vult LEDs in overeenstemming met de input/output pinnen, maar het minste significante beetje ("onder") is dichter aan de pennen--noem ik het ondersteboven gemonteerd. (Probeer het met uw eigen matrix LED). Merk op dat u de volgorde omkeren door bitsgewijze wiskunde moeten zou om uw LED matrix rechterkant opstapelen, en de SetColumn functie gebruiken indien u wenst te mounten het zijwaarts.