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
Probleme mit Blinklicht auf bestimmte Zeit
19.10.2019, 18:51
Beitrag #1
Probleme mit Blinklicht auf bestimmte Zeit
Ich möchte einen Magnet 10 Sekunden im Wechsel (Intervall) an und ausschalten. Dies sollte mit Millis geschehen, da andere Funktionen Zeitgleich aktiviert werden. Der angehängte Sketch funktioniert nur ohne die If-Schleife und nur vom void setup aus. Dann schaltet der Magnet sich innerhalb von 10 im Intervall aus und an. Dies funktioniert aber bekanntlich im Setup Teil nur genau einmal. Und das auch ohne If Schleife. Ich möchte aber den Magnet-Intervall starten wenn ein Kontakt (digitalRead(contact_35_act_34) kurz auf HIGH ist. Hat jemand eine Idee wie man das ganze modifizieren kann, damit es läuft?


Code:
//Magnet activation and intervall setup

unsigned long overallStartTime;
unsigned long MagnetStartTime;
unsigned long overallPeriod = 10000;
unsigned long blinkPeriod = 100;
unsigned long currentTime;
const byte Soli_42_execute = 42;
boolean blinking = true;

void setup() {

  //Magnet Intervall Mode

  pinMode(Soli_42_execute, OUTPUT);
  overallStartTime = millis();
  MagnetStartTime = overallStartTime;
  digitalWrite(Soli_42_execute, LOW);


void loop() {

if (digitalRead(contact_35_act_34) == HIGH) {  // Magnet function activation

    currentTime = millis();
    if (currentTime - MagnetStartTime >= blinkPeriod && blinking)  //LED blink time check
    {

      digitalWrite(Soli_42_execute, !digitalRead(Soli_42_execute));  //change state of LED
      MagnetStartTime = MagnetStartTime + blinkPeriod;  //save the new blink start time
    }

    if (currentTime - overallStartTime >= overallPeriod && blinking)  //overall time check
      digitalWrite(Soli_42_execute, LOW);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2019, 19:03
Beitrag #2
RE: Probleme mit Blinklicht auf bestimmte Zeit
Millis() ist genau die richtige Lösung.
Allerdings bei den wiederkehrenden Funktionen kannst du besser die fertige Funktion "simpleTimer" verwenden.
SimpleTimer

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2019, 21:38
Beitrag #3
RE: Probleme mit Blinklicht auf bestimmte Zeit
(19.10.2019 19:03)hotsystems schrieb:  Millis() ist genau die richtige Lösung.
Allerdings bei den wiederkehrenden Funktionen kannst du besser die fertige Funktion "simpleTimer" verwenden.
SimpleTimer

Danke! Habs gerade überflogen und ich glaube dieses simple timer library hätte ich nun schon öfter brauchen können. Werde das morgen mal testen und ein feedback geben.

Mal eine frage ganz nebenbei. Ich habe das Gefühl, das der Intervall in meinem Code mit 500ms An/Aus, das schnellste ist was der Arduino schafft. Bin schon weiter runter auf 50ms, da ist aber kein Unterschied zu den 500ms erkennbar. Kann es sein, das mit delay eine schnellere Frequenz zu erreichen ist? Was ist den die schnellste Frequenz die der Arduino erreichen kann?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2019, 21:51
Beitrag #4
RE: Probleme mit Blinklicht auf bestimmte Zeit
(19.10.2019 21:38)Prospekteur schrieb:  Ich habe das Gefühl, das der Intervall in meinem Code mit 500ms An/Aus, das schnellste ist was der Arduino schafft.
Da machst Du was falsch. 500ms sind für den Arduino eine halbe Ewigkeit.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.10.2019, 09:21 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2019 09:23 von Prospekteur.)
Beitrag #5
RE: Probleme mit Blinklicht auf bestimmte Zeit
(19.10.2019 21:51)MicroBahner schrieb:  
(19.10.2019 21:38)Prospekteur schrieb:  Ich habe das Gefühl, das der Intervall in meinem Code mit 500ms An/Aus, das schnellste ist was der Arduino schafft.
Da machst Du was falsch. 500ms sind für den Arduino eine halbe Ewigkeit.

Ich muß dazu erwähnen, das der Magnet über einen Mosfet gesteuert wird (5v in/ 48v out). Müsste mal schauen wie schnell ein Mosfet seine Schaltzustände als Intervall auf Zeit ändern kann. Aber Du hast Recht vermutlich liegt es an einem anderen Fehler der von mir verursacht wird;-).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.10.2019, 09:31
Beitrag #6
RE: Probleme mit Blinklicht auf bestimmte Zeit
(20.10.2019 09:21)Prospekteur schrieb:  Ich muß dazu erwähnen, das der Magnet über einen Mosfet gesteuert wird (5v in/ 48v out).
Auch für einen MosFet dürften 500ms eine ziemliche Ewigkeit sein Wink

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.10.2019, 10:53
Beitrag #7
RE: Probleme mit Blinklicht auf bestimmte Zeit
(20.10.2019 09:21)Prospekteur schrieb:  Ich muß dazu erwähnen, das der Magnet über einen Mosfet gesteuert wird (5v in/ 48v out). Müsste mal schauen wie schnell ein Mosfet seine Schaltzustände als Intervall auf Zeit ändern kann. Aber Du hast Recht vermutlich liegt es an einem anderen Fehler der von mir verursacht wird;-).

Zu verstehen ist das aber nicht.
Im Eingangspost schreibst du etwas von mehreren Sekunden und jetzt sollen es kleiner 500ms sein.
Wie passt das zusammen.
Wenn es Probleme macht, poste doch mal den aktuellen Sketch.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.10.2019, 12:16 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2019 12:17 von Prospekteur.)
Beitrag #8
RE: Probleme mit Blinklicht auf bestimmte Zeit
(20.10.2019 10:53)hotsystems schrieb:  
(20.10.2019 09:21)Prospekteur schrieb:  Ich muß dazu erwähnen, das der Magnet über einen Mosfet gesteuert wird (5v in/ 48v out). Müsste mal schauen wie schnell ein Mosfet seine Schaltzustände als Intervall auf Zeit ändern kann. Aber Du hast Recht vermutlich liegt es an einem anderen Fehler der von mir verursacht wird;-).

Zu verstehen ist das aber nicht.
Im Eingangspost schreibst du etwas von mehreren Sekunden und jetzt sollen es kleiner 500ms sein.
Wie passt das zusammen.
Wenn es Probleme macht, poste doch mal den aktuellen Sketch.

Hab mich oben tatsächlich etwas unglücklich ausgedrückt;-). Wenn der Kontakt (digitalRead(contact_35_act_34) auf HIGH schaltet soll 10 Sekunden lang sich der Magnet im 500ms Takt An- und Ausschalten (Intervall). Also ich möchte 10 Sekunden lang den 500ms Intervall laufen lassen und dann den Magnet abschalten. Der Sketch oben ist mein Sketch den ich gerade zum testen des Magnetintervalles benutze. Erst wenn der korrekt läuft, werde ich Ihn in den gesamten Sketch einfügen;-). Danke übrigens für Eure rege Hilfe;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Probleme mit Adafruit_ST7735 Thor Wallhall 4 277 22.04.2020 19:52
Letzter Beitrag: Thor Wallhall
  Teilfunktion nur 1x nutzen, für begrenzte Zeit senseman 9 485 09.04.2020 10:31
Letzter Beitrag: Tommy56
  Probleme Webserver - Servos fahren unkontrolliert kiximek 10 614 07.04.2020 21:45
Letzter Beitrag: kiximek
  Probleme mit externen Librarys in Klasse reichs 3 336 30.03.2020 22:12
Letzter Beitrag: Tommy56
  Probleme mit Bibliothek juergen001 3 301 29.03.2020 13:19
Letzter Beitrag: Tommy56
  Probleme mit GPS-Modul an Nano DO3GE 3 379 26.02.2020 16:13
Letzter Beitrag: amithlon
  Probleme beim zusammenfügen Zweier Sketche Joel 18 1.507 07.01.2020 19:09
Letzter Beitrag: Tommy56
  Loop-Teil mit Interrupt für bestimmte Zeit stoppen Alter Fritz 11 1.136 23.12.2019 23:10
Letzter Beitrag: hotsystems
  Plötzlich Probleme mit SD Write DO3GE 5 590 21.12.2019 21:10
Letzter Beitrag: hotsystems
  Probleme mit SD-Karten und Displayansteuerung gleichzeitig reichs 7 782 13.11.2019 18:55
Letzter Beitrag: reichs

Gehe zu:


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