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):