INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Lauflicht zwei Richtungen mit 2 Tastern
08.12.2014, 14:34
Beitrag #1
Lauflicht zwei Richtungen mit 2 Tastern
Hallo Forum,

Ich bin der Johann - auf der Suche nach einem deutschsprachigen Forum (bin dem Englischen nicht sehr mächtig) - hier gelandet.


Ich möchte auch gleich mit einem (für Euch wahrscheinlich kleinen) Problem starten.

Ich möchte ein Lauflicht "Bauen". "Das Licht" soll von links und von rechts loslaufen (über Taster/Sensor gesteuert) >> das habe ich schon hinbekommen.

Desweiteren sollen alle Lichter ausgehen, wenn:
- der andere Taster
- der gleiche Taster nocheinmal
betätigt wird.
>>>> funktioniert nicht --> mir ist klar das die "Leuchtzeit" durch ein "wenn Taster links oder rechts betätigt wird --> ledlinks, ledmitte, ledrechts, LOW ersetzt werden müsste

Die Taster werden mit einem Kabel "simuliert"

   

Code:
int ledlinks = 8;          // Pin 8 = linke LED
int ledmitte = 9;          // Pin 9 = mittlere LED
int ledrechts = 10;        //  Pin 10 = rechte LED


int tastlinks = 1;      // Pin 1 = Taster links
int tastrechts = 2;      // Pin 2 = Taster rechts

int zustand_links = 0;
int zustand_rechts = 0;

int zeit = 1500;    
int leuchtzeit = 3500;

void setup() {                

  pinMode(ledlinks, OUTPUT);
  pinMode(ledmitte, OUTPUT);
  pinMode(ledrechts, OUTPUT);
  pinMode(tastlinks, INPUT_PULLUP);
  pinMode(tastrechts, INPUT_PULLUP);

}

void loop() {
  digitalWrite(tastlinks, HIGH);
  digitalWrite(tastrechts, HIGH);
  zustand_links = digitalRead(tastlinks);
  zustand_rechts = digitalRead(tastrechts);



  if (zustand_links == LOW)
  {
    digitalWrite(ledlinks, HIGH);  
    delay(zeit);              
    digitalWrite(ledmitte, HIGH);
    delay(zeit);              
    digitalWrite(ledrechts, HIGH);
    delay(leuchtzeit);

    digitalWrite(ledlinks, LOW);
    delay(zeit/2);
    digitalWrite(ledmitte, LOW);
    delay(zeit/2);
    digitalWrite(ledrechts, LOW);
    delay(zeit/2);

  }
  else if (zustand_rechts == LOW)
  {
    digitalWrite(ledrechts, HIGH);  
    delay(zeit);              
    digitalWrite(ledmitte, HIGH);
    delay(zeit);              
    digitalWrite(ledlinks, HIGH);
    delay(leuchtzeit);

    digitalWrite(ledrechts, LOW);
    delay(zeit/2);
    digitalWrite(ledmitte, LOW);
    delay(zeit/2);
    digitalWrite(ledlinks, LOW);
    delay(zeit/2);
  }


  else {
    digitalWrite(ledlinks, LOW);
    digitalWrite(ledmitte, LOW);
    digitalWrite(ledrechts, LOW);

  }
}



Ich hoffe Ihr könnt mir ein paar Tipps geben - vorallem für das "Ausschalten Abfragen"

Danke Gruß Johann
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2014, 14:51
Beitrag #2
RE: Lauflicht zwei Richtungen mit 2 Tastern
Hi,
Du willst also praktisch eine Kreuzschaltung simulieren und beim Einschalten soll es darauf ankommen, über welche Taste man eingeschaltet hat. Flur oder Treppenhaus? ;-)

Also erstmal: Das hier
Code:
digitalWrite(tastlinks, HIGH);
  digitalWrite(tastrechts, HIGH);
...ist Unsinn. Man schreibt nicht auf Eingänge.

Dann würde ich Dir empfehlen, erst einmal ein einfacheres Problem zu lösen: Lass das mit den 3 Lichtern nacheinander mal weg und schreibe einen Sketch, der einfach nur eine LED per Kreuzschaltung ein- bzw. ausschaltet.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2014, 14:59
Beitrag #3
RE: Lauflicht zwei Richtungen mit 2 Tastern
Hallo Thorsten,

Kreuzschaltung genau so stelle ich mir das vor.

danke für deine Antwort. Ich habe die beiden Zeilen entfernt --> Programm funktioniert trotzdem. Die Zeilen stammen noch aus den Versuchen vor ich "INPUT_PULLUP" verwendet habe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2014, 15:00
Beitrag #4
RE: Lauflicht zwei Richtungen mit 2 Tastern
...und jetzt das hier:
Dann würde ich Dir empfehlen, erst einmal ein einfacheres Problem zu lösen: Lass das mit den 3 Lichtern nacheinander mal weg und schreibe einen Sketch, der einfach nur eine LED per Kreuzschaltung ein- bzw. ausschaltet.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2014, 18:01
Beitrag #5
RE: Lauflicht zwei Richtungen mit 2 Tastern
...schwierig....

Hier mal meine Gedanken, leider funktioniert es nicht

Code:
int taster_a = 1;
int taster_b = 2;

int LED = 8;

int zustandLED = LOW;

int zustand_a;
int zustand_b;

void setup(){

  pinMode(taster_a, INPUT_PULLUP);
  pinMode(taster_b, INPUT_PULLUP);

  pinMode(LED, OUTPUT);}


void loop (){

  zustand_a = digitalRead(taster_a);
  zustand_b = digitalRead(taster_b);

  if (zustand_a == HIGH && LED == LOW){
   digitalWrite(LED; HIGH);
   else if (zustand_b == HIGH && LED == LOW)  
   digitalWrite(LED; HIGH)
   else if (zustand_a == HIGH && LED == HIGH
   digitalWrite(LED; LOW)
   else if (zustand_b == HIGH && LED == HIGH)
   digitalWrite(LED; LOW)
  }

da gibt es allerdings ein Problem mit dem Kompilieren
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2014, 18:15
Beitrag #6
RE: Lauflicht zwei Richtungen mit 2 Tastern
Hi,
tja, als allererstes fällt mal auf, dass das Programm zu wenig Semikolons hat. Außerdem ergibt "LED == LOW" odre "LED == FALSE" immer "falsch", da Du LED = 8 gesetzt hast. Du meinst wahrscheinlich digitalRead(LED). (Ja, man kann Ausgänge auch lesen, dann erhält man den momentanen Zustand.)
Vielleicht machan wir's nochmal ein Stück einfacher: Schreib' mal einen Sketch mit einem Taster und einer LED. Wenn der Taster gedrückt wird, dann soll die LED angehen. Wenn er wieder gedrückt wird, dann wieder aus.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2014, 07:14 (Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2014 07:17 von RMR.)
Beitrag #7
RE: Lauflicht zwei Richtungen mit 2 Tastern
Moin Gemeinde,

meiner Meinung nach ist es sehr _SEHR_ löblich dass Thorsten sich die Zeit nimmt auf diese Art zu antworten. Schliesslich wird man dazu nicht gezwungen. Hoffe er bleibt bei diesem Formumsstil.

Zum Thema: Hallo Hansl, schaue dir doch bitte auch mal das Thema Statemachine an, und arbeite ein paar Beispiele durch. Damit kommst du dann deiner Lösung ein gutes Stück näher. Auch das coding wird daduch deutlich übersichtlicher.
Einen Einstieg findest du HIER.

Happy scripting.... Ralf aka RMR

PS.: Die Geschichte mit den Tastern ist so eine Sache, Google mal noch nach dem Theme "Entprellen", oder DeBounce / Arduino Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2014, 16:59
Beitrag #8
RE: Lauflicht zwei Richtungen mit 2 Tastern
Hallo,

zuerst einmal möchte ich mich für die Motivation bei Thorsten bedanken.
Mit dem Link von Ralf kann ich aufgrund der Sprache wenig anfangen.

Mittlerweile habe ich das Programm hinbekommen (leider nicht ganz ohne im www zu suchen)

Code:
//eine LED aus/ein mit zwei Tastern

int LED = 10;    //LED an Pin 10
int tasterlinks = 2;  //Taster an Pin 2
int tasterrechts = 3;  //Taster B an Pin 3

int zustand = LOW;      //aktueller LED-Zustand,
int lesenlinks;      //aktueller zustand Taster links
int lesenrechts;    //aktueller Zusatnd Taster rechts
int vorherlinks = HIGH;    //letzter Taster-Zustand links
int vorherrechts = HIGH;  //letzter Taster-Zustand rechts

int zeit = 0;
int prellen = 500;

void setup()
{
  pinMode(tasterrechts, INPUT_PULLUP);  //Taster mit PULLUP
  pinMode(tasterlinks, INPUT_PULLUP);  //Taster mit PULLUP
  pinMode(LED, OUTPUT);         //PIN 10 = LED
}
void loop()
{
  lesenlinks = digitalRead(tasterlinks);    //Taster einlesen
  lesenrechts = digitalRead(tasterrechts);

  if (lesenlinks==HIGH && vorherlinks==LOW && millis()-zeit > prellen)
  {
    if (zustand==HIGH)      
      zustand=LOW;
    else
      zustand=HIGH;

    zeit = millis();      
  }

  if (lesenrechts==HIGH && vorherrechts==LOW && millis()-zeit > prellen)
  {
    if (zustand==HIGH)
      zustand=LOW;
    else
      zustand=HIGH;

    zeit = millis();  

  }
  digitalWrite(LED, zustand);
  vorherlinks = lesenlinks;    
  vorherrechts = lesenrechts;
}


Vielleicht komme ich morgen dazu die Laufrichtung einzubauen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Zwei ident Feuchtesensoren an Arduino Uno R4 Karli 5 355 24.07.2016 23:36
Letzter Beitrag: SkobyMobil
  DC Motor in beide Richtungen steuern WIMunios 5 648 24.03.2016 12:04
Letzter Beitrag: Bitklopfer
Bug Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern Poet 5 562 21.02.2016 18:37
Letzter Beitrag: Carlo
  Webserver erzeugt zwei Durchläufe. favicon.ico?!? WOHER??? BERND87 6 1.575 04.02.2016 13:56
Letzter Beitrag: Pit
  Zahlenformat bei Kommunikation mit zwei Arduinos Matthias_Arduino 5 634 07.01.2016 22:40
Letzter Beitrag: Bitklopfer
  Mit dem Pin 8 und 9 vom Yun werden zwei LED wechselseitig blinken über http arduinofan 1 551 08.12.2015 15:03
Letzter Beitrag: arduinofan
  I2P mit zwei Microcontroller diode1990 2 556 26.10.2015 20:07
Letzter Beitrag: Bitklopfer
  Serielle Kommunikation zw. zwei Arduino UNOs Marduino_UNO 2 1.114 20.08.2015 07:13
Letzter Beitrag: Marduino_UNO
  Zwei Programme gleichzeitig Lindi01 9 2.034 27.07.2015 23:27
Letzter Beitrag: hotsystems
  Taster für zwei Funktionen nutzen - wie macht man das? Gelegenheitsbastler 2 948 22.07.2015 11:56
Letzter Beitrag: Scherheinz

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste