Internet of Things - Arduino

PWM

Ručno upravljanje jačinom svjetlosti

Što ćemo naučiti:

– Upravljati jačinom svjetla pomoću tipkala

Zadatak

Na izvode mikrokontrolera s mogućnošću pulsno-širinske modulacije spojite dvije svjetleće diode. Napišite program koji će mijenjati jačinu svjetlosti svjetlećih dioda od 0% do 100% pa od 100% do 0% u jednakim koracima. Kada svjetleća dioda postigne maksimalni intenzitet svjetlosti neka se jačina svjetlosti ponovno spusti do 0% u jednakim koracima. Svjetleće diode rade u kontrafazi. Kada je prva svjetleća dioda na jačini svjetlosti od 0%, druga mora biti na jačini od 100% i obrnuto.

 

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

verzija 5

Pogledajte ostale materijale za PWM