mit 2 Tastern eine "Wechselschaltung" aufbauen

Erstmal ein Hallo an alle.

Ich versuche euch einfach mal zu erklären was ich gerne machen möchte.

Zwei Taster (Taster-links(TL), Taster-rechts(TR))
Drei LED (ledlinks, ledmitte, ledrechts)

wird Taster-links betätigt soll zuerst ledlinks aufleuchten und dies weiterhin tun --> ledmitte aufleuchten --> ledrechts aufleuchten bis Taster-rechts oder Taster-links betätigt wird.

wird TR betätigt ledR --> ledM --> ledL --> Taster L oder R alle aus

Nun hab ich schon etwas gesucht wie denn überhaupt ein Taster abgefragt wird - und auch gefunden vgl. fluuux.de - This website is for sale! - fluuux Resources and Information.
nur ist mir diese Abfrage schlicht zu kompliziert, daher die Frage ob das auch einfacher geht.

Für die, die noch nicht genug vom Lesen haben meine "Programmgrundgedanken" - mir ist bewußt das viele "Formfehler" im Programm sind, mir geht es im Ersten Anlauf eher um die Denkweise.

Festlegung der Begriffe

tasterrechts - input
tasterlinks - input

ledR - output
ledM - output
ledL -output

zeit = 1000 //Wartezeit zwischen Schaltvorgängen

wenn digitalRead(tasterrechts HIGH);

dann
digitalwrite(ledR HIGH);
delay(zeit);
digitalwrite(ledM HIGH);
delay(zeit);
digitalwrite(ledL HIGH);
delay(zeit);

wenn digitalRead(tasterlinks HIGH);

dann
digitalwrite(ledL HIGH);
delay(zeit);
digitalwrite(ledM HIGH);
delay(zeit);
digitalwrite(ledR HIGH);
delay(zeit);

wenn digitalRead(ledR, ledM, LedL = HIGH) und digitalread tasterrechts/tasterlinks = HIGH
dann
digitalwrite(ledR Low);
digitalwrite(ledM LOW);
digitalwrite(ledL LOW);

Danke für Eure Hilfe

Sieht doch schon gut aus, jetzt noch in der "C"omputer Sprache auf dem Arduino aufspielen und testen obs so funktioniert.

Wenn Du Links angibst, dann markiere die bitte auch als solche, damit andere nicht erst mit Copy Paste nachschauen müssen.

sieht besser aus als

Weiter, verstehe ich nicht was dort kompliziert sein soll. Er liest den Status des Buttons mit digitalRead. Einfacher geht nicht. Es wird aber so auch nur durch das delay(20) am Ende gehen (und das serialWrite). da ein Taster sonst auch noch entprellt werden muss. Das drüchen eines Tasters schaltet immer ein paar mal hektisch hin und her, bis er sicher den Zustand 1 oder null hat. Durch so ein delay kann man das schon erfolgreich entprellen.
Wie sind denn deine Arduino Kentnisse? Schonmal was damit gemacht? Wenn Du kompletter Neuling bist, schau Dir erstmal die Tutorials an. http://www.arduino.cc/en/Tutorial/HomePage
Wenn Du damit ein bisschen gespielt hat, dann schalte doch erst mal eine LED mit einem Taster an und aus. Wenn das geht, schalte sie mit zwei Tastern an und aus, und so weiter.
Und wenn es dann irgendwo hängt, dann frage mit gezielten Codebeispielen nach (da wird es übrigens gerne gesehen, wen code mit Code-Tags markiert wird)
Also, fange einfach mal an. So langsam wird das Projekt dann schon von selbst größer, und irgendwann tun Deine LEDs genau das was Du willst.

Grüße,

Sven

Danke für Euer Antworten.

Das mit dem Link versuche ich zu beherzigen - hab da gar nicht dran gedacht.

Taster entprellen - ich meine gelesen zu haben das der Arduino das bereits "an Bord" hat, habe ich da etwas missverstanden....?

LED mit Taster ein aus hab ich auf die Reihe bekommen.

Code-Tags - Großes Fragezeichen

Ich will euch nicht vorenthalten was ich zusammengepfuscht habe - macht natürlich nicht das was es soll :cry:

int tl = 1;
int tr = 2;


int ledl = 8;
int ledm = 9;
int ledr = 10;

int zeit = 1000;

void setup() {
  pinMode(tl, INPUT);  // Taster links
  digitalWrite(tl, HIGH);  // Taster links pull up
    pinMode(tr, INPUT);  // Taster rechts
  digitalWrite(tr, HIGH);
  
  pinMode(ledl, OUTPUT);  // LED links
  pinMode(ledm, OUTPUT);   // LED mitte
  pinMode(ledr, OUTPUT);  // LED rechts
}

void loop()
{

  if(tl = HIGH) {
    digitalWrite(ledl, HIGH);
    delay (zeit);
    digitalWrite(ledm, HIGH);
    delay (zeit);
    digitalWrite(ledr, HIGH);
    delay (zeit);
    
  }
  
  if(tr, LOW) {
    digitalWrite(ledr, HIGH);
    delay (zeit);
    digitalWrite(ledm, HIGH);
    delay (zeit);
    digitalWrite(ledl, HIGH);
    delay (zeit);
  
  }
  
 else {
    digitalWrite(ledr,LOW);
    digitalWrite(ledm,LOW);
    digitalWrite(ledl,LOW);
    
  }
}

Gruß Max

tuhts auch nicht, gibts mehrere Gründe.

  1. Den Status behalten, tl/tr high oder low

Die Code Tags hast du ja schon eingefügt, das Fenster wo dein Code ist.

@ Skorpi08

Meinst du damit den Punkt im "void setup"

digitalWrite(tl, HIGH);  // Taster links pull up

Ich habe micht jetzt an einer etwas einfachern Aufgabe versucht.

Beim betätigen Taster-links --> Lauflicht von links nach rechts

Taster rechts --> Lauflicht von rechts an links

Um die LED mittels Taster abzuschalten müsste ich die "Variable Leuchtzeit" durch eine "Tasterabfrage" ersetzen --> daran werde ich mich jetzt versuchen.

int ledl = 8;   // Pin 8 = linke LED
int ledm = 9;  // Pin 9 = mittlere LED
int ledr = 10;  //  Pin 10 = rechte LED


int tali = 1;      // Pin 1 = Taster links
int tare = 2;      

int zustand_li = 0;
int zustand_re = 0;

int zeit = 1500;    
int leuchtzeit = 3500;

void setup() {                

  pinMode(ledl, OUTPUT);
  pinMode(ledm, OUTPUT);
  pinMode(ledr, OUTPUT);
  pinMode(tali, INPUT);
  pinMode(tare, INPUT);

}

void loop() {
  digitalWrite(tali, HIGH);
  delay(50);
  digitalWrite(tare, HIGH);
  delay(50);
  zustand_li = digitalRead(tali);
  zustand_re = digitalRead(tare);

  if (zustand_li == LOW) {

    digitalWrite(ledl, HIGH);  
    delay(zeit);               
    digitalWrite(ledm, HIGH);
    delay(zeit);               
    digitalWrite(ledr, HIGH);
    delay(leuchtzeit);
  }

  if (zustand_re == LOW) {

    digitalWrite(ledr, HIGH);   
    delay(zeit);               
    digitalWrite(ledm, HIGH);
    delay(zeit);              
    digitalWrite(ledl, HIGH);
    delay(leuchtzeit);
  }

  else {
    digitalWrite(ledl, LOW);
    digitalWrite(ledm, LOW);
    digitalWrite(ledr, LOW);
    delay(500);

  }
}

Was mir bei dem Ganzen überhaupt nicht klar ist: Warum leuchtet die "festverbaute PIN 13 LED" dauerhaft????

Maexle:
Was mir bei dem Ganzen überhaupt nicht klar ist: Warum leuchtet die "festverbaute PIN 13 LED" dauerhaft????

Die Pins sind automatisch als Eingänge geschaltet. Ein Eingang hat einen Leckstrom der genügt um den Eingang des Operationsvertärker anzusteuern und somit das LED 13 zum Leuchten zu bringen. Elektrische Störungen konnen aber den Pegel auch auf Masse ziehen. Das sit das selbe problem wie wenn man bei einem Taster den Pullup/Pulldownwiderstand vergißt.
Schalte einen 100k bis 1M Ohm Widerstand zwischen Pin 13 und Masse und das LED ist aus.
Grüße Uwe

Schalte einen 100k bis 1M Ohm Widerstand zwischen Pin 13 und Masse und das LED ist aus.

Wunderbar Danke Uwe