@jabjab
zonder je code te zien kan ik wel proberen antwoord te geven.
Wat de rest zegt is waar je kunt ze op een andere ingang zetten, let wel er zijn bepaalde pinnen geschikt voor het lezen van high/low en bepaalde totaal niet.
Het beste wat je kunt doen is bovenin je variabelen zetten op basis van de pinnen die je gebruikt, zoiets:
#define TABLESAW D5 // Relay Pin on Board (D5)
#define ROUTER D1 // REED pin on Board (D1)
je maakt een functie aan als dit
void movePort(int forPin) {
switch (forPin) {
case TABLESAW:
<INSERT MOTOR COMMAND HERE>
break;
case ROUTER:
<INSERT MOROR COMMAND HERE>
break;
default:
break;
}
}
Je weet op dit moment al welke poort open is en welke dicht is voeg dit toe aan je switch cases zodat je de statussen hiervan goed bijhoud.
je maakt dan nog een extra functie om te controleren of de knop ingedrukt is
void readButtonTableSaw() {
delay(500); // voor een momentary switch niet echt ideaal speel hier even een klein beetje mee.
int switchState = digitalRead(TABLESAW);
if (currentTableSawState != switchState) { // je controleert of de status anders is dan voorheen anders voer je niks uit
currentTableSawState = switchState;
movePort(TABLESAW);
}
}
void readReedRouter() {
delay(500); // voor een momentary switch niet echt ideaal speel hier even een klein beetje mee.
int switchState = digitalRead(ROUTER);
if (currentRouterState != switchState) { // je controleert of de status anders is dan voorheen anders voer je niks uit
currentRouterState = switchState;
movePort(ROUTER);
}
}
in je loop hoef je dan slechts de read functies aan te roepen om te zorgen dat ze constant gechecked worden.
Mogelijk zijn er efficiëntere manieren om dit in Arduino, ik ben zelf een iOS developer live cycles en opties zijn nogal anders dan in Arduino, maar op deze manier heb ik zelf alles werkend gekregen tot nu toe.