Скочи на садржај

Hello (Arduino) world – трепћући ЛЕД

Пре извесног времена почео сам да откривам једну нову област у програмирању и електроници, ради се о Интернету ствари, мало прецизније речено о микропроцесорима и микроконтролерима. Као што сам најавио у првом тексту на блогу, једна од мојих циљних област је Ардуино и дошао је ред и на прву објаву! Овај текст је другачији од других, овај пут је поред текста укључен и видео материјал за први пројекат, нешто типа „Hello world!“ – трепћући ЛЕД. Мало пратим трендове, или бар покушавам, али свакако уживам док ово радим!

Hello World Arduino!

Први контакт са Ардуином био је захваљујући Трлету, колега са студија, друг, особа којој сам са садашњим кумом истеривао људе са рођендана. Не бих да започињем сад ту причу, али било је спонтано и не намерно! Показао ми је пар ствари које је радио, опрему са којом је радио, тако да сам врло брзо и сам дошао у посед сличног комплета.

Од тад играо сам се са РФИД технологијом и правио копије тагова за улазе зграда и слично. На почетку, као што то обично бива код мене, десило се да сам спржио сензор читача, али тако се учи.

Програмски језик „Ц“

Оно што ме посебно одушевљава, а то је да се Ардуино програмира програмским језиком „Ц++“, могуће је користити и класичан „Ц“. Кажу по Нету пружа бољу контролу и више могућности. Сада ћу рећи да ми је „Ц“ стара љубав! Користим реч љубав, јер када сам почео да радим у „Ц“-у знао сам да нећу имати прилику га негде практично и користим. Међутим, изгледа да сам погрешио. Са друге стране добро познавање „Ц“-а омогућило ми је да лакше упознам језике засноване на њему, пре свега ПХП и ЈаваСкрипт.

Трепћући ЛЕД – Ардуино пројекат

Хајде да се вратим на Ардуино и овај основни пројекат, први текст из области, први видео клип. Ради се о основном, почетничком пројекту који има за циљ упознавање са пиновима Ардуина, како се користе као излази за контролу рада електричног кола. У овом случају та контрола се своди на наизменично паљење и гашење ЛЕД диода у одређеном временском интервалу.

Потребне компоненте

За овакав једноставан пројекат потребно је мало компонената, за овај случај две ЛЕД диоде. Боја је небитна за ову причу. Отпорници, по један за сваку диоду. Служе нам за заштиту диода од превеликог напона. У овом случају вредности отпорности су 220Ω. Зашто? Постоји и ту математика заснована на Омовом закону и могућностима Ардуина.

Омов закон и могућности Ардуина

Кренимо од могућности Ардуина, практично правило каже да безбедна вредност струје за Ардуино УНО по пину износи 14mA (ова вредност подразумева исту струју на свим пиновима; уколико говоримо о струји на само једном пину, вредност расте на 40mA). Имамо вредност струје, знамо вредност излазног напона на пину – 5V и знамо да је напон на директно поларисаној диоди 2V (вредност узета из литературе).

ЛЕД диода и отпорник везани на ред морају у збиру да дају вредност напона напајања коју добијају са Ардуино пина. Одавде можемо да видимо да је напон који се развија на опторнику 3V и применом Омовог закона долазимо до вредности отпорности од 214Ω. Наравно, стандардне вредности за отпорнике су 200 и 220Ω. Узећемо наравно већу вредност. Ова вредност ће незнатно смањити струју кроз диоду (у односу на оних 14mA), али то свакако не ремети рад кола.

Шема кола

Скица

#define led1 2
#define led2 5
int state=HIGH;
 
void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  digitalWrite(led1, state);
  digitalWrite(led2, !state);
  delay(1000);
  state=!state;
}

Објашњење скице

У прва три реда скице дефинишемо две константе led1 са вредношћу 2 и led2 са вредношћу 5 и једну целобројну променљиву state која има вредност HIGH. Вредност HIGH означава да је излаз Ардуино пина на вредности напона напајања (5V или 3,3V).

У конфигурационој функцији дефинишемо како раде пинови Ардуина, као улази или излази. Ово постижемо коришћењем функције pinMode која прима два аргумента. Први је вредност, можда је боље речено име, пина са којим радимо, а други је режим рада пина, улаз/излаз помоћу вредности INPUT/OUTPUT.

Функција петље, она која се понавља док се не прекине напајање Ардуину, наизменично укључује и искључује ЛЕД диоде помоћу фунцкије digitalWrite која такође има два аргумента. Први, као и код претходне функције дефинише пин са којим радимо, а други поставља вредност напона на пину на високу или ниску вредност, односно HIGH/LOW. На почетку вредност променљиве state ће бити HIGH за led1 односно LOW за led2.

Након кашњења од 1000 милисекунди, одређено функцијом delay(1000), се вредност променљиве state мења у LOW (јер је то супротна вредност од HIGH) оператором негације – „!“.

Оператор негације је коришћен и код функције digitalWrite како би обезбедили супротну вредност за state и тиме омогућили да се ЛЕД диоде наизменично пале и гасе. У позиву функције коришење оператора негације не мења вредност променљиве state.

За крај

Један јако једноставан пројекат, а оволико писања. Срећом успео сам да све написано уклопим у 1.30 минута видео материјала и прикажем све што је потребно урадити како би коло радило, наравно не изостаје ни објашњење.