Pro výuku žáků zš a sš jsem vytvořil panel křižovatka, na kterém si lze odladit program napsaný v Arduino IDE. Na panelu se dá sestavit (programově) reálná křižovatka (auta a chodci s tlačítkem).
DONATE
- 3D semafory, 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 křižovatky) Arduino desky jsou vedeny vodiče přímo do semaforu, 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 semafory
Semafory 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 semaforu je vložena LED dioda průměr 5mm (rudá, žlutá, zelená).
Všechny 3D díly jsou slepeny vteřinovým lepidlem...
Panel křižovatky
Video - křižovatka v provozu
V příloze (donate přístup) jsou zdrojové programy pro Arduino IDE
- Semafor 1
přiřazení vstupů a výstupů
// semafor auta 1
#define SA1_ruda 12
#define SA1_zlut 8
#define SA1_zele 4
// semafor auta 2
#define SA2_ruda 13
#define SA2_zlut 9
#define SA2_zele 5
// semafor chodci 1
#define SCH1_ruda 11
#define SCH1_zele 3
// semafor chodci 2
#define SCH2_ruda 10
#define SCH2_zele 2
// tlacitko chodci 1
#define TLCH1 0
// tlacitko chodci 2
#define TLCH2 1
- Semafor 2
nastavení vstupů a výstupů
pinMode(SA1_ruda,OUTPUT);
pinMode(SA1_zlut,OUTPUT);
pinMode(SA1_zele,OUTPUT);
pinMode(SA2_ruda,OUTPUT);
pinMode(SA2_zlut,OUTPUT);
pinMode(SA2_zele,OUTPUT);
pinMode(SCH1_ruda,OUTPUT);
pinMode(SCH1_zele,OUTPUT);
pinMode(SCH2_ruda,OUTPUT);
pinMode(SCH2_zele,OUTPUT);
pinMode(TLCH1,INPUT_PULLUP);
pinMode(TLCH2,INPUT_PULLUP);
- Semafor 3
zastaveni provozu a zklidnění provozu po zapnutí napájení
// zastavit veskery provoz
digitalWrite(SA1_ruda,HIGH);
digitalWrite(SA2_ruda,HIGH);
digitalWrite(SCH1_ruda,HIGH);
digitalWrite(SCH2_ruda,HIGH);
// ostatni svetla opravdu vypnout
digitalWrite(SA1_zlut,LOW);digitalWrite(SA2_zlut,LOW);
digitalWrite(SA1_zele,LOW);digitalWrite(SA2_zele,LOW);digitalWrite(SCH1_zele,LOW);digitalWrite(SCH2_zele,LOW);
- Semafor 4
fáze světel všech semaforů (funkce switch)
- Semafor 5
test přepínání světel křižovatky (ovládání funkce switch)
- Semafor 6
přepínání světel dle zadaných časů (časovač a funkce millis)
- Semafor 7
finální verze křižovatky, tlačítka pro chodce (pokud svítí autům zelená a chodec stiskne tlačítko dojde k přechodu cyklu volno pro chodce)
Ve zdrojovém kódu si lze snadno editovat časy křižovatky pro vlastní potřebu
// nastaveni intervalu semaforu
// auta ruda v sec
#define auta_ruda 20
// auta ruda+zluta v sec
#define auta_ruda_zluta 2
// auta zluta v sec
#define auta_zluta 3
// auta zelena v sec
#define auta_zelena 20
// chodci zelena v sec
#define chodci_zelena 5
// bezpecnostni prodleva auta/chodci
#define bezp_prodleva 2
Nikde v kódu není použita funkce delay()! vše je řešeno čistě pomocí časovačů.