Ručno upravljanje jačinom svjetlosti

Što ćemo naučiti:

– Upravljati jačinom svjetla pomoću tipkala

Zadatak

Na izvod mikrokontrolera s mogućnošću pulsno-širinske modulacije spojite jednu svjetleću diodu. Na mikrokontroler također spojite tri tipkala. Napišite program koji će omogućiti korisniku da mijenja jačinu svjetlosti svjetleće diode pomoću tipkala. Pritiskom na prvo tipkalo jačina svjetlosti se povećava za 5, pritiskom na drugo tipkalo smanjuje se za 5, a pritiskom na treće tipkalo jačina svjetlosti se postavlja na nulu.

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
}
}