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
Ablaufsteuerung ohne delay - tageszeitabhängige Dimmer- Funktion
03.09.2014, 10:39
Beitrag #33
RE: Ablaufsteuerung ohne delay - tageszeitabhängige Dimmer- Funktion
Hallo an alle,

ich stehe vor einem ähnlichen Problem wie MaHa1976. Ich benötige ebenfalls einen Sketch, der eine LED langsam hochfadet, dann eine bestimmte Zeit an bleibt, dann langsam runterfaded und dann eine bestimmte Zeit ausbleibt. Dann wieder von vorne. Das ganze natürlich ohne Delay! Zur zeit habe ich dies, aber nur mit Delay, was sich aber mehr und mehr zum Problem wird. Hochfaden oder runterfaden ohne delay funktioniert aber nicht die Kombination aus den 4 Zuständen.

Bin dankbar für alle Antworten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.09.2014, 17:38 (Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2014 17:41 von MaHa1976.)
Beitrag #34
RE: Ablaufsteuerung ohne delay - tageszeitabhängige Dimmer- Funktion
Hast du mal einen meiner Codes getestet?

Die funktionieren zwar noch nicht richtig... aber vielleicht kommst du ja auf den Fehler... Rein theoretisch sollte es so aussehen:


SETUP

Setze Zeit auf 0;
Zeit wird in ms gemessen;

LOOP

IF Startzustand zu trifft, LED aber nicht auf Zielwert
{
Zähle Zeit hoch
Erhöhe pro Zeitschritt die Helligkeit um einen Schritt
Setze Zeit wieder auf 0
}

IF Helligkeit der LED auf Zielwert
{
Zähle Zeit hoch
Halte den Zielwert für die Helligkeit


IF Zeit hochgezählt bis vorgegebene Haltedauer
{
zähle Zeit weiter
reduziere je Zeitschritt die Helligkeit um einen Wert


IF Helligkeit hat unteren Grenzwert erreicht
{
setze Zeit wieder auf 0
}
}
}


Der rote Teil prüft also erstmal ob deine Startbedingung stimmt, wenn ja dimmt die LED hoch. Wenn das erledigt ist, wird der Zeitzähler wieder auf 0 gesetzt.
Der blaue Teil prüft, ob die Helligkeit der LED der Zielhelligkeit entspricht. Falls ja beginnt die Zeit mit jedem Durchlaufen der Schleife die Zeit hoch zu zählen, bis diese der vorgegebenen Haltedauer entspricht.
Den roten Teil und den blauen Teil hätte ich gleich gewertet, daher als separate Teile untereinander...
vielleicht habe ich auch da ein Verständnisproblem...
Im grünen Teil wird dann nach der abgelaufenen Haltedauer wieder herunter gedimmt- das habe ich wieder dem blauen Teil untergeordnet...
Und zum Schluß sollte dann die Zeit wieder auf 0 gesetzt werden, damit beim nächsten Start der Timer neu anlaufen kann...

Aber hier im Forum gibt es kaum jemanden der Arduino so richtig versteht, bzgl. der Timer- es kommt immer nur der Hinweis, dass es gehen muss, da es ja bei blinken ohne delay auch geht...

rkuehne hat mir aber schon via PN ein gutes Stück weiter geholfen und möchte sich mal noch etwas näher mit meinen Versuchen befassen... mal schauen- ich bin da guter Dinge...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.09.2014, 20:41
Beitrag #35
RE: Ablaufsteuerung ohne delay - tageszeitabhängige Dimmer- Funktion
Ich habe 2 Codes zusammen gebastelt

beim ersten blendet die LED auf, bleibt dann aber dauerhaft an...

beim zweiten blendet sie hoch und sofort wieder runter wenn man den Taster losläßt...

findet den Unterschied... ;-)

// Konstanten
// Pins
const unsigned int led = 10; // LED - später dann MOSFeT für Power-LED
const unsigned int ButtonPin = 2; // Taster - später PIR- Sensor
const unsigned int Sensor = 0; // Helligkeitssensor für UMgebungshelligkeit
// Fadingraster
const unsigned int fadeAmount1 = 5; // Stufen im Fadingraster
const unsigned int fadeAmount2 = 1; // Stufen im Fadingraster
// Richtwert Helligkeit
const unsigned int Empfindlichkeit = 20; // anpassbare Helligkeitsschwelle
// Zeiten
const unsigned long interval1 = 10; // Zeitraum zwischen Fadingstufen
const unsigned long interval2 = 5000; // Haltezeit der LED wenn
// Variablen
unsigned int brightness = 0; // aktuelle Helligkeit der LED
unsigned int ValueSensor = 0; // aktueller Helligkeitswert des Sensors
unsigned int Taste = 0; // Status Taster
// Zeiten
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 1;
unsigned long currentMillis1;
unsigned long currentMillis2;
void setup()
{
pinMode(led, OUTPUT);
pinMode(ButtonPin, INPUT);
}
void loop()
{
unsigned long currentMillis1 = millis();
unsigned long currentMillis2 = millis();
ValueSensor = analogRead(Sensor);
Taste = digitalRead(ButtonPin);

if(((Taste == HIGH) && (ValueSensor >= Empfindlichkeit))
&& (brightness < 255) && (currentMillis1 - previousMillis1 > interval1))
// wenn die Taste gedrückt und es dunkel ist, die LED die max. Helligkeit
// noch nicht erreicht hat, dann ->
{
previousMillis1 = currentMillis1;
analogWrite(led, brightness); // erhöhe die Helligkeit der LED ->
brightness = brightness + fadeAmount1; // in den Schritten wie oben definiert // setze die Zeit wieder auf 0


if((brightness > 250) && (currentMillis2 - previousMillis2 > interval2))

{
previousMillis2 = currentMillis2;
analogWrite(led, 255); // halte den aktuellen Helligkeitswert der LED für die oben definierte Haltezeit
}


if((Taste == LOW) && (brightness > 2) && (currentMillis1 - previousMillis1 > interval1))
// die Taste ist nicht gedrückt und die LED ist an? ->
{
analogWrite(led, brightness); // dann blende die LED wieder aus
brightness = brightness - fadeAmount2; // blende in den oben definierten Schritten aus
previousMillis1 = currentMillis1; // setze die Zeit auf 0
}
}
}





// Konstanten
// Pins
const unsigned int led = 10; // LED - später dann MOSFeT für Power-LED
const unsigned int ButtonPin = 2; // Taster - später PIR- Sensor
const unsigned int Sensor = 0; // Helligkeitssensor für UMgebungshelligkeit
// Fadingraster
const unsigned int fadeAmount1 = 5; // Stufen im Fadingraster
const unsigned int fadeAmount2 = 1; // Stufen im Fadingraster
// Richtwert Helligkeit
const unsigned int Empfindlichkeit = 20; // anpassbare Helligkeitsschwelle
// Zeiten
const unsigned long interval1 = 10; // Zeitraum zwischen Fadingstufen
const unsigned long interval2 = 5000; // Haltezeit der LED wenn
// Variablen
unsigned int brightness = 0; // aktuelle Helligkeit der LED
unsigned int ValueSensor = 0; // aktueller Helligkeitswert des Sensors
unsigned int Taste = 0; // Status Taster
// Zeiten
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 1;
unsigned long currentMillis1;
unsigned long currentMillis2;
void setup()
{
pinMode(led, OUTPUT);
pinMode(ButtonPin, INPUT);
}
void loop()
{
unsigned long currentMillis1 = millis();
unsigned long currentMillis2 = millis();
ValueSensor = analogRead(Sensor);
Taste = digitalRead(ButtonPin);

if(((Taste == HIGH) && (ValueSensor >= Empfindlichkeit))
&& (brightness < 255) && (currentMillis1 - previousMillis1 > interval1))
// wenn die Taste gedrückt und es dunkel ist, die LED die max. Helligkeit
// noch nicht erreicht hat, dann ->
{
previousMillis1 = currentMillis1;
analogWrite(led, brightness); // erhöhe die Helligkeit der LED ->
brightness = brightness + fadeAmount1; // in den Schritten wie oben definiert // setze die Zeit wieder auf 0


if((brightness > 250) && (currentMillis2 - previousMillis2 > interval2))

{
previousMillis2 = currentMillis2;
analogWrite(led, 255); // halte den aktuellen Helligkeitswert der LED für die oben definierte Haltezeit
}
}

if((Taste == LOW) && (brightness > 2) && (currentMillis1 - previousMillis1 > interval1))
// die Taste ist nicht gedrückt und die LED ist an? ->
{
analogWrite(led, brightness); // dann blende die LED wieder aus
brightness = brightness - fadeAmount2; // blende in den oben definierten Schritten aus
previousMillis1 = currentMillis1; // setze die Zeit auf 0
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.09.2014, 21:31
Beitrag #36
RE: Ablaufsteuerung ohne delay - tageszeitabhängige Dimmer- Funktion
Hallo,

habe es nun für eine Lampe hinbekommen. Weiß jemand wie dies in einen Ablauf bekomme? z.B. 4 LEDs und diese in Lauflicht schalten wie Led1,Led2,Led3,Led4,Led3,Led2 und wieder von vorne?

Viele Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.09.2014, 16:54
Beitrag #37
RE: Ablaufsteuerung ohne delay - tageszeitabhängige Dimmer- Funktion
Mit delay ist das simple... Die erst anschalten, dann delay, die erste ausschalten und die zweite anschalten, dann wieder delay..... Und so weiter...

Sowas findest aber auch schon bei den Beispielen....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.09.2014, 17:45
Beitrag #38
RE: Ablaufsteuerung ohne delay - tageszeitabhängige Dimmer- Funktion
Ja das habe ich auch schon so gemacht, aber das delay ist halt hinderlich. Es gibt leider auch im gesamten Internet kein wirkliches Beispiel. Es ware ja auch nur wichtig eine kleines Beispiel zu haben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2014, 00:38
Beitrag #39
RE: Ablaufsteuerung ohne delay - tageszeitabhängige Dimmer- Funktion
Also wenn es rein um an/aus geht ist das kein Ding... Da adaptiert du das blinken ohne delay mit mehreren LEDs und je eigenen Parameter für die Zeiten... Das geht schon.... Nur mit dimmen ist es nicht kombinierbar....

Aber auch ein Lauflicht gibt es ohne delay bei den BeispielSketchen...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Hilfe beim Problem mit dem Delay raspido 11 2.856 14.06.2015 22:31
Letzter Beitrag: raspido
Wink Pulse Sensor Amped ohne Processing Sandmannn 16 3.715 18.02.2015 17:05
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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