Hoi Mark,
Er zat een fout in mijn sketch... Ik heb dat nu en het voorgaande bericht gecorrigeerd (ik was de digitalRead vergeten).
Over de sensors: ik gebruik Hall detectors: die werken ook op magneten. Je hebt ze in digitale (aan/uit) en analoge versies (die je aansluit op de analoge pinnen van de Arduino). Ik gebruik ze allebei.
De digitale werken maar op één pool, dus dan maakt het uit met welke pool de magneet onder de trein zit. Dat kan lastig zijn, maar je kunt het ook gebruiken om bepaalde treinen wel te detecteren en andere niet.
De analoge werken met een waarde die daalt bij een pool, en toeneemt bij de andere. Die gebruik ik zelf om bijvoorbeeld mijn stoomlocs van Diesels te onderscheiden.
Over de laatste sketch die je gepost hebt: het lijkt er op dat je hier met drukknoppen de helderheid van de LED hoger of lager kunt zetten door de PWM (pulsbreedte) te variëren. Dat is niet echt nodig voor het schakelen van relais, lijkt me. Als je er een Relais op zet, dan zal het even duren voor deze aan gaat (als er een voldoende brede puls ~ effectieve spanning is) en ook weer voor dat het relais af valt (als de effectieve spanning voldoende is gedaald).
Over deze
Denk eraan dat je bij een digitale input ook een pullDown of pullUp weerstand moet aansluiten als je een drukknop gebruikt.
Een pullup weerstand is en 1 tot 10 k0hm weerstand van de pin naar de 5V, een pulldown een weerstand naar de GND. Als je drukknop met de GND is verbonden, gebruik je een pullup om zeker te weten dat de pin een "1" aan geeft als de knop niet is ingedrukt. Het omgekeerde doe je met een puldown bij een knop op de 5V, zodat deze "0" is als de knop niet is ingedrukt (ik ga even uit van maak contacten bij de knoppen).
Overigens zijn deze weerstanden niet per se nodig: er zit ook een pull up in de Arduino zelf, die je activeert met het schrijven van een HIGH naar een input pin.
Dan over het aansluiten van de relais: als het goed is kun je deze schakelen met de 5V uitgang van de Arduino. Wel de maximale stroom in de gaten houden (volgens mij kan de spanningsregelaar op de Arduino 500mA aan, bij een inputspanning van 7V). Er zit ook een soort van brug verbinding op zo'n relais blok. Door die te verwijderen moet je een externe stroombron op het relaisblok zetten (met de brug er op, neemt-ie de 5V van de Arduino).
Rob