We gaan verder met SEQUENCE, ROUTE en AUTOMATION. Daarmee groeperen we opdrachten, waarmee we interessante dingen kunnen doen. Maar er zijn wat kleine verschillen tussen deze drie belangrijke opdrachten
SEQUENCE(ID)
Gewoon een lijst met opdrachten die in volgorde moeten worden gedaan. Deze dingen kunnen o.a. zijn:
- Trein(en) laten rondrijden
Wissel(s) omzetten
Verlichting van een bedieningspaneel bedienen
Animatie automatiseren
Sensoren uitlezen
Voorwaarden toekennen (bv wachttijden)
Een toepassings kan bijvoorbeeld zijn: een sensor die een trein detecteert, een knop die wordt ingedrukt of een periode die verstrijkt.
Code: Selecteer alles
SEQUENCE(1) // Lljst met opdrachten met ID=1
FWD(40) // vooruit met snelheid 40
DELAY(15000) // duur 15 seconden
STOP // stop de trein
DONE // einde van SEQUENCE(1)
ROUTE(ID,"Naam van de Route")
Een ROUTE is hetzelfde als een SEQUENCE, maar deze wordt zichtbaar gemaakt in JMRI en EngineDriver met een herkenbare naam. De gebruiker op een knop kan drukken om de reeks uit te voeren. Ook zonder JMRI en/of EngineDriver kan deze opdracht prima worden gebruikt. Het kan het script leesbaarder/herkenbaar maken. ROUTE kan het beste worden gebruikt om een reeks wissels en seinen in te stellen om een route door de baan te maken.
Code: Selecteer alles
ROUTE(2, "Van hoofdbaan naar Kolenbunker") // Lijst met opdrachten met ID=2 en herkenbare naam.
THROW(1) // zet wissel met ID=1 afbuigend
CLOSE(6) // zet wissel met ID=7 rechtuit
DONE // einde van ROUTE(2)
AUTOMATION is ook een SEQUENCE die zichtbaar wordt in JMRI en EngineDriver. Maar ook zonder JMRI en/of EngineDriver kan deze opdracht weer het script leesbaard/herkenbaar houden. De gebruiker kan hiermee vanuit EngineDriver/JMRI een lok toewijzen aan het stuk EX-RAIL script en deze laten wegrijden volgens de stappen in de AUTOMATION.
Code: Selecteer alles
AUTOMATION(3,"Rondjes rijden")
FWD(45) // vooruit met snelheid 45 (van 127)
AT(40) // als sensor(40) opkomt/activeert
STOP // stop de trein
DELAYRANDOM(1000,15000) // willekeuruge wachttijd tussen 1 en 15 seconden
FWD(30) // vooruit met snelheid 30
AFTER(40) // nadat sensor 40 afvalt/deactiveert
FOLLOW(3) // ga verder met SEQUENTIE/ROUTE/AUTOMATION 3
DONE // einde van de AUTOMATION
LET OP: AUTOMATION, SEQUENCE en ROUTE maken gebruik van dezelfde ID-ruimte. ROUTE(1) en AUTOMATION(1) in 1 script wal niet werken zoals je verwacht omdat het ID dan naar 2 verschillende routines verwijst.
Gebruik van de routines
Als je de bovenstaande voorbeelden opload naar de Arduino zal er weinig gebeuren. Er is geen lok toegewezen aan de routines.
ROUTE(1) kun je aanroepen in het script door in het script gebruik te maken van de opdracht SENDLOCO(locoID,routeID) of vanuit de SerialMonitor van de Arduino IDE met de opdracht </ START locoID route_id>. In de Serial Monitor kun je ook kijken welke routes er zijn door </ ROUTES> in te geven. Het resultaat ziet er wat cryptisch uit, maar geeft wel enig inzicht of het script gelukt is.
Tot zover. Volgende keer meer over wissel (Turnouts) en seinen (Signals).