Preuzmi .fzz Preuzmi .ino
Preuzmi shemu spajanja u Fritzingu    Preuzmi programski kod za Arduino

 

 

POGLAVLJE 6 - Zadatak 31:

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.

SHEMA:

EKSPERIMENTALNA PLOČICA:

RJEŠENJE:

int ledR = 3;                  	        //definiraj ledR = 3
int ledG = 5;                  	        //definiraj ledG = 5
int ledB = 6;                  	        //definiraj ledB = 6
int tpk1 = 8;                   	//definiraj tpk1 = 8
int tpk2 = 9;                   	//definiraj tpk2 = 9
int tpk3 = 10;                  	//definiraj tpk3 = 10
int tpk4 = 11;                  	//definiraj tpk4 = 11
int tpk5 = 12;                  	//definiraj tpk5 = 12
int tpk6 = 13;                  	//definiraj tpk6 = 13
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
}

Autor: Paolo Zenzerović