Im Arduino Prgramm mehrere LEDs gleichzeitig ansteuern?
Hallo,
ist es möglich in einem Sketch mehrere LEDs anzusteuern die alle was anderes machen? ich habe hier ein kleines Sketch und ich möchte eigentlich das auf den Pins 0-4 es eine Sekunde lang Blinkt. Auf den Pins 5-7 möchte ich das es 1/10 Sekunde blinkt. Aber wenn ich mein Sketch Installiert habe, leuchten die Pins 0-7 mit einer Sekunde.
Wie kann ich das Problem lösen oder könnte mir einer so ein Sketch schreiben?
lg Marius
2 Antworten
Wenn du willst, dass "gleichzeitig" mehrere Sachen passieren darfst du die delay() Funktion erst gar nicht anrühren. Du musst vielmehr mit Zeitenpunkten wie z.B. millis() (Zeit in ms seit Programmstart) arbeiten. Dann vergleichst du eben jeweils die gespeicherte mit der aktuellen und, wenn deine Bedingungen zutreffen, schaltest du was du willst. Eigentlich relativ simpel. Du musst dir nur im Klaren darüber sein, dass dein Arduino Mirkrocontroller eben zyklisch arbeitet.
Also meine eigentliche Frage ist wie ich es hinbekomme verschiedene LEDs anzusteuern das heißt : Pin D2
1000 blink
100 blink
1000 blink usw
Pin D10:
2000 blink
30 blink
2000 blink
usw.
Du hast im setup() definiert, dass Pin 0-14 jeweils ein OUTPUT ist. Damit wird dir digitalRead() niemals brauchbare Werte zurückgeben.
Bitte ...
const int FAST_BLINK_INTERVALL = 100;
const int SLOW_BLINK_INTERVALL = 1000;
unsigned long aFastBlinkTime;
unsigned long aSlowBlinkTime;
void setup()
{
for (int n = 0; n < 8; n++) {
pinMode(n, OUTPUT);
}
}
void loop()
{
if (millis() - aSlowBlinkTime > SLOW_BLINK_INTERVALL) {
for (int n = 0; n < 5; n++) {
digitalWrite(n, !digitalRead(n));
}
aSlowBlinkTime = millis();
}
if (millis() - aFastBlinkTime > FAST_BLINK_INTERVALL) {
for (int n = 5; n < 8; n++) {
digitalWrite(n, !digitalRead(n));
}
aFastBlinkTime = millis();
}
}
Nochmal kurz ne frage ich möchte auch die die Leds zwichen pin 0 und 4 1190milisekunden LOW sind und dann wieder 50milisekunden HIGH sind. Das bekomme ich irgendwie nicht mit diesem Sketch hin :(
Also das bedeutet das dieses Sketch falsch ist oder?
void setup()
{
for (int n = 0; n < 14; n++) {
pinMode(n, OUTPUT);
}
}
void loop()
{
for (int n = 0; n < 4; n++) {
digitalWrite(n, !digitalRead(n));
}
delay(1000);
for (int n = 5; n < 7; n++) {
digitalWrite(n, !digitalRead(n));
}
delay(100);
}