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!
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.
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.
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.
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));
}
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));
}