Arduino -RGB Ledka

RGB Ledka dokáže svietiť ľubovoľnou farbou čo dokáže mixovaním troch farieb -červenej, zelenej a modrej.

Najdlhší káblik na Ledke sa pripája na GND na Arduine. Na zapojenie okrem Ledky potrebujeme 3x 100 ohmový odpor (ide to aj bez nich ale znižuje sa tým životnosť Ledky) , nepájivé pole a Arduino. Zapojenie vyzerá takto:

Zdroj: create.arduino.cc

Program vyzerá takto:

void setup() {
   pinMode(9, OUTPUT);
   pinMode(10, OUTPUT);
   pinMode(11, OUTPUT);
 }
 void loop() {
   RGB_color(255, 0, 0); // Červená
   delay(1000);
   RGB_color(0, 255, 0); // Zelená
   delay(1000);
   RGB_color(0, 0, 255); // Modrá
   delay(1000);
   RGB_color(255, 255, 0); // Žltá
   delay(1000);
   RGB_color(255, 255, 255); // Biela
   delay(1000);
 }
 void RGB_color(int red_light_value, int green_light_value, int blue_light_value)
  {
   analogWrite(11, red_light_value);
   analogWrite(10, green_light_value);
   analogWrite(9, blue_light_value);
 }

Program každú sekundu necháva zasvietiť inú farbu. Na pomoc používa procedúru RGB_color. Tá je tam kvôli jednoduchšiemu použitiu programu. Vysvietenú farbu môžete meniť parametrami v RGB_color( x , x , x) .

Arduino -tlačidlo

Pre zapínanie a vypínanie komponentov potrebujete tlačidlo. Na ovládanie LEDky cez tlačidlo potrebujeme Arduino, tlačidlo, LEDku, 220 ohmový a 10 kiloohmový rezistor , nepájivé pole a pár káblikov.

Samotné zapojenie vyzerá takto:

Zdroj: create.arduino.com

Keď sa stlačí tlačidlo tak na pin 2 príde 5 voltov teda logická 1-ka. Keď nie je tlačidlo stlačené stále do pinu 2 prúdi ide malé napätie cez 10kiloohmový odpor pretože v Arduine logická nula nie je 0 voltov ale asi 0,2 voltov. Bez tohto zapojenia by sa obvod správal nestabilne.

Program vyzerá takto:

int stav = 0;      
 void setup() {
   pinMode(13, OUTPUT);
   pinMode(2, INPUT);
 }
 void loop() {
   stav = digitalRead(2);
   if (stav== HIGH) {
     digitalWrite(13, HIGH);
     delay(2000);
     digitalWrite(13, LOW);
   }
   delay(100);
 }

Po spustení programu sa prečíta z pinu 2 (stav=digitalRead(2);) stav stlačenia tlačidla. Ak je tam 5voltov -HIGH , tak sa zapne LEDka na pine 13, počká sa 2 sekundy a LEDka sa vypne.

Arduino- motor

Motor slúži na pohon robotických autíčok, rôznych podvozkov a podobne.

Na napájanie motora je potrebné zapojiť aj tzv. motorový ovládač ako napríklad tento model L9110 kvôli tomu, že motor potrebuje extra energiu na prevádzku:

Na samotné zapojenie budeme potrebovať Arduino, motorový ovládač, 2 motory, krížový šrobovák a pár káblikov:

Zdroj: fritzing.com

Na pohon 2 motorov stačí aj napájanie s Arduina, ale ak budete mať pocit, že motory idú pomaly alebo slabo môžete na červený (+) a čierny (-) káblik zapojiť 9 voltovú batériu. Samotné zapojenie vyzerá takto:

void setup() {
   pinMode( 6 , OUTPUT);
   pinMode( 7 , OUTPUT);
 pinMode( 8 , OUTPUT);
   pinMode( 9 , OUTPUT);
 }
 void loop() {
 digitalWrite( 6 , HIGH);
   digitalWrite( 7 , LOW);
 digitalWrite( 8 , HIGH);
   digitalWrite( 9 , LOW);
 delay(5000);
 digitalWrite( 6 , LOW);
   digitalWrite( 7 , HIGH);
 digitalWrite( 8 , LOW);
   digitalWrite( 9 , HIGH);
 delay(5000);
   // stop
   digitalWrite( 6 , LOW);
   digitalWrite( 7 , LOW);
 digitalWrite( 8 , LOW);
   digitalWrite( 9 , LOW);
 delay(5000);
 }

Kód je podobný ako pri zapojení LEDiek. Motory sa najprv roztočia dopredu 5 sekúnd, potom dozadu 5 sekúnd a nakoniec 5 sekúnd budú nehybné a to všetko sa bude neustále opakovať.

Prajem Vám veľa zaujímavých projektov s motormi.

Arduino-fotorezistor a servo

Fotorezistor je súčiastka, ktorá mení odpor podľa dopadajúceho svetla. Vhodný na rôzne stmievače, nočné svetlá a podobne.

Zapojíme si obvod ktorý rozsvieti LEDku keď sa zhasne v miestnosti a naopak. Pre jeho zapojenie potrebujeme Arduino, nepájivé pole, fotorezistor, 10kiloohmový odpor a pre zapojenie LEDky potrebujeme 1 LEDku a 100 ohmový rezistor a ešte pár káblikov:

Zapojenie bude vyzerať nasledovne:

Zdroj: http://arduino.sundh.com

Program vyzerá takto:

int value;                
 void setup(){
  pinMode(3, OUTPUT); 
  pinMode(A0, INPUT);
 }
 void loop(){
   value = analogRead(A0);
 if (value > 300){
     digitalWrite(3, LOW); 
   }
   else{
     digitalWrite(3, HIGH); 
   }
 }

Okrem digitálnych pinov 1-13 máme na Arduine aj analógové piny A0-A5. Tie načítavajú elektrickú energiu s káblika, ktorý je do nich zapojený a keď načítajú nulovú energiu uložia si ju ako 0 a keď maximálnu energiu uložia si ju ako 1000.

Obvod s fotorezistorom je zapojený do A0. Keď naň dopadá svetlo tak do A0 ide veľa energie – uloží sa veľké číslo (číslo sa číta z A0 cez príkaz analogRead) a naopak keď naň dopadá málo svetla uloží sa malé číslo. V programe je podmienka, ktorá ak je uložené číslo väčšie ako 300 vypne LEDku a ak menšie ako 300 tak zapne LEDku. Menej ako 300 je už skoro tma. Ak to nefunguje je potrebné meniť číslo 300 v programe v rozsahu od 0-1000 a skúšať funkčnosť.

Servo motor je súčiastka vhodná na otáčanie častí robotov, robotických rúk, rámp a podobne. Na zapojenie potrebujeme len servo a Arduino. Zapojenie vyzerá takto:

Zdroj: https://www.instructables.com

A program vyzerá takto:

#include <Servo.h>
Servo Servo1; 
 void setup() { 
    Servo1.attach(9); 
 }
 void loop(){ 
    Servo1.write(0); 
    delay(1000); 
    Servo1.write(90); 
    delay(1000); 
    Servo1.write(180); 
    delay(1000); 
 }

Servo sa môže otáčať len od 0 do 180 stupňov – pol otáčky. Program otočí servo na 0 ° , počká 1 sekundu, otočí servo na 90 ° , počká 1 sekundu a otočí servo na 180 ° a počká 1 sekundu o to všetko stále opakuje.

Všimnite si že bolo prvýkrát potrebné pripojiť (include) knihovnu k programu. Základné knihovny (ako táto) sú súčasťou inštalácie programu.

Prajem Vám kopu super projektov s týmito súčiastkami.

Arduino-úvod a LEDky

Táto séria článkov bez nejakého väčšieho vysvetľovania rýchlo krok za krokom ukáže ako pracovať s Arduinom, keďže informácií o ňom je plný internet.

Arduino a súčiastky je možné zakúpiť najlepšie dvoma spôsobmi:

  • cez Aliexpress -lacno ale doba dodania je okolo jedného mesiaca
  • cez Techfun.sk – drahšie ale doba dodania je 2-3 pracovné dni

Príklad: Arduino Uno – Aliexpress 4 eurá(a to je jeden s tých drahších komponentov pre Arduino- ak sa v návodoch objaví drahší komponent spomeniem to) vs. Techfun 10 eur. Objednávka cez Aliexpress je s poštovným zdarma a s ohľadom na nízku cenu aj bez cla (hlavne neobjednávajte naraz za viac ako 22 eur).

Príprava

Vývojové prostredie Arduino IDE si stiahnite zo stránky https://www.arduino.cc/en/Main/Software . Počas inštalácie si program pár krát vyžiada povolenie na inštaláciu ovládačov – všetky povoľte.

Pri kúpe Arduina z Číny je ešte potrebné nainštalovať tzv. CH340 ovládač. Stiahnite ho odtiaľto- CH340 driver for Windows 8.1 x64 & x86 , odzipujte (skopírujte všetky súbory do novovytvoreného priečinku) a nainštalujte (dvojklik na súbor SETUP a po spustení klik na INSTALL ).

Spustite program a Arduino Uno prepojte cez USB kábel s voľným USB portom vášho počítača. Potom sa v programe v ponuke Tools-Board uistite že máte nastavenú dosku Arduino Uno:

Ďalej v ponuke Tools-Serial Port zapnite port v ktorom je zapojené Arduino-obvykle je to ten jediný port čo je k dispozícií (občas sa stane že tam nie je žiaden dostupný port – odpojte a znovu zapojte Arduino do počítača a ono to po čase nabehne ) :

Zapojenie LEDiek

Teraz môžeme vytvoriť prvý projekt – zapojiť malé svetielká LEDky. Budeme potrebovať LEDku, rezistor, nepájivé pole a pár káblikov. Najprv si vysvetlíme nepájivé pole. Je to doska z veľkým množstvom dierok kde je možné zapájať kábliky. Dierky sú prepojené medzi sebou takto:

Na doske Arduino sú digitálne piny 1 – 13, ktoré budeme prepájať cez kábliky s nepájivým polom:

Každá LEDka má 2 nožičky pričom jedna je dlhšia . Tú budeme prepájať káblikmi s pinmi 1-13 (kladný pól). Kratšiu nožičku budeme prepájať cez kábliky s portom GND(záporný pól -zem) na doske Arduino. Rezistor o veľkosti 100 ohmov (alebo podobný od 10 po 1000 ohmov )zapojíme tiež. Rezistor znižuje napätie ktoré ide do LEDky. Samotné zapojenie môžeme urobiť pre začiatok takto:

Zdroj: Arduino project hub

Program sa skladá z dvoch častí:

  • void setup(){ } – v zátvorkách sú príkazy ktoré sa vykonajú len raz
  • void loop(){ } -v zátvorkách sú príkazy ktoré vykonávajú neustále

Do časti void setup napíšeme príkaz pinMode(8,OUTPUT); -nastaví pin 8 na posielanie el. energie do LEDky

Do časti void loop napíšeme príkaz digitalWrite(8, HIGH); -pošle el. energiu do LEDky cez port 8 -a kedže je v časti loop robí to neustále

Program teda vyzerá takto:

void setup() {
   pinMode(8, OUTPUT);
 }
 void loop() {
   digitalWrite(8, HIGH);                      
 }

Teraz už len:

Teraz LEDku rozblikáme. Do časti loop vložíme príkaz delay(1000); ,ktorý zastaví beh programu na 1000 milisekúnd, teda 1 sekundu:

void setup() {
   pinMode(8, OUTPUT);
 }
 void loop() {
   digitalWrite(8, HIGH);   
   delay(1000);                  
   digitalWrite(8, LOW);   
   delay(1000);                    
 }

Program pošle energiu do LEDky, počká 1sekundu , pošle nula voltov -nič do LEDky (vypne ju), počká 1 sekundu a toto opakuje neustále. Program dajte skontrolovať a odošlite do Arduina.

Môžeme teraz zapojiť dve LEDky do portov povedzme 9 a 10 a urobiť policajnú blikačku:(ako vidíte užitočné je použit prvú linku s dierkami ako spoločné prepojenie LEDiek na zem -GND)

Zdroj: Arduino project hub

Program:

void setup() {
   pinMode(9, OUTPUT);
   pinMode(10, OUTPUT);
 }
 void loop() {
   digitalWrite(9, HIGH);                   
   digitalWrite(10, LOW);   
   delay(1000); 
   digitalWrite(10, HIGH);                   
   digitalWrite(9, LOW);   
   delay(1000);   
 }

V jednom momente do portu 9 ide energia a do portu 10 nič a o sekundu neskôr je to naopak a to sa stále opakuje.

Ďalšie zapojenia si už vyskúšajte sami. Prajem veľa zaujímavých projektov s LEDkami.