Ik weet niet of XpressNet dat af handelt maar DCC kent maar 126 normale rijstappen en daarnaast STOP en E-STOP. Maar misschien dat XpressNet de E-STOP niet zomaar door stuurt, dat weet ik niet.
Wat betreft de PCB foutjes:2a) Bij een Nano mag je gewoon USB aansluiten terwijl de Nano extern 5V heeft. Een diode (D1 in het originele schema) zorgt voor de scheiding
2b) Je hoef ook geen jumper voor de MAX toe te voegen. Deze kent namelijk ook een HIGH Z mode. Gewoon !RE en DE ook aan de Arduino hangen. En dan wel !RE met een pull up en DE met een pull down. Op die manier is de MAX is HIGH Z na een Arduino reset en kan je gewoon programmeren. Overigens heb ik no nooit iemand zo de !RE en DE zien aansluiten via een weerstand en een condensator in serie... Wat is daar de gedachten achter?
En zelf ben ik een enorme fan van een Arduino met headers op een board te zetten ipv zelf te klooien met een ATmega. Wel de Pro Mini dan altijd. Voor de kosten kan ik het niet zelf bouwen en ik krijg er gratis 2 extra PCB layers bij Win-win!
En klein puntje voor de software We leven in 2018 en de compiler is C++. Een macro (#define) voor het definiëren van pinnen en constanten is niet meer van deze tijd
Commentaar bij je code is goed! Maar herhaal jezelf niet in het commentaar. Details kan je prima in de code lezen.
@MichMich, sorry voor het vervuilen van het draadje! Als je het vervelend vind (of het verder uit de hand loopt) zal ik vragen het af te laten splitsen.
@Michael, veel respect hoe je dit gedaan hebt! Ik ben recent ook door dit forum aangestoken om met arduino's te prutsen en jouw uitleg helpt daar ook enorm bij. Bedankt!
Nu zelf mijn "lab" wat meer op orde maken en kan ik ook weer fijn prutsen
maar ik moet zeggen dat ik het ontwerpen van een SMD pcb met alles on board meer voldoening geeft. Bijkomend voordeel is dat je dan meteen een hoop leert over het gebruikte schema. Voor de kosten hoeven we het niet te laten.
Haha... je hebt helemaal gelijk! Old habits die hard. Net als dat ik er in javascript niet aan kan wennen om `const` en `let` te gebruiken ipv `var`. Maar de eerst volgende keer dat ik gedachteloos #define ipv `const int` typ, weet ik zeker dat ik even aan je denk!
Dat is inderdaad een enorme valkuil voor veel developers. Wanneer ik commentaar moet toevoegen om iets toe te lichten is dat voor mij vaak een reden om te kijken of het niet simpeler kan. (Al voeg ik voor mijn blog-code vaak toch extra commentaar toe om het nog eens te verduidelijken. Zou niet nodig moeten zijn ...)
//loop 5 timesfor(byte i = 0; i < 10; i++{ //...}
Ga niet "prematuur optimaliseren". Zorg eerst dat de code doet wat je wil dat het doet. Optimaliseren kan altijd nog.
Nee hoor, absoluut niet. Dit is precies waar dit draadje voor is.
Ik denk dat dit nog de grootste uitdaging is voor de meeste hobbyisten...
Nu rest mij alleen nog één ding, het een keer in het echt zien