09-Fény-homokóra

Csinálj egy fény-homokórát!

Fény-homokóra

Ebben a homokórában a fény a homok: a fény nagysága mutatja, hogy mennyi homok van az üvegben. Ehhez nem kell más, mint két led: a fentinek csökken a fényereje, míg a lentinek nő a fényereje, mutatva az idő múlását.

Vegyél elő két ledet, és kösd őket az 5-ös és a 6-os portokra.

Fontos!

Az A-star panelen csak a 3,5,6,9,10 és 11-es port tud analóg kimenetet, nekünk pedig pont az kell a ledek fényerejének finom változtatásához.

Hogyan érzékeljük, ha megfordítják?

Egy rendes homokórát meg lehet fordítani, és akkor ismét felülről fog potyogni a homok. Ezt úgy tudjuk megoldani, hogy előveszünk egy egyszerű dőlésérzékelőt.

Dőlésérzékelő

Ez egy nagyon egyszerű cucc: van benne egy pici golyó, ami - mint egy kapcsoló - összeérinti a két lábát, ha a golyó a lábak közelében van. A golyót pedig a gravitáció mozgatja, tehát ha az érzékelő úgy áll, hogy a lábai a padló felé néznek, akkor bekapcsol, más esetben meg kikapcsol.

Dőlésérzékelő működése

A dőlésérzékelő tehát olyan, mint egy kapcsoló. Csak rá kell kötni az egyik oldalát mondjuk az A-star 0-ás portjára, és az érzékelő másik oldalát a GND-re.

Homokóra

Kezdenek sokasodni a drótok? Lehetséges! Csak a kezemet figyeld, mert csalok! Aszonnnyahogy: 6-os kimenet megy a bal oldali ledre. 5-ös kimenet megy a jobb oldali ledre. Ezek eddig zöld drótok voltak. A 0-ás port most bemenet, ide jön a dőlésérzékelő a sárga madzagon. A ledeknek és az érzékelőnek a másik vége pedig GND-re megy - ezek a fekete drótok.

Fontos, hogy milyen színű?

A villany nem tudja, milyen színű dróton közlekedik, neki teljesen mindegy ez. Nekünk viszont a színek segíthetnek átlátni a káoszt. Általában a fekete a GND, a piros az 5V, legyen a zöld a kimenet, a sárga a bemenet.

Első program: felváltva villogó

Most pici lépésekben fogjuk megszelidíteni ezt a kütyüt. Először is, rittyentsünk egy felváltva villogó cuccost. Ehhez elővettem a sima villogó ledes programot, és picit kibővítettem:

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

void loop() {
    digitalWrite(5, LOW); 
    digitalWrite(6, HIGH); 
    delay(500);
    digitalWrite(5, HIGH); 
    digitalWrite(6, LOW); 
    delay(500);  
}

Csak két változás van: először is a setup részben mindhárom portot beállítom, mégpedig az 5 és a 6 kimenetek lesznek (itt vannak a ledek), a 0 pedig egy okosított bemenet. Az INPUT_PULLUP olyan bemenetet jelent, amire kapcsoló-szerű dolgot teszünk, aminek a másik oldala GND-re van kötve. A dőlésérzékelővel pont ezt tettük :)

A másik változás pedig, hogy a digitalWrite-okkal a 5-ös és a 6-os portot is kapcsolgatom, mégpedig pont ellenkezően. Emiatt felváltva villog a két led.

Nem villog a led? Ne feledd, hogy a led polaritás érzékeny, azaz nem mindegy, hogy a két lába hogyan van bekötve. Fordítsd meg a led két lábát (vagy a hozzá menő vezetéket), és próbáld ki úgyis!