mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arduino: LED Streifen mit mehreren Blinkmodi


Autor: Gabriel Tessaro (gt_111)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Community

Ich habe eine Frage bezüglich des Arduino.

Ich habe nun folgenden Sketch programmiert, der die drei LED Streifen 
blinken lässt.

Hier ist der Code:


int switchState = 0;
void setup() {
  pinMode(3,OUTPUT);
  pinMode(2,INPUT);
}

void loop() {
  switchState = digitalRead(2);

  if(switchState == LOW) { // Der Schalter wird nicht gedrückt.
  digitalWrite(3, LOW); // alle drei LED-Streifen
  }

  else { // Der Schalter wird gedrückt.
  digitalWrite(3, HIGH);

  delay(20);
  digitalWrite(3, HIGH);
  digitalWrite(3, LOW);
  delay(100);

  delay(600);

  }
}




Jetzt möchte ich noch einen Modi mehr "einbauen", den man über einen 
weiteren Drucktaster starten kann, der aber, genau wie beim Code oben, 
alle drei LED Streifen blinken lässt.


Also wenn ich den ersten Schalter drücke, wird Modi 1 (langsam blinken) 
gestartet, wenn ich den zweiten Schalter drücke, kommt Modi 2 (schnelles 
blinken) zum Einsatz.


Nun meine Frage:

Wie muss ich das genau programmieren? Oder wie kann ich einen zweiten 
Schalter ansprechen?

Bitte nur Hinweise, da ich anschließend die Lösung selber herausfinden 
möchte.



Vielen Dank!

Mit freundlichen Grüssen

Gabriel

Autor: Bob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo



Sketch erweitern um 1. Taster
Wenn Taster 1 = 1 langsam blinken
Wenn Taster 2 = 1 schnell blinken


Lg

Autor: gt_111 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin ehrlich gesagt gerade ein bisschen überfordert. Könntest du mir die 
"Lösung" ohne die Hinweise geben?

Vielen Dank!

lg

Autor: Bob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch mal

int switchStateT1 = 0;
int switchStateT2 = 0;
void setup() {

  pinMode(3,OUTPUT);
  pinMode(2,INPUT);
  pinMode(4,INPUT);

}

void loop() {

  switchStateT1 = digitalRead(2);
  switchStateT2 = digitalRead(4);
  if(switchStateT1 == HIGH) { // Der Schalter wird nicht gedrückt.
   digitalWrite(3, HIGH);
delay(2000);
  digitalWrite(3, LOW);
  }
  if(switchStateT1 == HIGH) { // Der Schalter wird nicht gedrückt.
   digitalWrite(3, HIGH);

  delay(1000);
  digitalWrite(3, LOW);

  }


  else { // Der Schalter wird gedrückt.
  digitalWrite(3, LOW);


  }
}


Taster an Pin 4  die delay kannst du dann selbst setzen

Autor: PittyJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bau doch erst mal einen 2ten Taster ein.
Und wenn das geht, muss man den aktuellen Modis speichern.

Was ist das Problem für einen zweiten Taster
switchState2 = digitalRead( <wo auch immer der 2te Taster angeschlossen 
ist>);
einzubauen?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.