Internet of Things - Arduino
PWMRučno upravljanje jačinom svjetlosti
Što ćemo naučiti:
– Upravljati jačinom svjetla pomoću tipkala
Zadatak
Na izvode mikrokontrolera s mogućnošću pulsno-širinske modulacije spojite dvije svjetleće diode. Napišite program koji će mijenjati jačinu svjetlosti svjetlećih dioda od 0% do 100% pa od 100% do 0% u jednakim koracima. Kada svjetleća dioda postigne maksimalni intenzitet svjetlosti neka se jačina svjetlosti ponovno spusti do 0% u jednakim koracima. Svjetleće diode rade u kontrafazi. Kada je prva svjetleća dioda na jačini svjetlosti od 0%, druga mora biti na jačini od 100% i obrnuto.
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 } }
verzija 5