Aangezien er nog geen frontend is, maakt ik de machinestates van de statemachine in Excel en klop ze dan over in de database. Lijkt omslachtig, maar toch is deze methode sneller dan programmeren in C.
stateFunction( stateZ ){ entryState { Serial.println("entering state Z"); someTimeT = 50 ; // telt af naar 0 } onState { if( !someTimeT) exitFlag = true; } exitState { Serial.println(F("time expired")); return true; }}// STATE MACHINEextern bool demo() // dit komt 1 op 1 over met het bollen diagram{ STATE_MACHINE_BEGIN State(stateX) { nextState( stateY, 0 ); } // je kan die 0 aanpassen om een vertraging te creeren, vollegdig optioneel State(stateY) { if( customVar == ERROR) nextState( stateZ, 0 ); // je kan hier een selectie naar welke state je wilt springen.. else nextState( stateZ, 0 ); } // waarom en wanneer State(stateZ) { nextState( stateX, 0 ); } STATE_MACHINE_END}
Als elke decoder WiFi heeft, wil je dan niet het aansturen en uitlezen van de decoders ook doen via WiFi? Dan maak je bijvoorbeeld een brug tussen WiFi en DCC en/of Loconet of Xpressnet. Dan hoef je geen DCC of Xpressnet/Loconet te bekabelen naar je accesoires.
Ik heb nog wel 2 opmerkingen of eigenlijk ideeen waar je ook misschien iets aan heb. Als elke decoder WiFi heeft, wil je dan niet het aansturen en uitlezen van de decoders ook doen via WiFi? Dan maak je bijvoorbeeld een brug tussen WiFi en DCC en/of Loconet of Xpressnet. Dan hoef je geen DCC of Xpressnet/Loconet te bekabelen naar je accesoires. Alleen 12/18V, alle informatie van DCC artikelen en of terugmelders kan je dan via wifi naar je centrale node sturen die dan aan men's centrale is bekabeld. Het is slechts een idee natuurlijk, ik snap als je ontwerp al zover is dat dit out of the equation is.
Het zijn inderdaad een stel C++ classes. Zoals al eerder genoemd ben ik een amateurprogrammeur (met een voorkeur voor C) en dit is het eerste echt serieuze sprong in C++. Leren terwijl je het doet, met het bijbehorende vallen en opstaan. Ik heb nooit wat gedaan met UML en bijbehorende methodes, dus daar kan ik weinig in betekenen.
Maar ik kan me tijd maar 1 keer spenderen.
Input modules
Laten we een keer overleggen of we samen wat hardware kunnen maken (ik denk eraan om wat met KiCad te proberen)
Je gebruikt het woord input maar je zegt ook DCCDCC is output only. Ik begrijp dat je MCP23017 als output modules moeten fungeren om wissels te kunnen schakelen
Ik gebruik de MCP23017 alleen voor de knoppen ingangen.
De uitgangen zijn allemaal de PCA9685 modules. Die zijn zo verdraaid handig, veelzijdig en spotgoedkoop...
Wat ik me nu afvraag, waar gebruik je de knoppen precies voor? Als ik het goed snap, wil je ze gebruiken om direct wissels te schakelen (in schakelpaneel vorm) die aan dezelfde I2C bus liggen waarbij de processor voor je regelt welke wissel er bij welke knop geschakeld moet worden? En dat de je wissels dan ook nog eens met DCC kan aansturen?
Ik neem aan je die breakout boards gebruikt met die 16 rood/geel/zwarte servo connectors? Die heb ik zelf ook, geweldige dingen. Ik zou zelf voor jouw toepassing voor deze dingen (en dit komt zojuist tijdens het tikken in me op) shields maken die je op deze connectors kan prikken. Of eigenlijk eerder een base waar je de pca in kan prikken daar de baseboard groter zal zijn in formaat. Dan kan je dit breakout board, wat is toegewijd aan servo motors, omtoveren tot een board voor relais/magneetwissels/ledstrips ofwel al het andere. Je kan natuurlijk een PCB ontwerpen waar de pca chip los op zit, maar dan moet je SMD gaan solderen. Keuzes, Keuzes, Keuzes.En met dupont kabels prik je hem zo aan de Pca waarbij je niet eens hoeft te solderen