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
Led 2,5 Hz
02.07.2014, 20:55
Beitrag #1
Led 2,5 Hz
Hallo Smile
ich möchte mit Hilfe eines arduino (Nano v3. 0 Bausteine ATMEGA328P) einen Mosfet (drei Hochleistungs Leds) mit 2,5 Hz Schalten...
Jetz frag ich mich wie ich dies Programmtechnisch löse Sad
muss ich eine zeit für die while Schleife mit einberechnen und dann die Zeiten für an aus verkürzen?
Danke schon mal Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.07.2014, 22:21
Beitrag #2
RE: Led 2,5 Hz
Hi,
wenn Du die Zeit mit millis() misst, dann sollte es da kein Problem geben. Einfach inmer wieder abfragen, ob seit dem letzten Schaltvorgang 200ms vergangen sind und dann den Zustand der LED invertieren.
(Niemals fuer sowas delay() verwenden.)
Also etwa so:

Code:
void loop() {

  static unsigned long last = millis();  
  
  if(millis() - last >= 200) {
    // hier jetzt den Zustand der LED invertieren
    ...
     last += 200;
  };  
}

Dadurch dass "last" nicht wirklich das aktuelle millis() benutzt, sondern immer um 200 erhoeht wird, gleichen sich kleine Fehler aus.

Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.07.2014, 10:18
Beitrag #3
RE: Led 2,5 Hz
(02.07.2014 22:21)Thorsten Pferdekämper schrieb:  Hi,
wenn Du die Zeit mit millis() misst, dann sollte es da kein Problem geben. Einfach inmer wieder abfragen, ob seit dem letzten Schaltvorgang 200ms vergangen sind und dann den Zustand der LED invertieren.
(Niemals fuer sowas delay() verwenden.)
Also etwa so:

Code:
void loop() {

  static unsigned long last = millis();  
  
  if(millis() - last >= 200) {
    // hier jetzt den Zustand der LED invertieren
    ...
     last += 200;
  };  
}

Dadurch dass "last" nicht wirklich das aktuelle millis() benutzt, sondern immer um 200 erhoeht wird, gleichen sich kleine Fehler aus.

Gruss,
Thorsten

int LED = 13;
float wert;


void setup()
{
pinMode(LED, OUTPUT);
Serial.begin(9600);
wert = 2.5;
}
void loop() {

static unsigned long last = millis();

if(millis() - last >= 200) {
// hier jetzt den Zustand der LED invertieren
int ledStatus = digitalRead(LED);
if(ledStatus == HIGH) digitalWrite(LED, LOW);
else digitalWrite(LED, HIGH);
last += 200;
};
}

so müsste es dann passen oder? Wink danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.07.2014, 10:55
Beitrag #4
RE: Led 2,5 Hz
Ja, so war's gemeint.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


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