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
Wie setze ich Verzögerungen richtig ein?
20.12.2019, 09:04
Beitrag #17
RE: Wie setze ich Verzögerungen richtig ein?
(19.12.2019 23:47)GuaAck schrieb:  Ich finde die Timer-Lösung schöner als die millis();
Wenn Du jetzt noch erklärst, was Du daran 'schöner' findest?
Ich gebe zu, dass mir die direkte Nutzung von millis() im Code auch nicht gefällt und ich sie nicht sonderlich intuitiv und 'schön' finde. Aber das kann man ja umgehen.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.12.2019, 09:39
Beitrag #18
RE: Wie setze ich Verzögerungen richtig ein?
Ich möchte auch möglichst wenig Lib´s benutzen. Je mehr man benutzt, desto eher hat man die Chance, dass sie sich gegenseitig stören. Deshalb auch sicher keine Timer Lib, wo man sie ja ohne viel Aufwand ersetzen kann. Alles was ich selbst in´s Programm schreibe, habe ich immer vor Augen. Das ist mir lieber.

Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.12.2019, 12:12
Beitrag #19
RE: Wie setze ich Verzögerungen richtig ein?
(19.12.2019 23:47)GuaAck schrieb:  Ich finde die Timer-Lösung schöner als die millis(); .....

Da kann man nur noch schmunzeln!

Hast du #15 richtig gelesen?
(19.12.2019 15:35)MicroBahner schrieb:  Wenn Du es etwas übersichtlicher haben willst, und dich die direkte Hantierung mit millis() stört, kannst Du eine Klasse drumrumbauen.

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.12.2019, 17:40 (Dieser Beitrag wurde zuletzt bearbeitet: 21.12.2019 17:41 von Arduino4Fun.)
Beitrag #20
RE: Wie setze ich Verzögerungen richtig ein?
Hallo,

natürlich führen viele Wege nach Rom. Ich hatte mal folgendes Gerüst für mich gebaut. Feste "Zeitscheiben" die millis() gesteuert aufgerufen werden. Damit lassen sich einfach die Funktion entsprechend der realen Geschwindigkeit wie Sensor alle 1000ms etc. einbinden. Sicher eine von vielen, vielen Möglichkeiten. Für das Einlesen von Tasten nutze ich häufig die OneButton Library.
Code:
#include "OneButton.h"

// ----- BEGIN "Task-Steuerung" ---------------------------------------------
const unsigned long TimeBase10    =    10UL;
const unsigned long TimeBase100   =   100UL;
const unsigned long TimeBase500   =   500UL;
const unsigned long TimeBase1000  =  1000UL;
// ----- END   "Task-Steuerung" ---------------------------------------------

#define PIN_Button 10

// ----- BEGIN Objekte/Variable ---------------------------------------------
OneButton Button_No10( PIN_Button,true );
// ----- END   Objekte/Variable ---------------------------------------------

// ----- BEGIN "Task-Routinen" ----------------------------------------------
void Task10ms()
{
}

void Task100ms()
{
}

void Task500ms()
{
}

void Task1000ms()
{
}
// ----- END   "Task-Routinen" ----------------------------------------------

// ----- BEGIN Button Bearbeitung -------------------------------------------
void Button_No10_Click()
{
  // Hier Aktion für Button
}
// ----- END   Button Bearbeitung -------------------------------------------

// ----- BEGIN Setup/Loop ---------------------------------------------------
void setup()
{
  Button_No10.attachClick( Button_No10_Click );
}

void loop()
{
  static unsigned long TimeLastMillis10;
  static unsigned long TimeLastMillis100;
  static unsigned long TimeLastMillis500;
  static unsigned long TimeLastMillis1000;

  // ----- BEGIN Hier die Themen die schnell bearbeitet werden sollen
  Button_No10.tick();
  // ----- END   Hier die Themen die schnell bearbeitet werden sollen

  // ----- BEGIN Task-Routinen -----
  if( ( millis()-TimeLastMillis10 )   >TimeBase10 )    { TimeLastMillis10    += TimeBase10;    Task10ms();    }
  if( ( millis()-TimeLastMillis100 )  >TimeBase100 )   { TimeLastMillis100   += TimeBase100;   Task100ms();   }
  if( ( millis()-TimeLastMillis500 )  >TimeBase500 )   { TimeLastMillis500   += TimeBase500;   Task500ms();   }
  if( ( millis()-TimeLastMillis1000 ) >TimeBase1000 )  { TimeLastMillis1000  += TimeBase1000;  Task1000ms();  }
  // ----- END Task-Routinen -----
}
// ----- END   Setup/Loop ---------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 14:58 (Dieser Beitrag wurde zuletzt bearbeitet: 26.12.2019 14:58 von DO3GE.)
Beitrag #21
Langzeit-Verzögerungen
Hallo zusammen
und noch einmal vielen Dank für die Hilfe bis hierher.
Jetzt hat sich bei einem anderen Projekt aber noch ein weiteres Problem aufgetan.
Und zwar muss ich für das Umschalten zweier Relais eine Verzögerung einbauen.

Hört sich soweit einfach an. Allerdings soll die Verzögerung hier 30 bzw 45 Minuten betragen.

Die Frage ist nun, ob ich tatsächlich dann 2,7 Millionen

Code:
if (millis() - TIMER > 2700000) {

eintrage, oder ob es da noch eine andere Option gibt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 16:14
Beitrag #22
RE: Wie setze ich Verzögerungen richtig ein?
Code:
if (millis() - TIMER >= 27e5) {                     // 45 Minuten in kurz

const unsigned long interval = 1000UL * 2700;       // Interval in Sekunden einstellen
if (millis() - TIMER >= interval) {

const unsigned long interval = 1000UL * 60 * 45;    // Interval in Minuten einstellen
if (millis() - TIMER >= interval) {


Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 17:37
Beitrag #23
RE: Wie setze ich Verzögerungen richtig ein?
Hab mich für 27e5 entschieden.

Vielen Dank !!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Wie die HW-Seriellen des Mega richtig einsetzen? DO3GE 2 439 02.12.2019 14:53
Letzter Beitrag: DO3GE
Question Programm läuft nicht richtig CMeeep 22 2.375 04.07.2019 21:58
Letzter Beitrag: Franz54
  Unterroutinenaufruf- wie gehts richtig? Telefonmann 12 1.510 04.05.2019 13:51
Letzter Beitrag: MicroBahner
  [includes]Wie gebe ich den Pfad der .h-Datei richtig an ManniP 6 958 28.04.2019 09:29
Letzter Beitrag: Fips
  HttpBasicAuth richtig einbinden Matroks12 2 941 18.03.2019 11:01
Letzter Beitrag: Bitklopfer
  Timer Richtig dastellen Harlekin 5 996 04.02.2019 12:54
Letzter Beitrag: Tommy56
  Problem mit Displayanzeige LCD2004 bzw. nicht Richtig magnum1795 39 4.890 18.12.2018 08:15
Letzter Beitrag: magnum1795
  Rotaryencoder funktioniert nicht richtig 123clever 19 4.281 20.02.2018 22:22
Letzter Beitrag: rpt007
Question Rechnen in C - Was ist denn nun richtig? Stephan_56 17 4.612 27.03.2016 11:31
Letzter Beitrag: ardu_arne
  LCD schreibt mal richtig,mal Krickel? malsehen 14 2.921 21.03.2016 09:21
Letzter Beitrag: hotsystems

Gehe zu:


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