subota, 20 aprila, 2024
Hardver

Arduino kontroler (6. deo)

Autor: Stefan Nožinić

U prethodnim brojevima smo saznali šta je to PWM, kako se koriste tasteri i još mnogo toga. U ovom broju ćemo da uradimo jedan mali projekat koji je samo kombinacija već naučenog.

Kao što smo već i do sada radili, izradu projekta ćemo podeliti u 2 faze: hardverski i softverski deo. Prvo ćemo povezati sve što je potrebno od elektronike, pa ćemo onda preći na programiranje.

Hardverski deo

Prvo ćemo povezati taster na Arduino kao što smo to radili prošli put. Za početak povežite 5 [V] pin sa tasterom koji povezujete na pin 7 i pull-up otpornikom. Takođe je potrebno drugi kraj otpornika da vežete na GND.

Kada povežete taster, to bi trebalo da izgleda kao na slici.

Sledeći deo jeste vezivanje LED diode na Arduino. Na pin 7 prvo vežite otpornik od 200 [Ω] a zatim na drugi kraj vežite anodu; katodu vežite na GND.

To bi bilo to što se tiče hardverskog dela, sada je vreme da pređemo na softverski deo, odnosno programiranje.

Softverski deo

Pre nego što počnemo sa programiranjem, potrebno je da objasnimo algoritam koji želimo da implementiramo.

Dakle, cilj nam je da se na svaki pritisak dugmeta osvetljenost diode poveća. Kada dioda dostigne svoj maksimum osvetljenosti, na sledeći pritisak osvetljenost treba da se smanji.

Ovo možemo uraditi tako što ćemo napraviti jednu globalnu promenljivu koja će čuvati trenutnu vrednost osvetljenosti diode (0 – 255), i još jednu promenljivu koja će signalizirati da li se osvetljenost pri sledećem pritisku smanjuje ili povećava.

Napomena: Pre nego što počnemo, Arduino ne sme da bude povezan sa elektronikom, pa ćemo izvući žice koje su povezane na GND i na 5 [V].

Sada je vreme da implementiramo našu ideju. Pokrenite Arduino radno okruženje i počnite novi projekat.

Kôd programa:

const int ledPin = 3;
const int buttonPin = 7;

char brightness; // Promenljiva koja pokazuje osvetljenost diode
char increment;

void setup()
{
// Inicijalizacija svih pin-ova
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);

// Inicijalizacija potrebnih promenljivih
brightness = 0;
increment = 0;
}

void loop()
{
// Provera da li je taster pritisnut
if (digitalRead(buttonPin) == HIGH)
{
if (increment == 0) brightness++;
else brightness--;
}
if (brightness >= 255) increment = 1;
if (brightness <= 0) increment = 0;

analogWrite(ledPin, brightness);
}

Sada je samo potrebno da ponovo povežete elektroniku na protoboard-u sa Arduino-om, i da program prebacite na Arduino.

Trebalo bi da pri svakom pritisku tastera LED dioda bude što svetlija, a kad dođe do svog maksimuma, polako postaje tamnija.

U ovom broju smo uradili jedan zanimljiv projekat korišćenjem relativno dostupne opreme i znanja koje smo stekli. U narednom broju ćemo vas uvesti u serijsku komunikaciju između Arduino-a i računara.

Prethodni deo | Nastavak