Moin
Ich habe Deine Grundidee für drei Endschalter umgetzt. Der Sketch enthält ein Objekt mit dem Namen LIMITSWITCH. Dieses Objekt enthält die Information über den Eingangspin und den aktuellen Status. Die Stati der Engangspins werden in der loop() ermittelt und stehen dann, zur Verarbeitung mif IF´s usw., zur Verfügung.
//BLOCK COMMENT
// https://forum.arduino.cc/t/mehere-if-abfragen/896928
#define ProjectName "Mehere if Abfragen"
// CONSTANT DEFINITION
// you may need to change these constants to your hardware
const byte Input_[] {A0, A1, A2};
const byte Output_[] {2, 3, 4};
enum {One, Two, Three};
// VARIABLE DECLARATION
struct LIMITSWITCH {
byte pin;
bool state;
} limitSwitch [] {
{Input_[One], 0},
{Input_[Two], 0},
{Input_[Three], 0},
};
// FUNCTIONS
void setup() {
Serial.begin(9600);
Serial.println(F("."));
Serial.print(F("File : ")), Serial.println(__FILE__);
Serial.print(F("Date : ")), Serial.println(__DATE__);
Serial.print(F("Project: ")), Serial.println(ProjectName);
pinMode (LED_BUILTIN, OUTPUT);
for (auto Input : Input_) pinMode(Input, INPUT_PULLUP);
for (auto Output : Output_) pinMode(Output, OUTPUT);
// check outputs
for (auto Output : Output_) digitalWrite(Output, HIGH);
delay(1000);
for (auto Output : Output_) digitalWrite(Output, LOW);
}
void loop () {
unsigned long currentTime = millis();
digitalWrite(LED_BUILTIN, (currentTime / 500) % 2);
// read limitSwitches first
static unsigned long millisScan;
const unsigned long millisDuration {20};
if (currentTime - millisScan >= millisDuration) {
millisScan = currentTime;
for (auto &limitSwitch_ : limitSwitch) {
bool stateNew = !digitalRead(limitSwitch_.pin);
if (limitSwitch_.state != stateNew) limitSwitch_.state = stateNew;
}
}
// ***** Mehere if Abfragen
if (limitSwitch[One].state && limitSwitch[Two].state) digitalWrite(Output_[One], true); else digitalWrite(Output_[One], false);
if (limitSwitch[Two].state && limitSwitch[Three].state) digitalWrite(Output_[Two], true); else digitalWrite(Output_[Two], false);
if (limitSwitch[Three].state && limitSwitch[One].state) digitalWrite(Output_[Three], true); else digitalWrite(Output_[Three], false);
// ***************
}
Ich wünsche Dir einen geschmeidigen Tag und viel Spass beim Programmieren.