Použité komponenty:
1 x Arduino Pro Mini (Nano) - Aliexpress (cca 35 CZK klon)
4 x IR (infrared) modul
1 x odpor 680R pro LED
1 x LED dioda (místo led pak spínací prvek, např. 5V relé)
4 x IR (infrared) modul
1 x odpor 680R pro LED
1 x LED dioda (místo led pak spínací prvek, např. 5V relé)
Program:
Stav klidu - nic se neděje
1 funkce z leva - vlak sepne A (nic se nestane) dále sepne B (spustí se výstražníky) -> projede sledovaným úsekem a následně sepne C (nic se nestane) a sepne D (vypne výstražníky)
2 funkce z prava - vlak sepne D (nic se nestane) dále sepne C (spustí se výstražníky) -> projede sledovaným úsekem a následně sepne B (nic se nestane) a sepne A (vypne výstražníky)
3 funkce při posunu (z leva) - vlak sepne A (nic se nestane) dále sepne B (spustí se výstražníky) -> neprojede celým sledovaným úsekem a následně se vrací a sepne B (nic se nestane) a sepne A (vypne výstražníky) - totáž platí při vjezdu z pravé strany do D a C
Poznámka - vlak může zastavit i v poloze kteréhokoli čidla, v tom momentě se zaznamenává pouze poslední funkce a při sepnutí dvou čidel zároveň má přednost to čislo první sepnuté.
Z důvodu posunu jsou použita 4 čidla, která hlídá železniční přejezd v obou směrech vždy pro vjezd a tak i výjezd. Díky tomuto je možný 100% posun s automatickým ovládáním přejezdových výstražníků.
Z důvodu posunu jsou použita 4 čidla, která hlídá železniční přejezd v obou směrech vždy pro vjezd a tak i výjezd. Díky tomuto je možný 100% posun s automatickým ovládáním přejezdových výstražníků.
Funkce viz. video (led indikuje sepnutí přejezdového zařízení):
int ledPin = 8;
int irApin = 3; //vypínací
int irBpin = 2; //spínací
int irCpin = 4; //spínací
int irDpin = 5; //vypínací
byte leds = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(irApin, INPUT);
pinMode(irBpin, INPUT);
pinMode(irCpin, INPUT);
pinMode(irDpin, INPUT);
}
void loop()
{
if (digitalRead(irApin) == LOW)
{
digitalWrite(ledPin, HIGH);
}
if (digitalRead(irBpin) == LOW)
{
digitalWrite(ledPin, LOW);
}
if (digitalRead(irCpin) == LOW)
{
digitalWrite(ledPin, HIGH);
}
if (digitalRead(irDpin) == LOW)
{
digitalWrite(ledPin, LOW);
}
}
Zdravím, to by bylo také dobré na přepínání výhybek. Pokud by vlak vjel na určitou kolej, tak by se výhybka přehodila tak, aby na stejný úsek nemohl další vlak.
OdpovědětSmazata pak by vjel další a další a až by koleje došly, tak by se stalo co? program by zhavaroval? srazily by se vlaky? zůstal by stát (navěky) na vjezdu?
OdpovědětSmazat