Hallo zusammen,
ich tüftel schon seit Tagen annem simplen Sketch rum und komm nicht weiter...
Ich hab 4 Taster per pulldown angeschlossen (High am DigitalIn wenn gedrückt. vielleicht sind 1K zu klein?)
Die sollen auswählen welche LEDs blinken bzw wie...
Immer wenn ich den sketch hochlade--> b methode (Modus) 3
und wechseln tut der auch nicht wirklich..soll heissen sobald ich den Taster 2 (modus2) loslasse ists wieder 3
Am liebsten hätte ich auch das er in einer Methode verweilt, solange keine andere Taste gedrückt wird
Schaut mal plz (hängt euch bitte nicht mit den Kommentaren auf, die sind mit codeschnipseln reinkopiert)
int LEDgruen = 5;
int LEDrot = 6; //Das Wort „LEDblau“ steht jetzt für den Wert 6.
//Das Wort „taster“ steht jetzt für den Wert 7.
const int RotModus = 7;
const int GruenModus = 8;
const int AmpelModus = 9;
const int AnModus = 10;
int state;
int sensor;
const int potiPin = A0;
int pwm;
int Modus=0;
void Rot()
{ //Programmabschnitt des IF-Befehls öffnen.
digitalWrite(LEDrot, pwm); //dann soll die LED leuchten
delay (500); //und zwar für für 5 Sekunden (5000 Millisekunden).
digitalWrite(LEDrot, LOW); //danach soll die LED aus sein.
} //Programmabschnitt des IF-Befehls schließen.
void Gruen() //gruenModus
{ //Programmabschnitt des IF-Befehls öffnen.
digitalWrite(LEDgruen, pwm); //dann soll die LED leuchten
delay (5000); //und zwar für für 5 Sekunden (5000 Millisekunden).
digitalWrite(LEDgruen, LOW); //danach soll die LED aus sein.
delay(5000);
} //Programmabschnitt des IF-Befehls schließen.
void Ampel()//Ampel Modus
{ //Programmabschnitt des IF-Befehls öffnen.
digitalWrite(LEDrot, pwm); //dann soll die LED leuchten
delay (520); //und zwar für für 5 Sekunden (5000 Millisekunden).
digitalWrite(LEDrot, LOW); //danach soll die LED aus sein.
delay (20);
digitalWrite(LEDgruen, pwm);
delay (500);
digitalWrite(LEDgruen, LOW);
} //Programmabschnitt des IF-Befehls schließen.
void AnAus()//Verarbeitung: Wenn der Taster gedrückt ist (DalWrias Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
state = digitalRead(LEDrot);
if (state = 0)
{
digitalWrite(LEDrot,pwm);
}
else
{
digitalWrite(LEDrot,0);
}
state = digitalRead(LEDgruen);
if (state = 0)
{
digitalWrite(LEDgruen,pwm);
}
else
{
digitalWrite(LEDgruen,0);
}
}
void setup() //Hier beginnt das Setup.
{
pinMode(LEDgruen, OUTPUT);//Der Pin mit der LED (Pin 6) ist jetzt ein Ausgang
pinMode(LEDrot, OUTPUT);
pinMode(RotModus, INPUT);
pinMode(GruenModus, INPUT);
pinMode(AmpelModus, INPUT);
pinMode(AnModus, INPUT); //Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.
}
void loop()
{ //Mit dieser Klammer wird der Loop-Teil geöffnet.
Serial.begin(9600);
sensor = analogRead(potiPin);
pwm = map(sensor, 0, 1023, 0, 255);// auslesen poti und digital mappen
Serial.print(pwm);
Serial.println("Hell");
Serial.print(Modus);
Serial.println("Modus");
if (digitalRead(RotModus)==HIGH)
//Hier wird der Pin7 ausgelesen (Befehl:digitalRead). Das Ergebnis wird unter der Variable „tasterstatus“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert.
{
Modus = 1;
Rot();
}
if (digitalRead(GruenModus)==HIGH)
{
Modus = 2;
Gruen();
}
if (digitalRead(AmpelModus)==HIGH)
{
Modus = 3;
Ampel();
}
if (digitalRead(AnModus)==HIGH)
{
Modus = 4;
AnAus();
}
}
Eine Zusatzfrage noch, wie kriegt man das hin, dass wenn die Methode 4 aufgerufen wird (AnAus), die Leds nur einmal den Status wechseln?!
Wahrscheinlich muss ich dann in der Methode den Taster 4 abfragen und solange der nicht gedrückt wird....
puh...muss er warten....äh ja...
Vielen Dank für Eure Hilfe, als blutiger Halbwissender ist das manchmal echt ....
Neuron