Upravljanje 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