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
Bei Led Lauflicht delay ersetzen
09.02.2015, 21:47
Beitrag #1
Question Bei Led Lauflicht delay ersetzen
Hallo Leute
Ich stehe noch so ziemlich am Anfang in Sachen Arduino. Ich habe einen LED Lauflicht gebaut was durch einen Taster gesteuert oder angesteuert werden soll. Das heißt wenn der Taster ein mal gedrückt wird sollen 8 Leds mit ca. 1,5 Sekunden Intervall der Reihe nach aufleuchten und nach ca. 3 Sekunden Leuchtzeit in ca. 2,5 Sekunden Intervall wieder ausgehen.
Mit delay funktioniert das auch. Später will ich das Programm noch durch weitere Funktion wie Dauerlicht erweitern, und genau da habe ich das delay Problem.
Weil delay sperrt ja das Programm bis es durchläuft und der Taster wird in der Zeit nicht abgefragt.
Da habe ich an so einer Einstellung Möglichkeit gedacht:
Code:
// Einstellungen///////////////////////////////////////////

int warten = 2500;         // Wartezeit bis wieder AUS
int interval1 = 350;      // Schaltintervall für AN
int interval2 = 1000;    // Schaltintervall für AUS

// Einstellungen ende/////////////////////////////////////

Das Programm sieht so aus:
Code:
void auto() {
  Serial.println("Auto Licht");
  for (int i=10; i>0; i--)
  {
    delay(interval1);
   digitalWrite(i, LOW);        
  }
   delay(warten);
    
    for (int i=10; i>0; i--)
  {
    delay(interval2);
  digitalWrite(i, HIGH);    
  }  
}

Meine Frage ist wie realisiere ich das ganze mit millis. Denn das Thema habe ich noch nicht verstanden SadAngry. Die Einstellung der Intervalle möchte ich gerne behalten.

Gruß
partizan0180

Ich bin kein Zauberer, ich lerne noch...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.02.2015, 22:35
Beitrag #2
RE: Bei Led Lauflicht delay ersetzen
Hi,
hast Du Dir schonmal das "Blink without Delay" genauer betrachtet?
Gruß,
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
09.02.2015, 23:52 (Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2015 23:55 von partizan0180.)
Beitrag #3
RE: Bei Led Lauflicht delay ersetzen
Hi Thorsten
Ja habe ich. Nur leider nicht kapiert. Wie ich das mit dem Einstellungen machen soll. Und wie ich es mit einbinden kann.
Gruß
Partizan0180

Ich bin kein Zauberer, ich lerne noch...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2015, 09:54
Beitrag #4
RE: Bei Led Lauflicht delay ersetzen
Hi,
erstmal Schritt fuer Schritt. Wenn das mit den Einstellungen unklar ist, dann lass die erstmal weg und baue es ohne die Einstellungen auf millis() um. Danach bekommen wir das wieder rein.
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
10.02.2015, 15:45
Beitrag #5
RE: Bei Led Lauflicht delay ersetzen
Das mit millis habe ich noch nicht verstanden. Aber ich versuche es. Den nur so kann ich was lernen.
Und danke erstmal Thorsten für die Mühe.

Grüß
partizan0180

Ich bin kein Zauberer, ich lerne noch...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2015, 16:06
Beitrag #6
RE: Bei Led Lauflicht delay ersetzen
Hi,
versuche zuerst einmal, Dir das Blink without Delay genau zu betrachten und zu verstehen, ohne gleich irgendetwas daran erweitern zu wollen.
Danach versuche, die folgende Aufgabenstellung zu loesen: Aufleuchten lassen aller LEDs, wenn alle an sind, dann alle aus, dann wieder von vorne.
Ein Tipp dazu: Du musst Dir ueberlegen, welche Information Du speichern musst, wenn Du statt dem delay() aus der Funktion auto rausspringen wuerdest, um dann beim naechsten Aufruf genau da wieder anzufangen.
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
10.02.2015, 16:51 (Dieser Beitrag wurde zuletzt bearbeitet: 10.02.2015 16:52 von partizan0180.)
Beitrag #7
RE: Bei Led Lauflicht delay ersetzen
So habe erst mal soweit gebracht das alle LEDs auf ein mal blinken:

Code:
int  i;

int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated

long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
  for(int i=4; i<11; i++){
  // set the digital pin as output:
  pinMode(i, OUTPUT);
  }  
}

void loop()
{
  unsigned long currentMillis = millis();
for (int i=0; i<11; i++)
  {
  if(currentMillis - previousMillis > interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;  

    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
  }
    // set the LED with the ledState of the variable:
    digitalWrite(i, ledState);
  }
}

Ich bin kein Zauberer, ich lerne noch...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2015, 16:57
Beitrag #8
RE: Bei Led Lauflicht delay ersetzen
Hi,
das ist doch schonmal was.
Kleiner Fehler:
Code:
long previousMillis = 0;
Das sollte "unsigned long" sein.
Ausserdem:
Code:
for (int i=0; i<11; i++)
Das geht ueber die Pins 0 bis 10, Du willst aber nur 4 bis 10, oder?

Noch ein kleiner Tipp: Es geht zwar schneller, wenn man es anders macht, aber Du kannst mit digitalRead auch den Zustand eines Ausgangs abfragen. D.h. sowas wie
Code:
digitalWrite(i,!digitalRead(i));
...invertiert einen Ausgang.
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
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Delay nurmili 2 218 10.07.2016 16:55
Letzter Beitrag: nurmili
  Problem mit Delay und Millis funnyzocker 1 458 26.06.2016 09:54
Letzter Beitrag: hotsystems
  Kann ich in eine For Schleife einen delay einbauen JanGamer11 6 613 05.01.2016 12:34
Letzter Beitrag: Hilgi
  Rampe ohne Delay DC-Motor de_flexus 3 1.939 22.11.2015 13:07
Letzter Beitrag: frank2000
  Doppelblitz ohne Delay cleko 3 856 12.11.2015 08:02
Letzter Beitrag: Bitklopfer
  Langes delay - wie macht man das? Gelegenheitsbastler 17 2.429 02.09.2015 20:48
Letzter Beitrag: Gelegenheitsbastler
  mal wieder ein kleines Problem mit blinken ohne delay :) Sbbfreack 6 1.730 06.07.2015 15:59
Letzter Beitrag: Sbbfreack
  Blink ohne Delay - Merkwürdiger Fehler rave 7 1.834 11.05.2015 06:29
Letzter Beitrag: Bitklopfer
  Mal wieder ein Lauflicht Legolas085 7 3.656 05.05.2015 08:38
Letzter Beitrag: Thorsten Pferdekämper
  Multitasking mit millis statt delay LEDstar 2 1.247 15.04.2015 11:25
Letzter Beitrag: Bitklopfer

Gehe zu:


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