04 velj Ručno upravljanje jačinom svjetlosti
Što ćete naučiti:
– Upravljati jačinom svjetla pomoću tipkala
Zadatak
Na izvod mikrokontrolera s mogućnošću pulsno-širinske modulacije spojite jednu svjetleću diodu. Na mikrokontroler također spojite tri tipkala. Napišite program koji će omogućiti korisniku da mijenja jačinu svjetlosti svjetleće diode pomoću tipkala. Pritiskom na prvo tipkalo jačina svjetlosti se povećava za 5, pritiskom na drugo tipkalo smanjuje se za 5, a pritiskom na treće tipkalo jačina svjetlosti se postavlja na nulu.
Prikaz spajanja
Arduino kod
int led1 = 5; //definiraj led1 = 5 int tpk1 = 6; //definiraj tpk1 = 6 int tpk2 = 7; //definiraj tpk2 = 7 int tpk3 = 8; //definiraj tpk3 = 8 int jacina; //definiraj varijablu jacina void setup() { pinMode(led1, OUTPUT); //postavi izvod led1 kao izlazni pinMode(tpk1, INPUT_PULLUP); //postavi izvod tpk1 kao ulazni pinMode(tpk2, INPUT_PULLUP); //postavi izvod tpk2 kao ulazni pinMode(tpk3, INPUT_PULLUP); //postavi izvod tpk3 kao ulazni digitalWrite(led1, LOW); //isključi LED diodu 1 - početno stanje } void loop() { if (digitalRead(tpk1) == LOW) { //ako je pritisnutno tipkalo 1 jacina = jacina + 5; //povecaj jačinu za 5 if (jacina > 255) { //ako je jačina veća od 255 jacina = 255; //postavi jačinu na 255 } } if (digitalRead(tpk2) == LOW) { //ako je pritisnutno tipkalo 2 if (jacina >= 5) { //ako je jačina veća od 5 jacina = jacina - 5; //smanji jačinu za 5 } } if (digitalRead(tpk3) == LOW) { //ako je pritisnutno tipkalo 3 jacina = 0; //postavi jačinu na 0 } analogWrite(led1, jacina); //LED 1 mijenja jačinu svijetla delay(150); //čekaj 150 ms } for (jacina = 255; jacina > 0; jacina--) { //vrti varijablu jacina od 255 do 0 u koracima od 1 analogWrite(led1, jacina); //LED 1 mijenja jačinu svijetla analogWrite(led2, 255 - jacina); //LED 2 mijenja jačinu svijetla delay(20); //čekam 20 ms } }