5 SO pulsen naar 1 SO omvormen (Arduino code)

1
las op het forum van ZTATZ dat er nogal vraag was naar dit
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
}
}
}
}
modedit RuudM: titel ter verduidelijking aangepast