Daar heb ik ooit ook aan gedacht, maar ik ben redelijk gepokt en gemazeld in het gebruik van TCP/IP en toen besloten dat er toch wel wat issues mee zijn. Je krijgt met adressering problemen te maken dus moet je ook zaken al DHCP of ARP implementeren. Ik ben bang dat de overhead toch iets te heftig is voor de huidige PIC's of Arduino's. Lees mijn Canbus draadje.
wifi
Misschien zou een mooie (tussen) oplossing zijn om een centrale te hebben die alles op de baan afhandelt DCC, loconet, S88, etc. Maar ook een netwerk (LAN) interface heeft, via RJ45 of wifi maakt niet uit. Al gaat mijn voorkeur altijd uit naar een draad.Die centrale zou dan over de netwerkverbinding via websockets en of API alle input en output van de baan beschikbaar kunnen maken. Dan kan je er makkelijk met elk apparaat met een netwerkverbinding tegen praten.
https://www.dccinterface.com/product/arduino-model-railway-dcc-interface/
Vragen ze gewoon 8 euro voor... Bizar.
Dit heet een Yamorc DCC centrale, komt binnenkort uit als het goed is.
Voor mijne vraag ik ~1/3e van die prijs . Ik heb er 8 liggen atm.
void setup(){ Serial.begin(115200) ; Serial.println("booted") ; pinMode( 2, INPUT_PULLUP ) ;}void loop(){ if( digitalWrite( 2 ) == HIGH ) Serial.println("OFF") ; else Serial.println(" ON") ;}
Code: [Selecteer]void setup(){ Serial.begin(115200) ; Serial.println("booted") ; pinMode( 2, INPUT_PULLUP ) ;}void loop(){ if( digitalWrite( 2 ) == HIGH ) Serial.println("OFF") ; else Serial.println(" ON") ;}
void setup(){ Serial.begin(115200) ; Serial.println("booted") ; pinMode( 2, INPUT_PULLUP ) ;}void loop(){ if( digitalRead( 2 ) == HIGH ) Serial.println("OFF") ; else Serial.println(" ON") ;}
void setup(){ Serial.begin(115200) ; Serial.println("booted") ; pinMode( 2, INPUT_PULLUP ) ;}void loop(){ if( digitalRead( 2 == HIGH )) Serial.println("OFF") ; else Serial.println(" ON") ;}
#include <NmraDcc.h>NmraDcc Dcc ; // declare DCC object#define DCC_PINconst int dccPIN = 2;const int myAddress = 20 ;const int nServos = 4 ;void notifyDccAccTurnoutOutput( uint16_t Addr, uint8_t Direction, uint8_t OutputPower ) // called from DCC library when a turnout is set{ Serial.print("x"); if( OutputPower == 0 ) return ; // often you receive 2 times the same packet, this is ment to control the pulse length for coil drives. We don't use this. Serial.print("Addr: "); Serial.print(Addr); Serial.print(" Direction: "); Serial.println(Direction);}void setup(){ Serial.print("y"); Dcc.pin(0, dccPIN, 1); Dcc.init( MAN_ID_DIY, 10, CV29_ACCESSORY_DECODER | CV29_OUTPUT_ADDRESS_MODE, 0 ); /* for( int i = 0 ; i < nServos ; i ++ ) { servo[i].begin() ; }*/}void loop(){ Dcc.process(); Serial.print("z"); /* for( int i = 0 ; i < nServos ; i ++ ) { //servo[i].sweep() ; // keep updating all servo motors }*/}
#include <NmraDcc.h>#include "EEPROM.h"NmraDcc Dcc ; // declare DCC object#define DCC_PIN 2const int myAddress = 20 ;void notifyDccAccTurnoutOutput( uint16_t Addr, uint8_t Direction, uint8_t OutputPower ) // called from DCC library when a turnout is set{ if( OutputPower == 0 ) return ; // often you receive 2 times the same packet, this is ment to control the pulse length for coil drives. We don't use this. Serial.print("Addr: "); Serial.print(Addr); Serial.print(" Direction: "); Serial.println(Direction);}void setup(){ Serial.begin(115200); Dcc.pin(0, DCC_PIN, 1); Dcc.init( MAN_ID_DIY, 10, CV29_ACCESSORY_DECODER | CV29_OUTPUT_ADDRESS_MODE, 0 );}void loop(){ Dcc.process();}
Het is wel zo dat ik alles 2x binnen krijg en dat er 400 wordt opgeteld bij elk adres.
Dcc.pin(0, DCC_PIN, 1);