- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 12

Thema: Einschalt-Sequenzer mir Arduino-UNO

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    165

    Einschalt-Sequenzer mir Arduino-UNO

    Hallo,

    ich möchte mir eine Einschalt-Verzögerung mit dem Arduino-UNO bauen. Möchte eine Taste (Taster momentary) kurz drücken, dann sollen in einer gewissen Reihenfolge am Arduino 5 LEDs angehen. Nach nochmaligem Drücken des Tasters sollen die LEDs dann wieder ausgehen. Anhand diverser Beschreibungen/Beispiele zu Button/LED und Verzögerungen usw., die ich gefunden habe, habe ich diesen Sketch zusammengesetzt. Er funktioniert, aber ich möchte da einiges noch ändern. Jedoch weiß ich nicht wie.

    Im Moment schalten die LED nach dem Tastendruck in der Reihenfolge 1-2-3-4-5 im Intervall von je 1000 msek ein und bleiben dann angeschaltet. Drücke ich den Taster nochmals, dann schalten sich die LED wieder in derselben Reihenfolge aus wie beim anschalten (also 1-2-3-4-5 und wieder mit Intervall 1000 msek). Nun möchte ich beim Ausschalten aber eine andere Reihenfolge festlegen (aber mit jeweils anderer Zeitverzögerung als die bisherigen 1000 msek), z.B. 5-3-4-1-2. Hier weiss ich nicht, wie das gemacht wird. Es muss die Ausschalt-Reihenfolge nun ja entsprechend anders nochmals eingetragen werden. Kann mir jemand helfen?

    Andi




    Code:
    int button = 2;
    
    int led1 = 3;
    int led2 = 4;
    int led3 = 5;
    int led4 = 6;
    int led5 = 7;
    
    int status = false;
    
    void setup()
    {
    pinMode(button, INPUT_PULLUP);   
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
    }
    
    void loop()
    {
    if (digitalRead(button) == true) 
      {
    status = !status;
    delay(1000);
    digitalWrite(led1, status);
    delay(1000);
    digitalWrite(led2, status);
    delay(1000);
    digitalWrite(led3, status);
    delay(1000);
    digitalWrite(led4, status);
    delay(1000);
    digitalWrite(led5, status);
      } 
    while(digitalRead(button) == true);
    delay(50);
    }
    Geändert von Andi#87 (15.05.2022 um 17:22 Uhr)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Probier mal:

    Code:
    status = !status;
    if status == true {
       digitalWrite(led1, status);
       delay(1000);
       digitalWrite(led2, status);
       delay(1000);
       digitalWrite(led3, status);
       delay(1000);
       digitalWrite(led4, status);
       delay(1000);
       digitalWrite(led5, status);
    }
    else {
       digitalWrite(led5, status);
       delay(1000);
       digitalWrite(led3, status);
       delay(1000);
       digitalWrite(led4, status);
       delay(1000);
       digitalWrite(led2, status);
       delay(1000);
       digitalWrite(led1, status);
    }
    Geändert von Gnom67 (15.05.2022 um 22:24 Uhr)

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    165
    Hallo,

    es funktioniert. Musste nur noch die beiden runden Klammern nach dem "if" einfügen. Hab vielen Dank für Deine Hilfe

    Andi

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    165
    Hallo,
    möchte hier nochmal nachhaken. Der Sketch funktioniert, dass hatte ich schon geschrieben. Nochmals danke für die Hilfe.
    Im Moment arbeitet das so, dass die Einschaltsequenz dann startet, wenn ich den Button drücke. Wenn ich denselben Button dann nochmals drücke, schaltet sich das wieder entsprechend der vorgemerkten Einstellungen aus (Ausschaltsequenz).
    Was muss ich ändern im Sketch, wenn ich folgende Funktion möchte:
    Die Einschaltsequenz soll starten, sobald der Arduino mit Strom versorgt wird, bzw. 5 Sekunden, nachdem der Arduino mit dem Strom verbunden wurde, soll die Einschaltsequenz automatisch starten, ohne dass ich also den "Start"-Button drücken muss. Das Ausschalten soll dann jedoch wieder geregelt als Ausschaltsequenz über den Button erfolgen.
    Geht das?

    Andi

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Die Einschaltsequenz und Verzögerung vor dem loop einfügen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.063
    Ich würde es etwas anders machen. Auch wenn es so funktioniert.

    Ich würde es mit Switch Case machen. Es ist so leichter wartbar bzw änderbar.

    Mfg Hannes

Ähnliche Themen

  1. STM32 contra ARM Cortex M3 (Arduino Due, Teensy): Performance per Arduino vs. nativ C
    Von HaWe im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 14
    Letzter Beitrag: 22.11.2017, 11:53
  2. Arduino vs. Arduino: Marke und Produktion wieder unter Kontrolle der Gründer
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 29.07.2017, 10:00
  3. Antworten: 13
    Letzter Beitrag: 07.11.2015, 01:21
  4. Einschalt- und Abschaltverzögerung Relais
    Von Tonelli im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 08.06.2008, 11:14
  5. Neuer einschalt taster
    Von Merew im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 6
    Letzter Beitrag: 13.04.2008, 18:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad