Vielen Dank für das Video! Ich hatte noch gar nicht die Idee für so eine Funktion, finde sie aber super gut und das habe es mal direkt nach gestellt 👍👌
Wie würdest du den Code so zu erweitern, dass das Gleiche noch einmal kopiert wird und die nächsten 5 LEDs von pin 7 bis 11 etwas schneller laufen? Für modellbau polizei lichtbalken. Dankeschön
Hallo david h, ich habe dein Kommentar leider jetzt erst gelesen. Vielleicht schaff ich es die Tage ein kurzes Video zu deiner Frage zu machen. LG Kevin
Hi david h, ich glaube ich schaffe das Video heute nicht mehr. Hier der Code (Aufbau ist der Selbe), Video folgt dann noch: int ledPin[5] = {2, 3, 4, 5, 6}; int ledDirection = 1; int Counter = 0; unsigned long previousMillis = 0; const long interval = 1000; void setup() { for (int i = 0; i= interval) { previousMillis = currentMillis; if (ledDirection == 1){ digitalWrite(ledPin[Counter - 1],LOW); digitalWrite(ledPin[Counter],HIGH); Counter = Counter +1; if (Counter > 4){ Counter = 4; ledDirection = 2; } } if (ledDirection == 2){ digitalWrite(ledPin[Counter + 1],LOW); digitalWrite(ledPin[Counter],HIGH); Counter = Counter -1; if (Counter < 0){ Counter = 1; ledDirection = 1; } } } }
Vielen Dank für das Video! Trotz meiner Programmiererfahrung fiel es mir etwas schwer, deiner Erklärung zu folgen. Ich weiß nicht, ob du offen für Vorschläge bist, aber probiere uns nicht vor einen vollendeten Code zu setzen, sondern entwickle ihn mit uns gemeinsam. Vielleicht klappt das besser. Ich empfinde die Arduino IDE als eher ineffizient, deshalb habe ich mir mal die Freiheit genommen, und deinen Code neu zu schreiben und so effizient wie es mir möglich ist zu gestalten. Es ginge noch effizienter, wenn wir den gesamten Port D als Ausgang definieren und insgesamt 8 LED ansteuert, aber so hat das auch ganz gut geklappt. Das mit dem Counter ist halt etwas ungünstig, wenn man es mit Bitshifting macht, so wie ich es umgesetzt habe. Aber schau ihn dir gern mal an und lad' ihn auf deinen Arduino: // CODE START uint8_t counter = 0; unsigned long prevMillis = 0; unsigned long currMillis; unsigned long interval = 250; void setup() { // Ausgangsports DDRD = (0x7C); // LED Pins als Ausgang definieren DDRD = 0111 1100 } void loop() { currMillis = millis(); if (currMillis - prevMillis >= interval) { prevMillis = currMillis; PORTD = (1 6) { //PORTD = (0x04); counter = 2; } } } // CODE END Ich hoffe, ich nerve dich nicht mit meiner Diskussionsbereitschaft, aber ich bin dabei halt irgendwo voll in meinem Element und freue mich, wenn ich von dir was lerne.
Hi Markus mit ph, ich finde deine Kommentare klasse! Ich werde deinen Vorschlag versuchen in Zukunft bestmöglich umzusetzen (keinen fertigen Code zu zeigen, sondern diesen im Video aufbauen). Dein Code mit dem Port D ist super, aber ich versuche es möglichst leicht zu halten, um Anfängern den Einstieg zu erleichtern :-) Ich freu mich, dass du dich mit diesem Aufbau auseinandergesetzt hast und freu mich auch schon auf zukünftige Kommentare von dir. Liebe Grüße und bis bald 🙋♂️ Kevin
Hm, was ist aber wenn man nur 5 LEDs ansteuern will, weil man die anderen Digitalpins für eine andere Aufgabe benötigt? Aber der Code ist schön kurz und knackig. Für mich ist es etwas schwerer zu verstehen was der Code an manchen Stellen macht.
@@DoubleDee2000 Wenn deine Antwort auf meinen Code bezogen ist: Mein Code macht quasi genau das selbe, was der im Video macht. Kannst ihn gern einfach auf deinem Arduino ausprobieren. im void setup() setzt das "DDRB = (0x7C)" (das 0x7C ist die Hexadezimale Darstellung des binären "0111 1100", was genau die benötigten Ausgänge am Port D repräsentiert), die benötigten LED Pins auf "Ausgang", macht also das, was im Video mit dem "PinMode" gemacht wird. Mit dem Unterschied, dass wir direkt alle Register in einem schalten. Das ist hier in Textform schwierig zu erklären, weil ich auch nicht weiß, welches Vorwissen du hast. Mit dem Befehl PORTD im void loop() können wir grundsätzlich alle Pins aktivieren und deaktivieren. Was ich mit dem PORTD = (1
@@markusmitph8987 Aha, interesannt! Also ist das das Prinzip eines Schieberegisters! Naja, mein Vorwissen ist schon etwas mehr als ein Anfänger, ich hab mir schon einiges von RU-vid Beipielen angesehen und dann auf meine Bedürfnisse angepasst! Allerdings komme ich bei den anspruchsvolleren Sachen an meine Grenzen und weiß ohne Hilfe nicht weiter! In diesem Fall hat mir Kevin sehr geholfen und ich habe wieder einiges mehr dazugelernt! :D In vielen fällen ist es so, dass ich garnicht weiß, welche möglichkeiten es giebt, um das Programm so zu schreiben, das es dass macht, was ich will.