Stap 10: Hoe werkt de code?
DE TEMPERATUUR IN HET VOLGENDE VOORBEELD IS 63
Het eerste dat moet gebeuren is dat we nodig hebben om temperatuur in twee afzonderlijke cijfers. Dit is eigenlijk makkelijker dan je zou denken.
digit10s = int(temp / 10);
digit1s = int (temp - (digit10s * 10));
Daarmee kunnen wij de twee cijfers scheiden. Laat pakken eerste. digit10s is gelijk aan de temperatuur gedeeld door 10. Onze voorbeeld-temp is 63, dus 63 / 10 = 6. Digit10s is nu gelijk aan 6.
Nu voor de 1s cijfer. digit1s is gelijk aan de temp - digit10s * 10. Dus als onze temp 63 was, we aftrekken (digit10s * 10 = 60) van temp waardoor we 3.
digit10s was 6, dan we het vermenigvuldigd met 10, waardoor we 60, dan kunnen we aftrekken van 60 uit temp (63). Dat geeft ons vervolgens de 3. Wij stel digit1s = 3.
En dat is hoe de cijfers worden afgebroken!
Onze volgende beetje van code is gewoon een beetje ingewikkelder.
Dit is onze belangrijkste codeblok omdat het is wat maakt de LEDs flash van de temperatuur.
terwijl (digit10s! = 0) //do een while lus terwijl digit10s is niet gelijk aan 0
{
analogWrite (LED10, 75);
delay(time);
analogWrite (LED10, 0);
delay(time);
digit10s--; decrement digit10s door 1
} / / einde van de while verklaring
delay(1000);
Het eerste wat opvalt is dat we een tijdje hebben loop en wat dit betekent is dat, zolang de voorwaarde wordt voldaan, de code zal over en voorbij lopen.
Nu welke voorwaarde?
terwijl (digit10s! = 0) *** dit zegt het blok hieronder uitvoeren zolang digit10s niet gelijk aan 0 is.
Laten we in digit10s. Digit10s is de 10 cijfers van de temperatuur. Door 10 om ons de 10 cijfers doken we de temperatuur. Zo zeggen die het is 63 graden buiten. Het cijfer 10 's (digit10s) is gelijk aan 6.
Nu hoe dit flash de LEDs het juiste aantal keren? Nou, het te zeggen, "digit10s is niet gelijk is 0, (Onthoud, het is nu gelijk aan 6) zo in werking stellen het blok hieronder. Het eerste ding is het draait de LED op voor 1 seconde dan uitgeschakeld. Dan komen we bij dit
digit10s--; Hier gebruiken we de '--' operatie en wat dat doet is het neemt uit 1 van de variabele, telkens als het wordt doorgegeven. Dus dat betekent dat als digit10s gelijk is aan 6 was, is het nu gelijk is aan 5. Nu is 5 nog steeds niet gelijk aan 0, zodat we het blok opnieuw uitvoeren. Het blok opnieuw uit te voeren schakelt de LED in en uit nog een keer en dan komen we ook bij digit10s--; opnieuw. Die digit10s verlagen door één opnieuw zo nu digit10s is gelijk aan 4. Dit blok is 6 keer (die knippert de LED 6 keer) uitvoeren. Waarom 6? Omdat digit10s gelijk aan 6 was, weet je nog? Nu, als we lopen de digit10s--; 6 keer, trekt dat 6 van digit10s. Dat laat de digit10s gelijk is aan 0.
Maar wat houdt het blok na het gegaan door 6 keer? Nou, als we terugkijken zullen we zien de bewerking wordt getest.
terwijl (digit10s! = 0) / / terwijl digit10s niet is gelijk aan 0, voer de onderstaande code over en voorbij.
Het te zeggen het blok over en voorbij lopen, terwijl digit10s niet is gelijk aan nul. Maar nu digit10s IS gelijk aan 0! Dus dat blok wordt gestopt en de Arduino verplaatst naar het volgende blok van code.