Sorry. Aber damit kann ich leider nichts anfangen, da ich kein Englisch verstehe.
Ok. Dann werde ich den gesamten Reset einfach herausnehmen.
Vielen Dank
Sorry. Aber damit kann ich leider nichts anfangen, da ich kein Englisch verstehe.
Ok. Dann werde ich den gesamten Reset einfach herausnehmen.
Vielen Dank
Beleuchtung eines Modellhauses? Schau mal ob du hier fündig wirst!
Sorry. Aber damit kann ich leider nichts anfangen, da ich kein Englisch verstehe.
aber binär und programmieren kannst du?
das hat mit Englisch wenig zu tun
wenn du einen unsigned int hat (sagen wir 8 bit ist als Beispiel einfacher)
https://translate.google.com/translate?hl=d…ow-di-millis%2F
ZitatAlles anzeigenMit vorzeichenbehafteten Nummern speichert der Compiler die Werte auf andere Weise im Speicher, eine als Two's Complement bekannte Methode: Die Nummer wird mit ihrem negierten Bit gespeichert, dh das Ergebnis einer NOT-Operation wird anstelle der richtigen Werte gespeichert. und dann wird beim Ergebnis 1 hinzugefügt. Lassen Sie uns beispielsweise einen Zeichentyp erhalten , der ein vorzeichenbehafteter 8-Bit-Wert ist, und den Wert 1 darin speichern:
00000001
Stattdessen lautet der Wert -1:
NICHT von 00000001 -> 11111110 + 00000001 = 11111111
Wenn wir nun eine Variable haben, die 0 enthält und wir 1 abziehen, ist das Ergebnis -1. Wenn Sie die binäre Darstellung und ein signiertes Zeichen verwenden, um das Ergebnis zu speichern, erhalten Sie Folgendes:
00000000 - 00000001 = 11111111
Lassen Sie uns eine weitere Operation ausführen: Lassen Sie uns eine Variable erhalten, die -1 enthält und 1 hinzufügen. Das Ergebnis wird 0. Dies ist eine binäre Darstellung:
11111111 + 00000001 = 1 00000000 -> 00000000
Wir können sehen, dass das Ergebnis eine 9-Bit-Zahl ist, aber wir verwenden eine 8-Bit-Variable. Daher wird das 9. Bit weggelassen und das Endergebnis wird durch die 8 niederwertigen Bits dargestellt, d. H. Der Wert 0 Dies schlägt uns vor, wie der Überlauf von Millis () verwaltet werden kann.
Wir haben zuvor gesagt, dass Millis () den Wert eines 32-Bit-Registers mit einer nicht gesampelten Zahl zurückgibt, die eine Zahl von bis zu 4.294.967.295 enthalten kann. Normalerweise planen wir zeitbasierte Operationen mit millis (), indem wir einen Wert an der von millis () zurückgegebenen Zahl hinzufügen, dh:
kann jeder mal selber rechnen, aber das millis() Überlaufproblem ist keines und schon x-mal gelöst und erklärt, aber ich gestehe ich habe da auch ab und an noch Verständnisschwierigkeiten, wichtig ist nur das man es richtig anwendet.
Ich bin bei der Programmierung Anfänger!
Ich bin bei der Programmierung Anfänger!
OK, dann braucht man es nicht im Detail erklären, aber dann nur sich für eine passende Lösung entscheiden
https://www.az-delivery.de/blogs/azdelive…=de&cache=false
https://forum.arduino.cc/index.php?topic=285280.0
loop()
{
if(millis() - startzeit1 > wartezeit1)
// ab hier ist die Zeit um, tu was
if(millis() - startzeit2 > wartezeit2)
// ab hier ist die Zeit um, tu was
if(millis() - startzeit3 > wartezeit3)
// ab hier ist die Zeit um, tu was
} // ende loop
https://www.roboternetz.de/community/thre…ll=1#post637726
ZitatAlles anzeigen4294967290 - 4294967280 = 10
4294967291 - 4294967280 = 11
4294967292 - 4294967280 = 12
4294967293 - 4294967280 = 13
4294967294 - 4294967280 = 14
4294967295 - 4294967280 = 15 (jetzt kommt der Überlauf)0 - 4294967280 = 16
1 - 4294967280 = 17
2 - 4294967280 = 18
3 - 4294967280 = 19
du siehst der Überlauf von millis(); stört so nicht.
Ich verstehe das Problem nicht, das Programm wird doch wohl kaum 49, Tage am Stück laufen
Warum speicherst du denn die Zeiten in den NrLED Array?
Lege dir doch zwei Arrays an, in dem einen steht die Startzeit der Leds und in dem anderen steht die Endzeit der Leds.
Diese beiden Arrays vergleichst du denn mit der Methode von jar:
Alles anzeigentotal falsche vorgehensweise
hast du dir das mal angesehen wie ich vorschlug?
https://playground.arduino.cc/Learning/BlinkWithoutDelayDe/
Code// Die Leuchtdauer bzw. Inaktivität soll zwischen 5 und 15 min betragen // -------------------------------------------------------------------- long Leuchten1 = random(5, 15)*60000; long Leuchten2 = random(5, 15)*60000; long Leuchten3 = random(5, 15)*60000; long Leuchten4 = random(5, 15)*60000; long Leuchten5 = random(5, 15)*60000;
ändere das erst mal gemäß millis zu
Code// Die Leuchtdauer bzw. Inaktivität soll zwischen 5 und 15 min betragen // -------------------------------------------------------------------- unsigned long Leuchten1 = random(5, 15)*60000; unsigned long Leuchten2 = random(5, 15)*60000; unsigned long Leuchten3 = random(5, 15)*60000; unsigned long Leuchten4 = random(5, 15)*60000; unsigned long Leuchten5 = random(5, 15)*60000;
dann hast du ja auch 5 Werte die du unabhängig voneinander prüfen und bedienen willst:
Code Alles anzeigenvoid loop() { // Code der immer laufen soll kommt hier hin. /* es wird kontrolliert, ob die Zeit für das Blink-Intervall schon abgelaufen ist * Wenn die Zeitdifferenz zwischen dem Letzten Abspeichern und der aktuellen Zeit größer * als das Intervall ist, so wird die nachfolgende Funktion ausgeführt. */ // Nr.1 if (millis() - previousMillis1 > Leuchten1) { previousMillis1 = millis(); // aktuelle Zeit abspeichern // LED Zustand wecheln. value1 = !value1; // Wert auf den Ausgang schreiben digitalWrite(ledPin1, value1); } // Nr.2 if (millis() - previousMillis2 > Leuchten2) { previousMillis2 = millis(); // aktuelle Zeit abspeichern // LED Zustand wecheln. value2 = !value2; // Wert auf den Ausgang schreiben digitalWrite(ledPin2, value2); } // das ganze 5x }
alles passend ergänzen und umbauen
Erkennst du das die Endzeit überschritten wurden, toggelst du einfach den Status der LED, sprich du änderst von HIGH auf LOW oder von LOW auf HIGH, je nach Status der LED.
P.S.: Für einen Anfänger ein akzeptabler Code, solange es funktioniert interssiert mich das Aussehen,die Schönheit und die Kompatiblität meines Codes auch nicht!
toggelst du einfach den Status der LED, sprich du änderst von HIGH auf LOW oder von LOW auf HIGH, je nach Status der LED.
na ja, toogeln geht, aber wer verschiedene Ein- und Aus- Zeiten haben will und nach jedem Durchlauf andere, der erweitert eben das Array auf
Einschaltzeit pro LED also EinLED1
Ausschaltzeit pro LED also AusLED1
Intervallzeit pro LED also IntervallAusLED1
und kann diese für jede LED nach jeder Aktion neu setzen!
Somit gibt es weder wiederholende Einschalt- oder Ausschalt-zeiten, auch keine wiederholenden Intervalle.
Alles anzeigenna ja, toogeln geht, aber wer verschiedene Ein- und Aus- Zeiten haben will und nach jedem Durchlauf andere, der erweitert eben das Array auf
Einschaltzeit pro LED also EinLED1
Ausschaltzeit pro LED also AusLED1
Intervallzeit pro LED also IntervallAusLED1
und kann diese für jede LED nach jeder Aktion neu setzen!
Somit gibt es weder wiederholende Einschalt- oder Ausschalt-zeiten, auch keine wiederholenden Intervalle.
Man bekommt auch nur mit zwei Arrays den Effekt hin mit unterschiedlichen Ausschaltzeiten.
Du fügst in dem einen Array immer den letzten Toggle (Sprich die Zeit / Millis) ein und in dem anderen den anstehenden Toggle (Sprich die Zeit / Millis). Danach setzt du einen neuen anstehenden Toggle der durch random bestimmt wird. Folglich erhälts du unterschiedliche Aus und Ein Zeiten der LED.
So sollten alle LED unterschiedlich an und aus gehen und immer unterschiedlich lange an und aus sein, oder nicht?
Man bekommt auch nur mit zwei Arrays den Effekt hin mit unterschiedlichen Ausschaltzeiten.
jain, was der TO halt wünscht.
Entweder Ein- Aus- oder Ein- Intervall- oder mal so mal so, das muss der TO aber mal im Kopf durchdenken was er genau wünscht!
Sorry. Aber damit kann ich leider nichts anfangen, da ich kein Englisch verstehe.
Ich bin bei der Programmierung Anfänger!
Das lernen dabei kann ihm keiner abnehmen, vor allem nicht SEINE Wünsche zu formulieren!
Ich bitte um Entschuldigung. Aber als absoluter Beginner und im Angesicht meines Alters bitte ich doch um Nachsicht.
JackerNils hat recht, dass der µC nie 48 Tage laufen wird. Daran habe ich absolut nicht gedacht. Sorry.
Hier habe ich mal die Beschaltung kreiert. Wenn die so in Ordnung ist, werde ich euch nicht mehr bemühen müssen.
Vielen lieben Dank im Voraus.
im Angesicht meines Alters
die 4 Monate älter lasse ich als Ausrede nicht zu
Zum Schaltbild, ist verständlich (wenn auch eher ein Verdrahtungsplan an statt Schaltbild)
Den Unterschied kann man noch lernen, wenn Zeit ist.
12V in den Arduino ist ziemlich viel, meist kannder kleine Regler auf 5V nicht viel Leistung verdauen, sicherer ist einen DC/DC Wandler zu 9V an Vin oder gleich einen 5V Wandler an +5V.
Denn deine LEDs verbrauchen 9x 20mA = 180mA
Schauen wir ins Datenblatt Uno mit 328p?
http://ww1.microchip.com/downloads/en/D…P_Datasheet.pdf
Seite 258
DC current VCC and GND pins 200.0 mA
könnte gerade so aufgehen, mir war mal so als wenn 50mA für die CPU selber gebraucht wird, hier bei dir ist nur noch 20mA für den CPU Kern über, 180mA brauche alle LEDs wenn sie an sind.
Hätten wir 12V eingespeist und davon müssten 7V im Regler bleiben da die CPU ja mit 5V läuft
Dann würden 7V * 0,2A = 1,4W in Wärme umgesetzt und das ist für den winzigen 5V Regler auf dem Bild etwas viel, der kann vermutlich sicher nur 0,7W bis 0,8W
LG jar
PS. Als Vorwiderstände sind aber eher 0207 Metallfilm 0,6W zu empfehlen denn 0207 Kohleschicht Widerstände haben nur 0,25W und es werden 0,28W pro Widerstand fällig, 1,4V * 0,02A!
0,25W und es werden 0,28W pro Widerstand fällig, 1,4V * 0,02A!
Es sind 0,028W also völlig i.O. Mal ne Null vergessen liegt vielleicht am Alter
liegt vielleicht am Alte
ja schiet Computer, man verlernt das Kopfrechnen
trotzdem nehme ich lieber Metallfilm statt Kohleschicht
Danke für die tollen Sprüche.
Tschüß
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!