Ötödik program: Korrekt homokóra

Szóval akkor csak kellene bele még két feltétel, hogy ne csináljon túlcsordulást.

byte sand;

void setup() {
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(0, INPUT_PULLUP);
    sand=0;
}

void loop() {
    if (digitalRead(0)==0) { 
        // lábak a padló felé néznek
        if (sand<255) {
            sand=sand+1;
        }
    }
    else {
        // lábak a mennyezet felé néznek
        if (sand>0) {
            sand=sand-1;
        }
    }

    analogWrite(5, sand);
    analogWrite(6, 255-sand);
    delay(20);
}

Nos ez azért nem tartott sokból, ugye? A sand=sand+1 most már csak akkor fog végrehajtódni, ha a sand értéke kisebb, mint 255, tehát fér még egy homokszem.

A sand=sand-1 meg csak akkor, ha a sand értéke nagyobb, mint 0, tehát ha van legalább egy homokszem, amit el lehet venni.

Hú, már csak kellene két kis pauszpapír tölcsér, és olyan, mint a gyári. Addig is így néz ki (a videó a korábban használt Trinket panellel készült):

Hurrá, ledes homokóra!