19

Arduino Academy – Semafor

Postavení semaforu s Arduinem je skvělé především pro začátečníky, jelikož zapojení i programování je lehké.

Potřebujeme:

  • 5mm zelená LED dioda
  • 5mm žlutá (oranžová) LED dioda
  • 5mm červená LED dioda
  • Nepájivé pole
  • 3x Rezistor
  • Arduino
  • Tlačítko

Zapojení

Zdrojový kód

Začneme tím, že definujeme proměnné, pojmenujeme si je podle barev, abychom se následně v kódu dobře orientovali.

int cervena = 13; int zluta= 12; int zelena = 11;

Dále přidáme funkce setup, nastavíme naše diody jako výstupní.

void setup ()
{
pinMode (cervena, OUTPUT);
pinMode (zluta, OUTPUT);
pinMode (zelena, OUTPUT);
}

To bylo snadné. Nyní k tomu nejtěžšímu – musíme naprogramovat logiku semaforu.

void loop()
{
zmenitSvetla();
delay(15000);
}
void zmenitSvetla()
{

digitalWrite(zelena,HIGH); // zapneme zelené světlo
delay(3000); // zelenou necháme 3 sekundy svítit
digitalWrite(zelena,LOW); //vypneme zelenou

digitalWrite(zluta,HIGH); //rozsvítíme žlutou
delay(2000); // žlutou necháme 2 sekundy svítit
digitalWrite(zluta,LOW); //vypneme žluté světlo

digitalWrite(cervena,HIGH); //červené světlo zapneme na 5 sekund
delay(5000); // počkáme těch 5 sekund
digitalWrite(cervena,LOW); //vypneme červenou

digitalWrite(zluta,HIGH); //zapneme žluté
delay(2000); // žlutou necháme 2 sekundy svítit
digitalWrite(zluta,LOW); //vypneme žluté světlo
}

Nyní zkuste program nahrát do svého Arduina a pozorujte zapojené LED diody. Měly by se chovat jako semafor.

Verze s tlačítkem na přepínání

int tlacitko = 2; // tlačítko nastavíme na pin dva
int tlacitkoHodnota = 0; // výchozí bude hodnota 0 (nestisknuto)

Do setup přípíšeme

pinMode(tlacitko,INPUT);
digitalWrite(zelena,HIGH);

loop přepíšeme

tlacitkoHodnota = digitalRead(tlacitko); //stav tlačítka se nám uloží do pomocné proměnné tlacitkoHodnota

 if (tlacitkoHodnota == HIGH) // když je tlačítko stisknuté, změní se světla
{
zmenitSvetla();
delay(15000); // počkáme 15 sekund
 }

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

ArduinoTeam

Vytvářím návody pro Arduino, skvěle se orientuji v IT a označuji se za geeka. Miluji nové technologie, protože jsou úžasné. Budu rád, když můj malý magazín o Arduinu podpoříte! Děkuji moc, jste skvělí

  1. Viagra Une Heure Discount On Line Fedex Shipping Isotretinoin 10mg Medication Direct Lithium Carbonate No Prescription viagra online Nuova Propecia Effetti Collaterali Uso Del Viagra En Jovenes

  2. Tadalafil Canadian Pharmacy Online Pharmacy Onlline Store cialis Buy Doxycycline Paypal Cialis Achat Internet Forum Occipital Baldness Propecia

  3. Levitra 9 Dollars Walmart Dutasteride Duagen Bph Want To Buy In Internet Cialis 10 Stress

  4. Cephalexin Online U S Pharmacy Prix Du Viagra 50 Methocarbamol Over The Counter gen health levitra Find Cialis Without Prescription The Pharmacy Express Scam Comprar Cialis En Valladolid

  5. Amoxicillin Affects Pancreatic Islet Cells Amoxicillin Treat Abscess Best Rx Online Otc Prednisone

  6. Aciphex cialis Want To Buy Macrobid 100mg Free Shipping Canada Meds Without A Prescription Buy Propranolol Canada No Prescription

  7. Viagra Nebenwirkungen 100 Viagra Pills Online Buy Cialis E Viagra Effetti online cialis Priligy En Valencia Achat De Cialis En Espagne Cialis Indicacion

  8. Zdravím,
    Prosím o řadu. Potřeboval bych postavit semafory pro kompletní križovatku.(semafor pro auta do čtyřech stran a čtyři semafory pro chodce světla na dvě strany). To celé sladit Aby to fungovalo logicky a nejlépe bez drátů mezi jednotlivými semafory. Jsem naprostý začátečník a nevím zda a jak by to vůbec šlo?

  9. Myslím že na uvedeném obrázku jsou led diody namalovány obráceně 😉
    Zkus jednoduchý prográmek bez tlačítka na kterém mimo jiné poznáš i to, zda jsou ledky obráceně nebo ne. Když ti bude fungovat, tak uvidíš, zda delší dobu ledky svítí a nebo jsou zhasnuté. Správně by měly 3s svítiti a jenom na 1s zhasnout. Pokud to máš naopak, otoč polaritu ledek (a nebo si uprav program což je typické řešení lenochů):

    /* Blikání 3 ledek naráz */

    const int cervena = 13; //const = konstanta, to znamená proměnná pouze pro čtení (nelze ji měnit)
    const int zluta = 12;
    const int zelena = 11;

    void setup ()
    {
    //uvedené piny nastavíme jako výstupní
    pinMode (cervena, OUTPUT);
    pinMode (zluta, OUTPUT);
    pinMode (zelena, OUTPUT);
    }

    void loop()
    {
    digitalWrite(zelena,HIGH); //rozsvítit zelenou led
    digitalWrite(zluta,HIGH); //rozsvítit žlutou
    digitalWrite(cervena,HIGH); //rozsvítit červenou

    delay(3000); // 3 vteřiny počkat (3s = 3000ms)

    digitalWrite(zelena,LOW); //vypneme zelenou
    digitalWrite(zluta,LOW); //vypneme žluté světlo
    digitalWrite(cervena,LOW); //vypneme červenou

    delay(1000); // počkat jenom 1 vteřinu

    }

  10. nevim kde dělám chybu, ale při zkopírování mi to svítí jak na diskotéce a ne jak semafor 😀 červená se zelenou, všechny najednou, zelená se žlutou…

  11. Řidič zatím nejsem, takže přicházím do styku jen s těmi pro chodce. Kód tedy opravím, aby výsledný semafor fungoval jako ve skutečnosti. Děkuji za upozornění :-)

  12. Jenom postřeh z reality – běžný semafor v ČR funguje tak, že po červené se rozsvítí oranžová, ale stále ještě svítí červená. To je pro to, aby se poznalo, zda po oranžové bude následovat zelená (pokud svítí oranžová + červená) a nebo červená (pokud svítí oranžová samostatně) 😉

Napsat komentář

Vaše emailová adresa nebude zveřejněna.