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

Ардуино Пројекат: РГБ Семафор Симулација

Овај пројекат, иако једноставан у себи садржи више елемената битних за рад са Ардуином и у опште са микроконтролерима. Поред рада са РГБ диодом, пројекат укључује коришћење analogWrite функције за рад са (одређеним) дигиталним пиновима. Коришћење ове функције подразумева коришћење PWM сигнала, али и корисничких функција.

Задатак пројекта: Симулација семафора помоћу РГБ диоде

Пројекат представља симулацију рада семафора коришћењем једне РГБ диоде. Дакле није класичан семафор са три одвојена светла. Секвенца којом се мењају светла је следећа:

  • Црвено светло светли 8 секунди;
  • Потом се укључује жуто на 2 секунде;
  • Потом постојано зелено у трајању од 7 секунди;
  • Наредне 3 секунде зелено светло трепери;
  • Поново се укључује жуто на 2 секунде, након чега се секвенца понавља.

РГБ диода је потпуно исто што и класична ЛЕД диода, са том разликом што има четири пина. Један од ових пинова представља заједничку катоду, док преостала три представљају аноде црвене, зелене и плаве диоде. Конструкцију можете видети на слици. Може да се каже и да су у једном телу спаковане три диоде. Довођењем напона логичке 1 се укључује одређена диода, односно довођењем PWM сигнала на пин диода светли одређеним интензитетом. Ово својство омогућава да диода може да светли било којом бојом из видљивог спектра.

Програм и објашњење

const int redLed = 11;
const int greenLed = 10;
const int blueLed = 9;

void setup()
{
  pinMode(redLed, OUTPUT);
  pinMode(blueLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  Serial.begin(9600);
}

void enableColor(int R, int G, int B) {
  analogWrite(redLed, R);
  analogWrite(greenLed, G);
  analogWrite(blueLed, B);
}

void loop()
{
  enableColor(255, 0, 0);
  Serial.println("Red");
  delay(8000);
  
  enableColor(240, 240, 0);
  Serial.println("Yellow");
  delay(2000);
  
  enableColor(0, 255, 0);
  Serial.println("Green");
  delay(7000);
  
  enableColor(0, 0, 0);
  delay(500);
  enableColor(0, 255, 0);
  Serial.println("Blinking");
  delay(500);
  enableColor(0, 0, 0);
  delay(500);
  enableColor(0, 255, 0);
  Serial.println("Blinking");
  delay(500);
  enableColor(0, 0, 0);
  delay(500);
  enableColor(0, 255, 0);
  Serial.println("Blinking");
  delay(500);
  
  enableColor(240, 240, 0);
  Serial.println("Yellow");
  delay(2000);
}


AnalogWrite функција омогућава контролисање напона на дигиталним пиновима који могу да раде са PWM сигналима. Ради се о дигиталним пиновима 3, 5, 6, 9, 10 и 11. Два су аргумента која ова функција има. Један је дигитални пин на којем се генерише PWM сигнал, а други висина напона која је представљена вредностима од 0 до 255. Одсуство напона се представља 0, док максималних 5V представља вредност 255.

Програм је написан коришћењем једне корисничке функције која има три аргумента и сваки од њих представља напонски ниво за црвену, зелену и плаву диоду у распону од 0 до 255. Нема повратну вредност. Њена намена је једноставно укључивање/искључивање одређених диода како би се емитовало црвено, жуто и зелено светло. Јасно је да се само две диоде користе у овом пројекту, црвена и зелена. Плава иако није у употреби повезана је у коло.

Константе које су дефинисане у програму су пинови на које су повезане Р, Г и Б пин РГБ диоде. У овом случају су пинови 9, 10 и 11.

Конфигурациона функција само дефинише излазне режиме рада ових пинова и омогућена је серијска комуникација јер се приликом укључивања сваког од светала исписује одговарајућа порука у серијском монитору. Нпр. Ако је укључена црвена диода, исписује се порука „Црвена“.

У делу петље диоде се непрестано укључују и искључују дефинисаном секвенцом!

1 мишљење на „Ардуино Пројекат: РГБ Семафор Симулација“

  1. Thanks for the description of RGB diodes. Gave me a good understanding of how they work.

Затворено за коментаре.