Aquest post explica com augmentar el nombre de senyals controlables d'una maqueta de tren desde iTrain de forma econòmica amb un cost aproximat de 0,7€/sortida mitjançant DCC-Ex.
Les locomotores i els encreuaments els controlo amb l'aplicació de ROCO Z21 o desde iTrain. El problema és que per controlar senyals de trànsit i llums d'edificis per crear animacions amb Z21 necessito un Z21 switch DECODER(10836) que val uns 80 € per 8 sortides independents digitals (8 senyals de 2 colors), 10 €/sortida. iTrain permet tenir dues controladores i, per tant, puc afegir una EX‑CommandStation (EX-CS) per controlar senyals i lluminàries mantenint la Z21 per la resta de funcionalitats. Una EX-Command station sense sortida DCC (una Arduino MEGA) té un cost aproximat de 22€ i de forma simple tens unes 32 sortides independents (0,7€/sortida).
Basic EX-CommandStation
Per controlar llums necessitem una EX-Command Station (no necessita el shield del motor), per tant, només es necessita una Arduino MEGA. El primer pas és assegurar que podem controlar els LEDs des d'EX-CS. Utilitzant les connexions de la documentació (Active Low Signals) i el fitxer de configuració a adjunt podem comprovar, utilitzant el controlador web que en activar l'animació "1" DOS LEDs fan una pampalluga. La càrrega d'un fitxar de configuració és fàcil mitjançant l'instalador oficial EX-Installer.

// myAutomation.h - Generated by EX-Installer v0.0.20 for EX-CommandStation v5.4.18-Prod
AUTOSTART
POWERON
DONE
// ==============
// SINGALS
// ==============
SIGNAL(28,0,30) // ID is 28
// ==============
// AUTOMATIONS Verification of SETUP
// ==============
AUTOMATION(1,"Red and Green")
GREEN(28)
DELAY(1500)
RED(28)
DELAY(1500)
DONE
// ==============
// MAP OF DCC ACCESSORY TO DCC-EX Signal (Easier to maintain) OPTION A
// ==============
ONACTIVATEL(60)
GREEN(28)
DONE
ONDEACTIVATEL(60)
RED(28)
DONE
// ==============
// MAP OF DCC ACCESSORY TO DCC-EX PINS (no need to define signals) OPTION B
// ==============
ONACTIVATEL(61)
SET(28)
RESET(30)
DONE
ONDEACTIVATEL(61)
RESET(28)
SET(30)
DONE

Com integrar amb iTrain
iTrain no pot enviar a EX-SC ordres d'engegar llums utilitzant els identificadors de senyals DCC-EX. iTrain sí que pot enviar ordres a adreces d'accessoris DCC i, per tant, s'ha de fer que EX-SC encengui les llums en rebre aquestes ordres. Per exemple, aquestes línies fan que en activar/desactivar l'accessori amb adreça 60 (que no existeix) es posi el senyal en verd/vermell.
ONACTIVATEL(60) // When receiving DCC-Accessory Addres 60 to HIGH
GREEN(28) // Then turn green signal 28
DONE
ONDEACTIVATEL(60)
RED(28)
DONE

L'opció A explicada és la que he trobat més simple. Una opció B és configurar directament els Pins. És més flexible, ja que permet tenir múltiples LEDs encesos en diferents estats.
NOTA respecte al consum: Posant LEDs petits calents i una resistència 1k Ohm el consum aprox. és d'uns 2mA i, per tant, pot suportar perfectament 32 LEDs independents connectats directament a l'Arduino. En el cas que el consum puges molt es pot baixar el consum fent que la sortida controlar un optoacoblador connectats a una font d'alimentació independent.
