Internet of Things - Arduino
PWMRučno upravljanje promjenom boja RGB diode
Što ćemo naučiti:
– Mijenjati intezitet boja RGB diode pomoću tipkala
Zadatak
Na izvode mikrokontrolera s mogućnošću pulsno-širinske modulacije spojite RGB svjetleću diodu. Na mikrokontroler također spojite šest tipkala. Napišite program koji će s prvim i drugim tipkalom upravljati jačinom svjetlosti crvenog segmenta RGB diode. Kada korisnik pritisne prvo tipkalo intenzitet se povećava za 5, a kada pritisne drugo tipkalo intenzitet se smanjuje za 5. Pomoću trećeg i četvrtog tipkala na isti se način upravlja sa jačinom svjetlosti zelenog segmenta, dok se pomoću petog i šestog tipkala upravlja jačinom svjetlosti plavog segmenta RGB diode.
Prikaz spajanja
Arduino kod
int ledR = 3; //definiraj ledR = 3 int ledG = 4; //definiraj ledG = 4 int ledB = 5; //definiraj ledB = 5 int tpk1 = 6; //definiraj tpk1 = 6 int tpk2 = 7; //definiraj tpk2 = 7 int tpk3 = 8; //definiraj tpk3 = 8 int tpk4 = 9; //definiraj tpk4 = 9 int tpk5 = 10; //definiraj tpk5 = 10 int tpk6 = 11; //definiraj tpk6 = 11 int jacinaR = 0; //definiraj jacinaR = 0 int jacinaG = 0; //definiraj jacinaG = 0 int jacinaB = 0; //definiraj jacinaB = 0 void setup() { pinMode(ledR, OUTPUT); //postavi izvod ledR kao izlazni pinMode(ledG, OUTPUT); //postavi izvod ledG kao izlazni pinMode(ledB, OUTPUT); //postavi izvod ledB 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 pinMode(tpk4, INPUT_PULLUP); //postavi izvod tpk4 kao ulazni pinMode(tpk5, INPUT_PULLUP); //postavi izvod tpk5 kao ulazni pinMode(tpk6, INPUT_PULLUP); //postavi izvod tpk6 kao ulazni digitalWrite(ledR, HIGH); //isključi crveni segment-početno stanje digitalWrite(ledG, HIGH); //isključi zeleni segment-početno stanje digitalWrite(ledB, HIGH); //isključi plavi segment-početno stanje } void loop() { if (digitalRead(tpk1) == LOW) { //ukoliko je pritisnuto tipkalo 1 if (jacinaR >= 5) { //ukoliko je jacinaR veća ili jednaka 5 jacinaR = jacinaR - 5; //smanji jačinu za 5 } } if (digitalRead(tpk2) == LOW) { //ukoliko je pritisnuto tipkalo 2 if (jacinaR <= 250) { //ukoliko je jacinaR manja ili jednaka 5 jacinaR = jacinaR + 5; //pojačaj jačinu za 5 } } if (digitalRead(tpk3) == LOW) { //ukoliko je pritisnuto tipkalo 3 if (jacinaG >= 5) { //ukoliko je jacinaG veća ili jednaka 5 jacinaG = jacinaG - 5; //smanji jačinu za 5 } } if (digitalRead(tpk4) == LOW) { //ukoliko je pritisnuto tipkalo 4 if (jacinaG <= 250) { //ukoliko je jacinaR manja ili jednaka 5 jacinaG = jacinaG + 5; //pojačaj jačinu za 5 } } if (digitalRead(tpk5) == LOW) { //ukoliko je pritisnuto tipkalo 5 if (jacinaB >= 5) { //ukoliko je jacinaB veća ili jednaka 5 jacinaB = jacinaB - 5; //smanji jačinu za 5 } } if (digitalRead(tpk6) == LOW) { //ukoliko je pritisnuto tipkalo 6 if (jacinaB <= 250) { //ukoliko je jacinaB manja ili jednaka 5 jacinaB = jacinaB + 5; //pojačaj jačinu za 5 } } analogWrite(ledR, 255 - jacinaR); //postavi crveni segment na 255-jacinaR analogWrite(ledG, 255 - jacinaG); //postavi zeleni segment na 255-jacinaG analogWrite(ledB, 255 - jacinaB); //postavi plavi segment na 255-jacinaB delay(100); //čekaj 100 ms }
verzija 7