Stap 3: Hoe het werkt
Het voornaamste beginsel van dit project os Binair getal.
Voor elke aantal uren, minuten en seconden moet u om ze te converteren van grondtal 10 (decimaal) grondtal 2 (binary) en ze ze te coderen in segmenten van 'A naar G' in het display weergegeven.
Maar dat is zeer eenvoudig met behulp van de programmering van Arduino.
Alle gehele getallen binnen het bereik van uren (00 tot en met 23), minuten en seconden (00-59) zijn lager dan 64 en dus ze kunnen worden geregeld in de 7 segmenten.
Neem een kijkje op deze:
// A// ------ // | | // F | | B // | G | // ------ // | | // E | | C // | D | // ------// 0 // ------ // | | // 16 | | 1 // | 32 | // ------ // | | // 8 | | 2 // | 4 | // ------
U ziet de perfecte corresponce tussen: segmenten--> >--binair getal (grondtal 2)
G=32 / F=16 / E=8 / D=4 / C=2 / B=1 / A=0 32 16 8 4 2 1 0 G F E D C B A
Maar hey! Er is hier een truc!
Vergeet niet dat grondtal 2 vanaf 1 (2 kracht 0) en niet nul begint!!
Nul betekent in dit geval dat het bijbehorende segment display wordt ingesteld op uitschakelen en ik wil dat het eerste segment moet worden ingesteld op op.
Hoe kunnen we dit doen?
Neem een kijkje op naar aanleiding van verklaringen van de programmering:
if (mm == 0) { shiftOut(dataPin, clockPin, MSBFIRST, 1); } else { shiftOut(dataPin, clockPin, MSBFIRST, mm << 1); }
Ik controleer eerst of de variablle mm (minuten) nul is. Zo ja, afdwingen ik de LED moet worden ingesteld op.
Voor alle getallen hoger dan nul, ik één linkerpositie van binair getal overeen moeten komen met de juiste segment die ik nodig heb met de opdracht verschuiving hh << 1.
In het volgende voorbeeld:
Minuten = 0 dan binaire 00000000 en het zal worden ingesteld op 00000001
Minuten = 5 dan binaire is 00000101 en zal zij het één linkerpositie verschuiving naar 00001010