ich bin komplett neu hier im Forum und habe seit 2 Tagen einen Arduino UNO Ver 3.
Ich möchte für meine Modellbahn verschiedene LED´s programmieren, komme jedoch mit der Goggle-Suche nicht weiter.
Ich bräuchte einen Code für das IDE um 5 LED´s zu steuern.
Zwei Paare mit jeweils 2 LED´s und eine einzelne.
Paar 1 und 2, jeweils eine rote und gelbe LED sollen unregelmäßig glimmen um Kohle/Glut, in einer Ausschlacke-Anlage darzustellen. Ich plane zwei Glutherde an 2 verschiedenen Stellen.
Die 5. LED´s soll ein Schweißen simmulieren, also mehrere kurze (verschieden lange) Lichtblitze abgeben.
Das musst du jetzt verstehen, anwenden, erweitern usw.
Irgendwann möchtest/musst du vom delay() weg.
Dafür gibt es das Beispiel in der IDE "BlinkWithoutDelay"
kontrolliere deine Variablennamen. Fällt dir dabei etwas auf?
Du verwendest mehrere gleichnamige Namen.
Tja so leicht ist das dann leider doch nicht.
Wenn das Namenproblem behoben ist, wirst du die Auswirkung von delay() feststellen.
Aber teste das erstmal ruhig um auch das zu verstehen was da passiert.
Ab musste das IDE Bsp. verstehen und anwenden lernen.
Und stelle ggf. deine IDE für mehr Ausgaben ein.
Fehlerbehebung immer von oben nach unten. Weitere Fehlermeldungen können "auch nur" Folgen der ersten Fehlermeldung sein die es zu bearbeiten gilt.
Ich greife mal den Vorschlag von @noiasca auf, der versteckt auf seinen Seiten scheinbar für alle Anwendungen eine Bibliothek parat hält. Ich weiche nur etwas ab, weil ich sein Flickern für das Schweißlicht und den Heartbeat für die Glut verwende, denn beim Heartbeat kann ich die Parameter per Zufall variieren.
Testprogramm (Klapp mich aus, dann siehst Du mich!)
#include <Noiasca_led.h>
#include <utility/Noiasca_discrete.h>
FlickerPin schweisslicht{ 3 }; // UNO PWM pins 3, 5, 6, 9, 10, 11
HeartbeatPin glutA_gelb{ 5 }; // UNO PWM pins 3, 5, 6, 9, 10, 11 (on any other pin the LED will just blink)
HeartbeatPin glutA_rot{ 6 }; // UNO PWM pins 3, 5, 6, 9, 10, 11 (on any other pin the LED will just blink)
HeartbeatPin glutB_gelb{ 9 }; // UNO PWM pins 3, 5, 6, 9, 10, 11 (on any other pin the LED will just blink)
HeartbeatPin glutB_rot{ 10 }; // UNO PWM pins 3, 5, 6, 9, 10, 11 (on any other pin the LED will just blink)
uint32_t vorhin = 0;
uint32_t intervall = 100;
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("Start");
schweisslicht.begin(); // you have to call the .begin() method for this LED
schweisslicht.on(); // switch the blinking on
glutA_gelb.begin(); // you have to call the .begin() method for the LED pair
glutA_gelb.on(); // you can switch the LED on
glutA_gelb.setInterval(10); // you can modify the delay time for the pulsing. Default value is 50.
glutA_rot.begin(); // you have to call the .begin() method for the LED pair
glutA_rot.on(); // you can switch the LED on
glutA_rot.setInterval(13); // you can modify the delay time for the pulsing. Default value is 50.
glutB_gelb.begin(); // you have to call the .begin() method for the LED pair
glutB_gelb.on(); // you can switch the LED on
glutB_gelb.setInterval(5); // you can modify the delay time for the pulsing. Default value is 50.
glutB_rot.begin(); // you have to call the .begin() method for the LED pair
glutB_rot.on(); // you can switch the LED on
glutB_rot.setInterval(7); // you can modify the delay time for the pulsing. Default value is 50.
randomSeed(analogRead(0));
}
void loop() {
schweisslicht.update(); // call the update function in loop() to refresh the LED
glutA_gelb.update(); // call the update function in loop() to refresh the LED
glutA_rot.update(); // call the update function in loop() to refresh the LED
glutB_gelb.update(); // call the update function in loop() to refresh the LED
glutB_rot.update(); // call the update function in loop() to refresh the LED
uint32_t jetzt = millis();
if (jetzt - vorhin >= intervall) {
vorhin = jetzt;
glutA_gelb.setInterval(random(3, 22));
glutA_rot.setInterval(random(3, 22));
glutB_gelb.setInterval(random(3, 22));
glutB_rot.setInterval(random(3, 22));
randomSeed(analogRead(0));
}
}
Es ist nicht optimal, aber ein Anfang
Dein Thema ist leider wenig spezifisch, sowas wie "Glimmen von Kohle/Glut in einer Ausschlacke-Anlage zusammen mit Schweißlicht" wäre prägnanter.
die Werte ändern wie Du willst, ohne das es zu einem Überlauf kommt.
Der erste ist dann die untere Schwelle in millisekunden, der zweite der obere bis zu dem es zufällig gehen könnte.
Fang mit 100 unten an und setz den oberen auf 1000.