Internet of Things - Arduino
PWMUpravljanje bojom RGB diode pomoću potenciometra
Što ćemo naučiti:
– Upravljati svakom bojom RGB diode pomoću potenciometara
Zadatak
Na izvode Arduino mikrokontrolera s mogućnošću pulsno-širinske modulacije spojite jednu RGB diodu, a na analogne izvode mikrokontrolera spojite tri potenciometra. Napišite program koji će mijenjati boju RGB diode pomoću potenciometara. Svaki od potenciometara upravlja jednom bojom RGB diode. Kada je pojedini analogni ulaz na maksimalnoj vrijednosti ta boja RGB diode svijetli punim intezitetom.
Prikaz spajanja
Arduino kod
int LedCrvena = 2; //definiraj segment crvene boje int LedZelena = 3; //definiraj segment zelene boje int LedPlava = 4; //definiraj segment plave boje int potR = A0; //definiraj potenciometar za ocitanje crvene boje int potG = A1; //definiraj potenciometar za ocitanje zelene boje int potB = A2; //definiraj potenciometar za ocitanje plave boje int ocitanjepotR; //definiraj varijablu ocitanjepotR int ocitanjepotG; //definiraj varijablu ocitanjepotG int ocitanjepotB; //definiraj varijablu ocitanjepotB int jacinaR; //definiraj varijablu jacinaR; int jacinaG; //definiraj varijablu jacinaG; int jacinaB; //definiraj varijablu jacinaB; void setup() { pinMode(LedCrvena, OUTPUT); //postavi izvod LedCrvena (2) kao izlazni pinMode(LedZelena, OUTPUT); //postavi izvod LedZelena (3) kao izlazni pinMode(LedPlava, OUTPUT); //postavi izvod LedPlava (4) kao izlazni digitalWrite(LedCrvena, HIGH); //iskljuci crveni segment RGB diode digitalWrite(LedZelena, HIGH); //iskljuci zeleni segment RGB diode digitalWrite(LedPlava, HIGH); //iskljuci plavi segment RGB diode } void loop() { ocitanjepotR = analogRead(potR); //ocitaj stanje analognog ulaza ocitanjepotG = analogRead(potG); //ocitaj stanje analognog ulaza ocitanjepotB = analogRead(potB); //ocitaj stanje analognog ulaza jacinaR = map(ocitanjepotR, 0, 1023, 0, 255); //skaliraj ocitanje na 0-255 jacinaG = map(ocitanjepotG, 0, 1023, 0, 255); //skaliraj ocitanje na 0-255 jacinaB = map(ocitanjepotB, 0, 1023, 0, 255); //skaliraj ocitanje na 0-255 analogWrite(LedCrvena, 255 - jacinaR); //postavi analogni izlaz na izracunatu vrijednost analogWrite(LedZelena, 255 - jacinaG); //postavi analogni izlaz na izracunatu vrijednost analogWrite(LedPlava, 255 - jacinaB); //postavi analogni izlaz na izracunatu vrijednost delay(50); //cekaj 50 milisekundi
verzija 8