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
22.08.2014, 17:36
Beitrag #17
RE: tageszeitabhängige Funktion
Tut mir leid- ich blicke nicht (mehr) durch... blinken ohne delay habe ich zwar verstanden, aber wie ich hochfade, um dann ohne delay eine bestimmte Zeit auf HIGH zu leiben und dann wieder runter zu faden schaffe ich nicht...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.08.2014, 19:00
Beitrag #18
RE: tageszeitabhängige Funktion
Hi,
versuche erstmal einen Sketch zu schreiben, 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!
Prinzipiell geht das so: Du definierst Dir ein paar globale oder zumindest statische Variablen, die den momentanen Zustand des Systems enthalten. Also z.B. eine, die speichert, ob Du gerade am Hochdimmen, Runterdimmen, Warten im HIGH-Zustand oder Warten im LOW-Zustand bist. Eine weitere, die die momentane Helligkeit der LED enthält. Außerdem eine Variable (unsigned Long), die die Zeit (millis()) der letzten Änderung speichert.
In loop() prüfst Du dann je nach Zustand, ob es Zeit für eine Zustandsänderung (also weiter Hoch-/Runterdimmen, ausschalten, einschalten) ist. Falls nein, einfach "return". Falls ja, dann die entsprechende Änderung vornehmen und die Zeit der letzten Änderung auf "jetzt" setzen.
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
22.08.2014, 19:41 (Dieser Beitrag wurde zuletzt bearbeitet: 22.08.2014 20:06 von MaHa1976.)
Beitrag #19
RE: tageszeitabhängige Funktion
gibt es dafür irgend ein Beispiel?

(22.08.2014 19:41)MaHa1976 schrieb:  gibt es dafür irgend ein Beispiel?

hochfaden nach dem starten und zumindest mal auf high bleiben klappt so...

int led = 10;
int brightness = 0;
int fadeAmount = 5;
void setup()
{
pinMode(led, OUTPUT);
}

void loop()
{
if(brightness < 255)
{
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
delay(30);
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.08.2014, 20:37 (Dieser Beitrag wurde zuletzt bearbeitet: 22.08.2014 20:41 von Sascha.)
Beitrag #20
RE: tageszeitabhängige Funktion
Hi Maha, erstmal zu der Sache mit dem Smartphone, Falls du Android hast, kannst du die mal das S2 Terminal anschauen, eigentlich eine coole Sache, ist zwar nicht so einfach abzulesen wie ein LCD aber wenn man den Status nicht jede Sekunde aktualisiert haben will, sondern nur ein mal am Tag nachschauen will ob noch alles ok ist reicht es vollkommen aus. Man benötigt halt noch ein HC 05 Bluetooth Modul. Habe mir auch die Woche eins zugelegt, funktioniert eigentlich echt gut, bis auf das Problem, dass ich einige Sachen noch nicht so programmieren kann wie ich es gerne hätt (liegt ab nicht an Bluetooth, sondern an meiner Unfähigkeit). Jetzt versuche ich mich mal an deinem Code, falls ich es hinbekomme melde ich mich gleich Smile
MFg Sascha

Achso, theoretisch kannst du dann auch deine Uhr darüber stellen.
Und das Licht ein oder ausschalten usw.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.08.2014, 20:42 (Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2014 10:57 von MaHa1976.)
Beitrag #21
RE: tageszeitabhängige Funktion
ich hab mal einiges "zusammen kopiert", richtig verstanden habe ich es noch nicht... aber es funktioniert zumindest soweit, dass bei einem HIGH- Pegel, simmuliert durch den Taster und einer unteschrittenen Helligkeitsgrenze die LED hochdimmt...
Ungewollt, aber sehr sinnvoll für meine Anwendung bleibt die Helligkeit bei einem geringerm Level stehen, wenn das Eingangssignal zu früh abfällt...

Code:
int led = 10;          
int brightness = 0;    
int fadeAmount = 1;
int ButtonPin = 2;
int Taste = 0;
int Sensor = 0;
int ValueSensor = 0;
int Empfindlichkeit = 180;
long previousMillis = 0;
long interval = 10;          

void setup()  
{
  pinMode(led, OUTPUT);
  pinMode(ButtonPin, INPUT);
}

void loop()
{
       unsigned long currentMillis = millis();
       if(currentMillis - previousMillis > interval)
   {
       previousMillis = currentMillis;  
       ValueSensor = analogRead(Sensor);
       Taste = digitalRead(ButtonPin);
      
  if(((Taste == HIGH) && (ValueSensor >= Empfindlichkeit)) && (brightness < 255))
    {
    analogWrite(led, brightness);    
    brightness = brightness + fadeAmount;
    }
  }
}

Hi Sascha, davon bin ich noch ganz weit weg- aber danke für deinen Input- ich hoffe, dass ich irgendwann so weit bin, dass ich an so was denken kann...

Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.08.2014, 20:53
Beitrag #22
RE: tageszeitabhängige Funktion
Hehe, ungefähr so wollte ich es dir auch basteln, viel mehr kann ich auch nichtWink ich finde es halt immer hilfreich, wenn neben dran steht was passiert, denn sonst verstehe man ersmal garnix und kann es auch nicht nachvollziehen, ich finde Verständnis kommt mit der Übung und nicht damit, dass man von Anfang an jede Zeile selbst schreibt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.08.2014, 20:59
Beitrag #23
RE: tageszeitabhängige Funktion
ah...ich lerne analytisch... sprich was fertiges Stück für Stück zerlegen um zu sehen wann es kaputt geht...

so habe ich es bei diversen Beispielen gemacht, bis ich dahinter gekommen bin, was wofür verantwortlich ist...
ersteunlich wie vieles davon unverändert läuft, selbst wenn 8 Zeilen vom Code fehlen...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.08.2014, 21:04 (Dieser Beitrag wurde zuletzt bearbeitet: 22.08.2014 21:36 von Sascha.)
Beitrag #24
RE: tageszeitabhängige Funktion
int led = 10;
int brightness = 0;
int fadeAmount = 1;
int ButtonPin = 2;
int Taste = 0;
int Sensor = 0;
int ValueSensor = 0;
int Empfindlichkeit = 180;
long previousMillis = 0; ///////bis hier hast du es denke ich mal verstanden
long interval = 10; /////// so zusagen der ersatz für delay, hier 10 millis()

void setup()
{
pinMode(led, OUTPUT);
pinMode(ButtonPin, INPUT);
}

void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) //wenn aktuelle zeit minus startzeitpunkt deiner Pause größer als der Intervall (in deinem fall 0,01sek) passiert was da folt
{
previousMillis = currentMillis; //also das hiermit stellst du die zeit glaube ich wieder auf 0
ValueSensor = analogRead(Sensor);//und das das muss glaube ich nicht hier drin stehn
Taste = digitalRead(ButtonPin);//und das das auc hnicht

if(((Taste == HIGH) && (ValueSensor >= Empfindlichkeit)) && (brightness < 255)) //und die Funktion läuft auch in der pause, da du vorher kein= hast
{
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
}
}
}

Ich schreibe dir mal kurz etwas, dass ich zuhause testen kann, weil ich hab nicht alle teile die du nutzt

ok, wenn man genau hin schaut, sind da viele Sachen, die nicht so ganz korrekt sind, aber ich bin da nicht der schnellste

/*Hast du den Taster richt mit einem Wiederstand verbunden?
Wenn ja schließ ih mal an pin 8 und die led an pin 10, hab versucht es schritt für schritt
zu erklären, bis auf die sachen, die ich dir schon zu deinem code geschrieben habe.
hier sollte wenn du 1 mal den taster drückst die led für 5 sek an gehn
und dann wieder aus bis du den taster drückst, ich habe es nicht getestet,
da ich gerade zu faul bin meine sachren raus zu holen.
wenn es nicht geht oder du fragen hast, dann melde dich*/



int buttonState = 0;// die 0 bedeutet, das der startwert 0 ist
int counter = 0; //Zähler funktion, die dir beim umgang mit dem Taster hilft
int buttonStateHIGH = 0;

long previousMillis = 0;
long interval = 5000; //5sekunden

int Led1 = 10;
int buttonPin = 8;

void setup() {
Serial.begin(9600); //sagt, dass du dir Werte auf derm serialmonitor anschauen kannst, mit einer übertragung von 9600
pinMode(buttonPin, INPUT);
pinMode(Led1, OUTPUT);
}

void loop(){

Serial.print("ZÄHLER");//Die "" nedeuten, dass der tect dazwichen im s.monitor zu sehen sein wird
Serial.println(counter);//der wert der Zählers wir auf dem s.monitor angezeigt

unsigned long currentMillis = millis();

buttonState = digitalRead(buttonPin);// buttonState, auslesen vom pin 8
if (buttonState == HIGH) //liegt Spannung am pin 8 an,
{ //dann
buttonStateHIGH = 1; //ist der buttonStateHIGH = 1
}
if (buttonState == LOW && buttonStateHIGH == 1)//ist pin 8 wieder low und buttonStateHIGH gleich 1 //alles zusammen bis hier heißt einfach nut, taster wurde gedrückt und losgelassen
{
counter++;//dann wir der counter +1 gerechnet, also 0von 0 auf 1 oder von 1 auf 2 usw
buttonStateHIGH = 0;//buttonStateHIGH muss wiedr auf 0 gesetz werden, da man sonst den knopf nicht wieder betätigen kann
}
/*if(counter==2){////der counter kann max bis 2 gehn, da er dann wieder auf 0 gesetzt wird
counter=0;
}*/ //brauchen wir für das bsp nicht

if( counter == 1 )
{
digitalWrite( Led1, HIGH);

if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
counter=0; //nach der intervallzeit geht der zähler auf 0 und die led aus
}
}
}
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.858 14.06.2015 22:31
Letzter Beitrag: raspido
Wink Pulse Sensor Amped ohne Processing Sandmannn 16 3.735 18.02.2015 17:05
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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