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
12.03.2015, 12:16
Beitrag #25
RE: Bei Led Lauflicht delay ersetzen
Hi,
was meinst Du mit "das Programm läuft komplett durch"? Das Programm läuft doch ständig, ab dem Moment, wenn die Versorgungsspannung anliegt. Kannst Du vielleicht mal genauer spezifizieren, was das Ding tun soll?
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
12.03.2015, 18:20 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2015 18:31 von partizan0180.)
Beitrag #26
RE: Bei Led Lauflicht delay ersetzen
Hi Thorsten
Es soll eine Art Treppenstufen Beleuchtung werden. Aber momentan nur zu Lernzweck.
Es gibt zwei Taster zb. Taster1 und Taster2. Wenn der Taster1 geklickt dann von Pin4 bis Pinn10 nacheinander led an, nach ein paar Sekunden Wartezeit wieder von Pinn4 bis Pinn10 nacheinander aus.
Mit dem Taster2 genau so nur in umgekehrter Reihenfolge.
Mit delay funktioniert das auch. Nur leider reagiert der Arduino werend delay Zeit auf nichts anderes, aber das ist ja auch allgemein bekannt.
Mit deinem Code mit millis funktioniert es wunderbar solange ich es aus der void loop aufrufe. Wenn ich es aber mit taster Code kombiniere funktioniert das nicht mehr richtig.
Genau gesagt, muss ich den Taster gedrückt halten damit sie leds wie gewünscht komplett durch laufen.

Hier ist noch der Code wie ich es probiert habe um die Taster mit einbinden:
Code:
int buttonPin1 = 2;    // Taster an Pin 2
int buttonPin2 = 3;    // Taster an Pin 3

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

int reading1;   // Wert des Eingangs
int reading2;
int previous1 = LOW;
int previous2 = LOW;

unsigned long time = 0;         // letzter Zeitwert bei dem der Ausgangzustand wechselte.
unsigned long debounce = 200;   // Entprellzeit

void setup()
{
// ButtonPins als eingang deklarieren
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  // Pins als Ausgang deklarieren und im Bootmodus auf aus stellen
  for (int i=4; i<11; i++)
  {  
  pinMode(i, OUTPUT);
  digitalWrite(i, HIGH);
  }
  ///////////////////////////////////////////////////////
  Serial.begin(9600);
  Serial.println("Programm start.....");
  
}
void loop()
{
  reading1 = digitalRead(buttonPin1);
  reading2 = digitalRead(buttonPin2);

  // Beim Wechsel des Eingangs von LOW zu HIGH und nach der Entprellzeit:
  if (reading1 == HIGH && previous1 == LOW && millis() - time > debounce) {
    time = millis();    
    handleOben();     // Tue irgendwas
    }
    
    
  if (reading2 == HIGH && previous2 == LOW && millis() - time > debounce) {
    time = millis();    
    //handleOben();     // Tue irgendwas
    digitalWrite(5,LOW);
    Serial.println("Taster 2 ");
    }  

  }



void handleOben() {
  Serial.println("Taster 1");
  
  static int i = 0;   // wie oben beschrieben
  static unsigned long lastTime = 0;  // da wurde das letzte Mal was gemacht

  unsigned long now = millis();  // "jetzt"

  // eins nach dem Anderen einschalten
  // i sagt uns, wie weit wir das letzte mal gekommen sind
  if(i < 11) {  // die letzte ist noch nicht an
     if(now - lastTime < interval1)
           return;   // die Zeit ist noch nicht vergangen, also nichts tun
     lastTime = now;   // wir werden _jetzt_ was tun
     digitalWrite(i, LOW);        
     i++;   // damit das naechste Mal die naechste angeht
     return;  // das war's fuer diese Runde
  };  // oben ist ein return, da brauchen wir kein else

  // hier wissen wir, dass i >= 11 ist, also das letzte Mal ist die letzte angegangen
  // Der Zustand "11" bedeutet, dass alle an sind und wir jetzt warten müssen,
  // bis wieder ausgeschaltet werden darf
  if(i == 11) {      
     if(now - lastTime < warten)
           return;   // die Zeit ist noch nicht vergangen, also nichts tun
     lastTime = now;   // warten ist zu Ende, wir schalten jetzt in den neuen Zustand
     i++;
     return;  // beim nächsten Aufruf geht's weiter
  };

  // hier wissen wir, dass i > 11 ist, also mindestens 12
  // es sind wieder 11 Lampen, mit den Pins 0 bis 10
  // also geht i hier von 12 bis 22

  if(i < 23) {  // d.h. mindestens eine Lampe noch an
     if(now - lastTime < interval2)
           return;   // die Zeit ist noch nicht vergangen, also nichts tun
     lastTime = now;   // wir werden _jetzt_ was tun
     digitalWrite(i - 12, HIGH);  // im Zustand i wird die (i-12)te Lampe abgeschaltet        
     i++;   // damit das naechste Mal die naechste ausgeht
     return;  // das war's fuer diese Runde
  };  

  // wenn das Coding bis hier kommt, dann sind alle Lampen wieder aus
  // i ist jetzt 23, aber das müssen wir nicht prüfen
  // i muss jetzt zurueck gesetzt werden,
  // damit es das naechste Mal wieder von vorne anfaengt
  i = 0;
}

Gruß
Partizan0180

Ich bin kein Zauberer, ich lerne noch...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.03.2015, 19:06
Beitrag #27
RE: Bei Led Lauflicht delay ersetzen
Hi,
da brauchst Du eine globale Variable, die anzeigt, ob die Taste gedrückt wurde. In der Funktion handleOben wird diese Variable abgefragt. Nur falls der Taster gedrückt wurde, passiert überhaupt etwas. Am Ende (wenn i wieder auf 0 gesetzt wird), wird auch die globale Variable wieder zurück gesetzt.
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
12.03.2015, 19:35
Beitrag #28
RE: Bei Led Lauflicht delay ersetzen
Hi Thorsten,

Danke für den Denkanstoß , werde am Wochenende mich damit weiter befassen. Muss jetzt wieder zu Arbeit. Sad Meine zweite Schicht für heute fängt gleich an. Ich will heute und morgen ein Paar elektrische Anlagen warten, Geht aber nur nachts wenn die anderen Kollegen nicht mehr da Sind.

Gruß
partizan0180

Ich bin kein Zauberer, ich lerne noch...
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 217 10.07.2016 16:55
Letzter Beitrag: nurmili
  Problem mit Delay und Millis funnyzocker 1 449 26.06.2016 09:54
Letzter Beitrag: hotsystems
  Kann ich in eine For Schleife einen delay einbauen JanGamer11 6 609 05.01.2016 12:34
Letzter Beitrag: Hilgi
  Rampe ohne Delay DC-Motor de_flexus 3 1.929 22.11.2015 13:07
Letzter Beitrag: frank2000
  Doppelblitz ohne Delay cleko 3 848 12.11.2015 08:02
Letzter Beitrag: Bitklopfer
  Langes delay - wie macht man das? Gelegenheitsbastler 17 2.409 02.09.2015 20:48
Letzter Beitrag: Gelegenheitsbastler
  mal wieder ein kleines Problem mit blinken ohne delay :) Sbbfreack 6 1.724 06.07.2015 15:59
Letzter Beitrag: Sbbfreack
  Blink ohne Delay - Merkwürdiger Fehler rave 7 1.825 11.05.2015 06:29
Letzter Beitrag: Bitklopfer
  Mal wieder ein Lauflicht Legolas085 7 3.637 05.05.2015 08:38
Letzter Beitrag: Thorsten Pferdekämper
  Multitasking mit millis statt delay LEDstar 2 1.234 15.04.2015 11:25
Letzter Beitrag: Bitklopfer

Gehe zu:


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