Bin Neuling und brauche mal Hilfe. bei einem Intervall Stetch mit einer Festen und einer ansteigender Zeitspane.
Wie könnte man folgendes realisieren.
30sekunden LED Ein / 1 Sekunde LED aus
30sekunden LED Ein / 2 Sekunde LED aus
30sekunden LED Ein / 3 Sekunde LED aus
Und so weiter …..
Wie wärs wenn Du mal ein Beispiel mit konstanter Zeitspanne senden würdest?
Dann gibst Du statt der Zahl einen Variable in die Funktion und änderst den wert der Variable jedesmal becor oder wenn Du die Funktion wieder aurufst.
Grüße Uwe
DrunkenDude:
eigentlich wollte ich auf delay Verzichten.
Anbei mal ein Beispielcode, der das wenigstens eine zeitlang macht:
#define LEDPIN 13
void setup() {
Serial.begin(9600);
pinMode(LEDPIN,OUTPUT);
}
boolean eineSekundeIstUm()
{
static unsigned long lastSekunde;
if (millis()/1000!= lastSekunde)
{
lastSekunde=millis()/1000;
return true;
}
return false;
}
int einSchaltzeit=30;
int ausSchaltzeit=1;
void schalten()
{
static int sekundeImIntervall=0;
if (sekundeImIntervall<einSchaltzeit)
{
if (digitalRead(LEDPIN)==LOW)
{
digitalWrite(LEDPIN,HIGH);
Serial.println(" EIN");
}
}
else if (digitalRead(LEDPIN)==HIGH)
{
digitalWrite(LEDPIN,LOW);
Serial.println(" AUS");
}
sekundeImIntervall++;
if (sekundeImIntervall>=einSchaltzeit+ausSchaltzeit)
{
sekundeImIntervall=0;
ausSchaltzeit++;
}
}
void loop() {
if (eineSekundeIstUm()) schalten();
}
Da die Sekundenzähler als Integervariablen deklariert sind, die bis maximal 32767 zählen, sollte das laufen, bis ca.
(32767-30-1)= 32736 Ein-/Ausschaltintervalle abgelaufen sind.
Wird der Controller denn irgendwann mal resettet, dass das Programm wieder von vorne anfängt?
Oder muss das so gemacht sein, dass dass Ausschaltintervall über Wochen, Monate und Jahre immer länger und länger wird?
In dem Fall müßte der Code nämlich nachgearbeitet werden, damit auch längere Intervallzeiten als 32767 Sekunden verarbeitet werden können.
... und wieder einmal das rundum-sorglos Paket. Schade eigentlich. @Jurs: Ich finde es gut das Du den Leuten hier helfen möchtest, aber es hatte sicher einen Grund das z.B. Uwe gerade KEIN Beispiel gepostet hat. Der Gedanke dabei heißt: "Hilfe zur Selbsthilfe". Wenn Du den Leuten direkt eine vollständige Lösung präsentierst, it das zwar Super für die konkrete Problemlösung, allerdings fällt der Lerneffekt recht klein aus. Und gerade bei solchen einfachen Problemen, ist es evtl. besser, wenn die Fragesteller die Lösung mit etwas Unterstützung selbst entwickeln.
Aber das ist nur meine persönliche Meinung. Hier geht es ja nicht um einen Wettkampf - "Wer hat am schnellsten eine tolle Lösung".
Mario.
Ich kann mich nur Mario anschließen.
DrunkenDude sollte mal sein Hirschmalz einsetzen und mal etwas produzieren. Wenn er nicht weiß wie man ein Interwall dynamisch ändern kann, dann sollte er mal den Sketch mit konstanten Auszeit schreiben. Dann hätten wir ihm schon einige Schupser in die richtige Richtung gegeben.
Grüße Uwe
Jurs' Ansatz ist wohl "Lernt man mehr von guten Beispielen oder von schlechten ?"
Und da es soviel Arduino-Software zu finden gibt, bei der auch einiges an Murks ist,
hat man es oft damit zu tun, dass "gefundene Software" hier im Forum Probleme beim Verwenden macht.
( OK, meist weil sie nicht verstanden wurde ) Ist es nicht besser, die Leute erstmal was Ordentliches ausprobieren zu lassen, was man dann vermutlich auch besser verstehen kann?
Soweit kann ich Jurs verstehen ( falls ich ihn da richtig verstehe ), und ich bewundere auch, wie flott er jeweils ( Beispiel-Code == Muster-Lösungen ) hervorzaubert, die mir auch vom Stil her sehr gut gefallen und die viel Gutes verständlich demonstrieren.
Trotzdem haben Mario und Uwe auch Recht
In diesem Fall: DD ist begeistert, und dass die ansteigende Zeitspanne auf etwas mehr als 8 Stunden begrenzt ist, verleitet keinen ( ausser jurs ), diese Einschränkung noch wegzuoptimieren.
Ich geh mal davon aus, dass dies jurs Spass macht und er sich nicht mit
"Hilft denn keiner dem armen Kerl, muss ich immer alles selber machen"
quält
Ich gönne ihm den Spass