DIY miniatyr termometer (10 / 11 steg)
Steg 10: Hur fungerar koden?
EXEMPEL TEMPERATUR ÄR 63
Det första som måste ske är att vi måste få temperatur in i två separata siffror. Detta är faktiskt enklare än du kanske tror.
digit10s = int(temp / 10);
digit1s = int (temp - (digit10s * 10));
Med detta kan vi separera de två siffrorna. Kan ta itu med först. digit10s är lika med temperaturen divideras med 10. Våra exempel temp är 63, så 63 / 10 = 6. Nu är digit10s lika med 6.
Nu för 1s siffra. digit1s är lika med temp - digit10s * 10. Så om våra temp var 63, vi subtrahera (digit10s * 10 = 60) från temp som ger oss 3.
digit10s var 6, då vi multiplicerat med det 10, vilket ger oss 60, då vi subtrahera 60 från temp (63). Det ger oss sedan 3. Vi satt sedan digit1s = 3.
Och det är hur siffrorna bryts ner!
Vår nästa bit kod är bara lite mer komplicerat.
Detta är vår huvudsakliga block av kod eftersom det är det som gör lysdioderna flash temperaturen.
medan (digit10s! = 0) //do ett tag loop medan digit10s inte är lika med 0
{
analogWrite (LED10, 75);
Delay(Time);
analogWrite (LED10, 0);
Delay(Time);
digit10s--; minska digit10s med 1
} / / end av while uttalande
Delay(1000);
Det första att lägga märke till är att vi har ett tag loop och vad detta innebär är att så länge villkoret är uppfyllt, koden kommer att köras om och om igen.
Nu vilket skick?
medan (digit10s! = 0) *** Detta säger köra blocket nedan så länge digit10s inte är lika med 0.
Låt oss titta in i digit10s. Digit10s är den 10-talet siffran från temperaturen. Vi dök temperatur av 10 att ge oss den 10-talet siffran. Så att säga är det 63 grader utanför. Den 10-talet siffran (digit10s) är lika med 6.
Hur detta blinkar lysdioderna rätt mängd gånger? Tja, det säger, "digit10s är inte lika 0, (kom ihåg, det är lika med 6 nu) så kör blocket nedan. Första är det vänder LED på under 1 sekund sedan stängs den av. Sedan kommer vi till detta
digit10s--; Här använder vi den "--" drift och vad som gör är det tar bort 1 från variabeln varje gång det skickas. Så det betyder att om digit10s var lika med 6, är det nu lika med 5. Nu är 5 fortfarande inte lika med 0, så vi kör blocket igen. Kör blocket igen tänds lysdioden och släcks en gång och sedan kommer vi också till digit10s--; igen. Att minska digit10s av en igen så nu digit10s är lika med 4. Detta block är köra 6 gånger (som blinkar LED 6 gånger). Varför 6? Eftersom digit10s var lika med 6, minns? Nu, om vi kör digit10s--; 6 gånger, subtraherar som 6 från digit10s. Som lämnar digit10s lika med 0.
Men vad stoppar blocket efter det har gått igenom 6 gånger? Bra om vi ser tillbaka kommer vi se operationen som testas.
medan (digit10s! = 0) / / digit10s är inte lika med 0, köra koden nedan om och om igen.
Det säger köra blocket om och om igen medan digit10s inte är lika med noll. Men nu digit10s är lika med 0! Så att blockera stoppas och Arduino flyttas till nästa block av kod.