Pages: [1]   Go Down
Author Topic: Wie verzögere ich das aktualiesierungs interval eines sensors?  (Read 682 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 8
Posts: 287
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie verzögere ich das aktualiesierungs interval eines sensors?
Ich darf kein delay verwenden, weil nebenbei noch andere dinge laufen und milles wird auch benutzt.
Können ich milles zeimal gleichzeitig laufen lassen?
Logged

Gruß

strohhirn

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21863
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

millis() kannst Du benutzen sooft Du willst. Du braucht aber für jede Zeitspanne eine eigene Variable um die Startzeit abzuspeichern.
grüße Uwe
Logged

Offline Offline
Sr. Member
****
Karma: 8
Posts: 287
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kann aber auch zwei mal der gleiche milles befehl (mit andere variable) leicht zeitversetzt parallel laufen?
Würde das zum beispiel so klappen?
Code:
nextMillis = millis() + 30000L;
und parallel der andere befehl:
Code:
aktualisierung = millis() + 30000L;
Logged

Gruß

strohhirn

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

millis() ist nur eine Funktion die einen Wert zurückliefert. Und wenn Du die zweimal direkt hintereinander aufrufst, laufen sie trotzdem nicht gleichzeitig sondern nacheinander.
Erst wenn das erste "nextMillis = millis() + 30000L;" abgearbeitet wurde, wird das nächste "aktualisierung = millis() + 30000L;" ausgeführt. Damit hast Du aber auch noch keine Verzögerung (außer die wenigen Micorsekunden welche die beiden Zeilen zur Abarbeitung benötigen).
Schau Dir mal das Beispiel BlinkWithoutDelay an.
Logged

Offline Offline
Sr. Member
****
Karma: 8
Posts: 287
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
(außer die wenigen Micorsekunden welche die beiden Zeilen zur Abarbeitung benötigen).
Ja, die zeilen werden noch abgearbeitet.

Aber können diese beiden befehle auch gleichzeitig parallel zueinander laufen?

z.B. im weitern sketch wir 30sec gewartet ohne delay (nextMillis = millis() + 30000L;) und im selben moment wo gewartet wird wartet der sensor bis er sich wieder aktualisiert(aktualisierung = millis() + 30000L;)
(natürlich werden diese zeilen im sketch noch weiterverarbeitet)
Logged

Gruß

strohhirn

Offline Offline
Sr. Member
****
Karma: 8
Posts: 287
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie kriege ich die aktualisierung des sensors um 10 sec verzögert(ohne delay)?
Hier der code :
Code:
mpx = analogRead(mpxPin);
    mb = (mpx/1023.0-0.04)/0.0018;
    lcd.setCursor(10, 0);
    lcd.print(mb);
    lcd.print("mb  ");

Ich kriegs irgendwie nich hin.
Logged

Gruß

strohhirn

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21863
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Als Beispiel 2 LED mit unterschiedlicher Frequenz blinken:
Code:
const int ledPin1 =  13;     
const int ledPin2 =  12;     

int ledState1 = LOW;           
unsigned long previousMillis1 = 0;     
   
int ledState2 = LOW;           
unsigned long previousMillis2 = 0;   

long interval1 = 1000;     
long interval2 = 800;

void setup() {
  pinMode(ledPin1, OUTPUT);   
  pinMode(ledPin2, OUTPUT);     
}

void loop()

  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis1 > interval1) {
    previousMillis1 = currentMillis;     
    ledState1 = !ledState1;
    digitalWrite(ledPin1, ledState1);
  }

  if(currentMillis - previousMillis2 > interval2) {
    previousMillis2 = currentMillis;     
    ledState2 = !ledState2;
    digitalWrite(ledPin2, ledState2);
  }
}
Logged

Offline Offline
Sr. Member
****
Karma: 8
Posts: 287
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke, hab es hingekriegt.
Logged

Gruß

strohhirn

Pages: [1]   Go Up
Jump to: