Kicsi projekt: led gyertya

Próbáld ki eddigi tudásod! Ha egy led fényerejét változtatjuk, akkor kicsit olyan érzést kelt, mintha egy gyertya lángját fodrozná a szellő.

Ehhez az előző rész programját folytasd, és picit variálj azzal, hogy rövidebb vagy hosszabb ideig kapcsolod be kisebb vagy nagyobb fényerőre a ledet!

Mik azok a függvények?

Matekórán bizonyára használtál már függvényeket: ezek olyan műveletek, amik valamilyen számoktól függően kiszámolnak, vagy visszaadnak egy másik számot. Az y=2x függvény például az x kétszeresét adja vissza.

A programozásban ezt az elvet egészen továbbfejlesztették! Bárhova, ahova számot lehet írni, írhatsz egy kifejezést (pld. 50+50) vagy egy függvényt is. Minden függvénynek szöveges neve van, és utána zárójelben adhatjuk meg hogy mivel számoljon a függvény. Na ez most kínai lett, de nézzünk egy példát!

A random() egy függvény, mégpedig olyan függvény, ami egy véletlen számot ad vissza. A random(1,6) az épp 1 és 6 közötti számokat ad vissza, pont úgy, mint egy hagyományos hatoldalú dobókocka.

A függvények nevét mindig kisbetűvel kezdjük. Ha esetleg hosszú lenne a neve, akkor a camelCase módszert alkalmazzuk: szavanként nagybetűsítünk, pld. digitalWrite vagy ezEgyNagyonHosszúNévDeMagyarulNemProgramozunk.

Most akkor a digitalWrite is függyvény? Igen, az! Csak ez egy olyan függvény, ami nem ad vissza semmiféle értéket, hiszen sokat nem kell számolnia, viszont közben a portot be-ki tudja kapcsolni.

A pinMode is egy függvény. Voltaképpen a C nyelvnek van vagy 10 utasítása (meg is fogjuk tanulni mind a 10-et!) és mindem más csak valaki által megírt kis függvény.

Van ennek köze a matekhoz?

Picike, picike. Természetesen vannak matematikai függvények is, az sqrt(25) kiszámolja 25 négyzetgyökét. De a függvényeket sokkal inkább tekinthetjük önálló kis program-blokkoknak, amikkel egy-egy apró részfeladatot meg lehet oldani.

A függvények a programozás legó kockái.

Lássunk egy elfogadható gyertyát!

Végre! Tehát csak be-ki kapcsolgatjuk azt a ledet, de véletlenszerű időket várva, és teljes kikapcsolás helyett csak egy véletlenszerű kisebb fényre kapcsolunk.

void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
   analogWrite(9, random(100,200)); // kicsi fény, amikor fújja a szél
   delay(random(50,200));
   analogWrite(9, 255);  // teljes fény
   delay(random(50,200));
}

Mik azok a megjegyzések?

A programba tehetünk magunknak szánt rövid üzeneteket. Ezekkel meg tudjuk magyarázni egy-egy furcsább programrész szerepét. A megjegyzéseket // jellel kell kezdeni, és a sor végéig tartanak.

Ha esetleg több sornyi megjegyzést írnánk, azt a / * jellel kell kezdeni, és a * / jellel bezárni, valahogy így:

/* Szuper led gyertya program.
   Ez itt egy leddel szimulálja a szélben mozgó gyertyalángot.
 */  

void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
   analogWrite(9, random(100,200)); // kicsi fény, amikor fújja a szél
   delay(random(50,200));
   analogWrite(9, 255);  // teljes fény
   delay(random(50,200));
}

Miről szólt ez a rész?

Most már tudsz egyszerű programokat készíteni az A-star panelre. Úgy villog ahogy csak Te akarod, és egy vonalnyi kapcsolási rajzzal sem kellett magunkat fárasztani. Elég jó, ugye? :)