====== TRAIN DU ZOO ======
* **Concepteur :** [[utilisateurs:amelaye|amelaye]]
* **Nombre de Stations :** 1
* **Lancement :** 2020
===== Présentation =====
{{ ::screenshot_20210110_184336.png?nolink&600 |}}
C'est un trajet relativement court qui attend le visiteur mais qui vaut le coup !
Prenez place à bord de ce train à l'ancienne, réalisé avec [[https://advtrains.de|Advanced Trains]], qui fait le tour du jardin zoologique. Il est entièrement automatisé.
{{ ::screenshot_20210110_184739.png?nolink&600 |}}
Ici il n'y a qu'un seul train disponible, qui arrive en gare toutes les **5 minutes**. Il attend **2 minutes** en gare et part faire le tour du parc en **3 minutes** à la vitesse de **11kms/heures**, de quoi vous laisser le temps de profiter du spectacle !
Aux environs, le site est sécurisé progressivement pour vous préserver d'un écrasement éventuel 8-) !
===== Ressources Techniques =====
Cette rubrique permet de comprendre et de reproduire chez vous certains aspects intéressants et techniques du serveur.
==== LuaController : timing ====
Voici le code que j'ai utilisé pour programmer le panel d'attente. //pin.d// est le branchement avec le **Detector Rail**, //"gare_zoo"// est le nom du **panel Digilines**.
mem.travel_time =151
mem.stations = {}
mem.stations.here = "Zoo"
mem.stations.there= "Zoo"
digiline_send("gare_zoo", string.format("To %s ->", mem.stations.there))
if (pin.d) then
mem.train_arrived_time = os.time()
digiline_send("gare_zoo", "Train a quai !")
else
if (mem.train_arrived_time ~= nil and mem.train_arrived_time ~= "") then
time = mem.travel_time - os.difftime(os.time(), mem.train_arrived_time)
minutes = math.floor(time/60)+3 -- une minute de plus pour le delai
digiline_send("gare_zoo", string.format("Prochain depart dans %s minutes.", minutes))
else
digiline_send("gare_zoo", "Arrivee imminente ! (ou pas ...)")
end
end
interrupt(1, "gareZooStation_Exclusive")
==== Passage piétons ====
Des croix de St André sont posées au niveau du passage. Elles portent le nom //"zoo_in"// et //"zoo_out"//, nommées grâce au **Passive Component Naming Tool**. Deux **rails LUA Automation** sont posés de part et d'autre pour détecter le passage du train et exécuter le code suivant :
setstate("zoo_in", "on")
setstate("zoo_out", "on")
... quand le signal doit s'allumer (le train arrive) ...
setstate("zoo_in", "off")
setstate("zoo_out", "off")
Quand le signal doit s'éteindre (le train est parti).