- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 17

Thema: Pause mit millis wenn geschaltet wird.

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    HaWe
    Gast
    Zitat Zitat von achso Beitrag anzeigen
    Hallo,
    ich weiß, es gibt etliche Anweisungen.
    Aber alle sind mit "Blink".
    Das verstehe ich so.
    Die 1. Zeit ist Null. Dann wird gewartet bis z.B. 1000Millis verstrichen sind. Dann schaltet die Led ein, bis wieder 1000 Millis um sind. Wieder 1000 Millis warten usw.

    Wenn jetzt aber mitten im Sketch millis abgewartet werden sollen, habe ich ja kein Blink vorher, von dem aus losgezählt werden könnte. Keine ständige Schleife.

    Sondern ein Ereignis, welches zum Beispiel eine Tätigkeit, für eine feste Zeit nach sich ziehen soll. Diese war dann auch nicht klar am Beginn der Inbetriebnahme zeitlich zu bestimmen, sondern der Statpunkt obliegt dem Zufall.

    Ich versuche schon länger(und länger und länger) in dem Beispiel Sketch "Button" millis einzufügen.
    Aber ich blicke das einfach nicht.
    Es wäre schön, wenn mir das da reingeschrieben würde. Vielleicht kapiere ich das dann endlich mal.

    Wenn der Schalter gedrückt wird. Eine Pause statt delay.

    Code:
    /*
      Button
    
    
     */
    
    // constants won't change. They're used here to
    // set pin numbers:
    const int buttonPin = 6;     // the number of the pushbutton pin
    const int ledPin =  13;      // the number of the LED pin
    unsigned long previousMillis = 0;
    #define        laufzeit   1000UL
    
    // variables will change:
    int buttonState = 0;         // variable for reading the pushbutton status
    
    void setup() {
      // initialize the LED pin as an output:
      pinMode(ledPin, OUTPUT);
      // initialize the pushbutton pin as an input:
      pinMode(buttonPin, INPUT);
    }
    
    void loop() {
    unsigned long currentMillis = millis();
      
      // read the state of the pushbutton value:
      buttonState = digitalRead(buttonPin);
    
      // check if the pushbutton is pressed.
      // if it is, the buttonState is HIGH:
      if (buttonState == HIGH)
     
      {
        // turn LED on:
        
        digitalWrite(ledPin, HIGH);
    
        
    
         delay(500);
    
         
         
      }
      else
      {
        // turn LED off:
        digitalWrite(ledPin, LOW);
      }
    }
    Dankeschön
    Achim

    dann probieren wirs doch mal, aus dem Stand aus dem Blauen ins Blaue hinein...


    Code:
    // variables will change:
    int buttonState = 0;         // variable for reading the pushbutton status
    
    void setup() {
      // initialize the LED pin as an output:
      pinMode(ledPin, OUTPUT);
      // initialize the pushbutton pin as an input:
      pinMode(buttonPin, INPUT);
    }
    
    void loop() {
    unsigned long currentMillis ; // brauchen hier noch nicht initialisiert werden
      
      // read the state of the pushbutton value:
      buttonState = digitalRead(buttonPin);
    
      // check if the pushbutton is pressed.
      // if it is, the buttonState is HIGH:
      if (buttonState == HIGH)
     
      {
        currentMillis = millis();
        while(millis()-currentMillis <1000); // 1000ms warten
        // turn LED on:    
        digitalWrite(ledPin, HIGH);           // dann die LED an-schalten
        currentMillis = millis();
        while(millis()-currentMillis <1000);  // wieder 1000ms warten
        digitalWrite(ledPin, LOW);            // dann die LED aus-schalten
    
         delay(500);
        //... was der Rest bedeuten oder machen soll, verstehe ich jetzt noch nicht, insb. auch mit dem delay hier...
    }
    millis() liefert die aktuelle Zeit, und currentMillis nimmt eine Stopuhr-Zeit, die dann konstant bleibt, während bei jedem Aufruf von millis() dieses wieder weitergezählt hat.
    nach 1000ms ist also millis() um 1000 höher als currentMillis , d.h.: dann sind 1000ms um.

    wie gesagt,
    was der Rest bedeuten oder machen soll, verstehe ich jetzt noch nicht, insb. auch mit dem delay.
    Aber vlt hilf ja schon mal dieser Teil mit dem 1000ms warten per millis()...
    Geändert von HaWe (27.06.2017 um 00:21 Uhr)

Ähnliche Themen

  1. Lovotics: Wenn der Roboter eifersüchtig wird
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 30.06.2011, 16:50
  2. Spannungsregler wird heiß, wenn ISP angesteckt wird
    Von loukumas im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 11.02.2008, 16:53
  3. Was Passiert wenn die Last zu groß wird.
    Von Süße Hexe im Forum Motoren
    Antworten: 7
    Letzter Beitrag: 13.09.2007, 21:20
  4. Led leuchtet, wenn Strom entnommen wird
    Von Christoph2 im Forum Elektronik
    Antworten: 19
    Letzter Beitrag: 23.09.2006, 19:38
  5. Simulator wird langsam wenn beim ATtiny2313 PB0=1 ist
    Von felack im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 10.10.2005, 14:52

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress