tot 5 SO pulsen (wat ik nodig heb) verbinden met een arduino bord en via een 4K7 weerstand en een transistor
naar de GPIO
onderstaande is de arduino code die AI voor mij gemaakt heeft
en doet het prima
Code: Selecteer alles
const int inputPins[5] = {2, 3, 4, 5, 6};
const int outputPin = 13;
bool lastStates[5];
bool pulsePending[5]; // Puls aangevraagd per ingang
unsigned long pulseTimers[5]; // Tijdstip per puls
bool pulseActive = false;
unsigned long lastPulseTime = 0;
int currentPulseIndex = -1; // Welke ingang is nu bezig
void setup() {
for (int i = 0; i < 5; i++) {
pinMode(inputPins[i], INPUT_PULLUP);
lastStates[i] = digitalRead(inputPins[i]);
pulsePending[i] = false;
pulseTimers[i] = 0;
}
pinMode(outputPin, OUTPUT);
digitalWrite(outputPin, LOW);
}
void loop() {
unsigned long currentTime = millis();
// 1. Detecteer dalende flank per ingang
for (int i = 0; i < 5; i++) {
bool currentState = digitalRead(inputPins[i]);
if (lastStates[i] == HIGH && currentState == LOW) {
pulsePending[i] = true; // Vraag puls aan
}
lastStates[i] = currentState;
}
// 2. Beheer pulsuitvoer
if (pulseActive) {
if (currentTime - lastPulseTime >= 100) {
digitalWrite(outputPin, LOW);
pulseActive = false;
lastPulseTime = currentTime;
currentPulseIndex = -1;
}
} else {
// Zoek volgende puls in wachtrij
for (int i = 0; i < 5; i++) {
if (pulsePending[i] && currentTime - lastPulseTime >= 100) {
digitalWrite(outputPin, HIGH);
pulseActive = true;
pulsePending[i] = false;
lastPulseTime = currentTime;
currentPulseIndex = i;
break; // Eén puls tegelijk
}
}
}
}