Arduino UNO výukový modul přejezd

Pro výuku žáků zš a sš jsem vytvořil panel železniční přejezd, na kterém si lze odladit program napsaný v Arduino IDE. Na panelu se dá sestavit (programově) reálný železniční přejezd (bez závor).

DONATE

  • 3D přejezdníky, zdrojové programy pro Arduino, obrázek - maska pro zalaminování a nalepení (OpenScad, STL, Gcode, Arduino zdroj, Proficad)

Schéma zapojení

Schéma je vytvořené velice jednoduše - z daných pinů (uvedeny na obrázku přejezdu) Arduino desky jsou vedeny vodiče přímo do přejezdníků, kde je umístěn rezistor 220 Ohm a LED dioda (každá LED má svůj rezistor). Společný vývod (katody) je zapojen na pin GND. Tlačítka jsou připojeny jedním vývodem na GND a druhým vývodem přímo na piny Arduino desky (využívají se vnitřní PULL UP rezistory přímo v procesoru).

3D přejezdníky

Přejezdníky jsou vytvořeny v programu OpenScad a jsou vytištěné z PETG materiálu na 3D tiskárně Průša MKII. Do každého je vložena LED dioda průměr 5mm (2x rudá, bílá). Ve zdrojovém kódu OpenScadu si lze zvolit zda chceme tisknout semafor pro auta, pro chodce, přejezdník pro přejezd...

sem1

sem2

Panel přejezdu

DSC 1576

DSC 1577

DSC 1578

DSC 1579

DSC 1580

DSC 1582

Video - přejezd v provozu

V příloze (donate přístup) jsou zdrojové programy pro Arduino IDE

  • Přejezd 1

přiřazení vstupů a výstupů

// prejezd 1
#define A_ruda 10
#define A_ruda2 11
#define A_bila 8
// prejezd 2
#define B_ruda 12
#define B_ruda2 13
#define B_bila 9

// tlacitko smer 1
#define TL1 0
// tlacitko smer 2
#define TL2 1

  • Přejezd 2

vypnutí výstupů

// nastavit jako vystupy
pinMode(A_ruda,OUTPUT);
pinMode(A_ruda2,OUTPUT);
pinMode(A_bila,OUTPUT);
pinMode(B_ruda,OUTPUT);
pinMode(B_ruda2,OUTPUT);
pinMode(B_bila,OUTPUT);

// nastavit jako vstupy
pinMode(TL1,INPUT_PULLUP);
pinMode(TL2,INPUT_PULLUP);

// kontrolka stisknuti tlacitek
pinMode(6,OUTPUT);

// vypnuti vystupu
digitalWrite(A_ruda,LOW);
digitalWrite(A_ruda2,LOW);
digitalWrite(A_bila,LOW);
digitalWrite(B_ruda,LOW);
digitalWrite(B_ruda2,LOW);
digitalWrite(B_bila,LOW);

  • Přejezd 3

blikání rudých LED diod pomocí časovače a funkce switch

  • Přejezd 4

přidání tlačítek (vstupy)

  • Přejezd 5, 6

finální přejezd s automatickým ukončením po daném čase

Ve zdrojovém kódu si lze snadno editovat časy přejezdu pro vlastní potřebu

// rychlost prepinani rudych svetel
#define Prepinej_ruda 1000
// rychlost prepinani bilych svetel
#define Prepinej_bila 2000
// automaticke vypnuti po teto dobe (pokud neni aktivni tlacitko 1 nebo 2)
#define Auto_off_interval 30000

Nikde v kódu není použita funkce delay()! vše je řešeno čistě pomocí časovačů.