Hallo liebes Forum!
Und ganz besonders:
Hallo Doc!
Ich möchte endlich mal den Umgang mit Strukturen lernen, aber das Brett vor meinem Kopf hindert mich mal wieder daran, das Prinzip zu verstehen.
Zum Üben habe ich mir einen "großflächigen" Sketch mit simpelster Funktion gezimmert, den ich (wenn möglich mit Hilfe) Stück für Stück (und hoffentlich für andere, die ebenfalls Bretter vorm Kopf haben nachvollziehbar) umbauen möchte.
DocArduino hat mir ja schon einen Sketch mit Strukt vorgestellt, aber leider fehlt mir da ein Meter Verständniss.
Bitte zerreißt mich nicht dafür, das hat nichts mit Faulheit zu tun, eher mit Begriffsstutzigkeit.
Ich hoffe, es macht bald Klick...
Also, hier der simpel-Code, den ich optimieren möchte:
/*
* struct Lernsketch
*/
int Anzahl = 3; // Anzahl der Taster/ LED
int Taster1 = 2;
unsigned long Entprell1 = 0;
int LED1 = 3;
bool LEDMerker1 = LOW;
bool TasterStatus1 = LOW;
bool TasterMerker1 = LOW;
int Taster2 = 4;
unsigned long Entprell2 = 0;
int LED2 = 5;
bool LEDMerker2 = LOW;
bool TasterStatus2 = LOW;
bool TasterMerker2 = LOW;
int Taster3 = 7;
unsigned long Entprell3 = 0;
int LED3 = 7;
bool LEDMerker3 = LOW;
bool TasterStatus3 = LOW;
bool TasterMerker3 = LOW;
int Entprellpause = 200;
void setup() {
pinMode(Taster1, INPUT);
pinMode(Taster2, INPUT);
pinMode(Taster3, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop() {
//Taster1************************************************************
TasterStatus1 = digitalRead(Taster1);
if(TasterStatus1 == HIGH && TasterMerker1 == LOW)
{
TasterMerker1 == HIGH;
Entprell1 = millis();
}
if((millis() - Entprell1 < Entprellpause) && TasterMerker1 == HIGH && LEDMerker1 == LOW)
{
TasterMerker1 = LOW;
LEDMerker1 = HIGH;
digitalWrite(LED1, HIGH);
}
if((millis() - Entprell1 < Entprellpause) && TasterMerker1 == HIGH && LEDMerker1 == HIGH)
{
TasterMerker1 = LOW;
LEDMerker1 = LOW;
digitalWrite(LED1, LOW);
}
//Taster2************************************************************
TasterStatus2 = digitalRead(Taster2);
if(TasterStatus2 == HIGH && TasterMerker2 == LOW)
{
TasterMerker2 == HIGH;
Entprell2 = millis();
}
if((millis() - Entprell2 < Entprellpause) && TasterMerker2 == HIGH && LEDMerker2 == LOW)
{
TasterMerker2 = LOW;
LEDMerker2 = HIGH;
digitalWrite(LED2, HIGH);
}
if((millis() - Entprell2 < Entprellpause) && TasterMerker2 == HIGH && LEDMerker2== HIGH)
{
TasterMerker2 = LOW;
LEDMerker2 = LOW;
digitalWrite(LED2, LOW);
}
//Taster3************************************************************
TasterStatus3 = digitalRead(Taster3);
if(TasterStatus3 == HIGH && TasterMerker3 == LOW)
{
TasterMerker3== HIGH;
Entprell3 = millis();
}
if((millis() - Entprell3 < Entprellpause) && TasterMerker3 == HIGH && LEDMerker3 == LOW)
{
TasterMerker3 = LOW;
LEDMerker3 = HIGH;
digitalWrite(LED2, HIGH);
}
if((millis() - Entprell3 < Entprellpause) && TasterMerker3 == HIGH && LEDMerker3 == HIGH)
{
TasterMerker3 = LOW;
LEDMerker3 = LOW;
digitalWrite(LED3, LOW);
}
}
Das erste was ich mir wünschen würde wäre, den Pinmode mit einer for- Schleife zu "erschlagen" (wie der Doktor auch schon beschrieben hat).
Leider habe ich noch nicht verstanden, wie das geht.
Bitte seid mir nicht böse....
Könnte ich noch eine Denkhilfe von euch bekommen?