среда, 8 маја, 2024
Хардвер

Ардуино контролер (4. део)

Аутор: Стефан Ножинић

У претходним бројевима смо описали шта је Arduino, како се користи и дали смо неке његове карактеристике. У овом броју настављамо и даћемо увид у то шта је PWM (енгл. Pulse With Modulation) и како се он користи.

Увод

Замислимо да имамо неки период кроз који се пошаље један сигнал на неку компоненту. Ако бисмо за половину тог периода послали сигнал од 5 [V] а затим сигнал од 0 [V], уређај би то сматрао као сигнал од 2.5 [V]. Ово и јесте принцип рада PWM-a. Поента је да се сигнал смањи тиме што се дигитална јединица неће послати током целог периода већ само током једног његовог дела. Такође, битно је напоменути да фреквенција предајника мора бити већа од фреквенције пријемника. PWM се, такође, може сматрати као емулација аналогног излаза.

Arduino и PWM

Као што смо већ напоменули у једном од претходних бројева, Arduino има пинове прилагођене за рад са PWM-ом. Пин се софтверски подеси као излазни коришћењем функције pinMode(…) а онда се подешава ниво сигнала на одређену вредност коришћењем функције analogWrite(…). Функција analogWrite(…) као параметре тражи пин на који треба да пошаље сигнал и вредност 0 – 255 која одређује ниво сигнала.

LED blur

Сада кад знамо шта је PWM и чему служи, можемо да направимо наш наредни пројекат. Нећемо у овом пројекту додати нешто ново на стари, само ћемо га побољшати да се LED полако укључује и искључује и да то ради постепено.

Од хардверских компоненти нам треба Arduino и LED диода.

Повезивање:

  1. Повежите неки пин који има PWM излаз (рецимо пин 3) на отпорник.
  2. Други крај отпорника вежите на + диоде (анода).
  3. Катоду вежите за GND пин на Arduino.

Алгоритам:

  1. Направимо 2 глобалне променљиве, једну boolean а другу integer, прва променљива чува стање (да ли треба да се спушта или подиже ниво сигнала) док друга чува тренутни ниво сигнала.
  2. У setup() функцији иницијализујемо пин 3 (или неки други који сте изабрали) као излазни пин.
  3. У loop() функцији на основу стања повећавамо односно смањујемо ниво и шаљемо га на пин 3 путем функције analogWrite(…).
  4. Сачекамо одређени период (5[ms] у примеру).

Кôд:

bool inc = true;
int lvl = 0;

void setup()
{
pinMode(13, OUTPUT);
}

void loop()
{
if (lvl>=255)
{
lvl = 255;
inc = false;
}
if (lvl <= 0) {
lvl = 0;
inc = true;
}
if (inc)lvl++;
else lvl--;
analogWrite(3, lvl);
delay(5);
}

Шта даље?

У наредном броју ћемо описати принцип рада тастера и комбиноваћемо стечена знања да направимо још занимљивију ствар.

Претходни део | Наставак