const unsigned int LED_Rot1 = 3, LED_Rot2 = 5, LED_Rot3 = 6;
const unsigned int LED_Blau1 = 9, LED_Blau2 = 10, LED_Blau3 = 11;
const unsigned int LedRot = ?
Hallo User,
ich hab die variable LED_Rot1 bis 3 und möchte diese Variablen in die Variable LedRot schreiben,
da alle drei Variablen später das gleiche tun, nur andere ports verwenden.
Damit möchte ich mir schreibarbeit ersparen.
Hab da jetzt schon im i net geschaut und bin hier gelandet.
Gruß
Du suchst Arrays und / oder Funktionen oder auch Beides. Je nachdem, wie man Deine unklare Beschreibung versteht.
Gruß Tommy
Hallo @Tommy56,
ich habe 3 LEDs die gehen alle zur gleichen Zeit an und dann wieder aus um jetzt nicht alles so
digitalWrite(LED_Rot1, HIGH);
digitalWrite(LED_Rot2, HIGH);
digitalWrite(LED_Rot3, HIGH);
delay(50);
digitalWrite(LED_Rot1, LOW);
digitalWrite(LED_Rot2, LOW);
digitalWrite(LED_Rot3, LOW);
delay(50);
schreiben zu müssen sondern so,
digitalWrite(LedRot, HIGH);
delay(50);
digitalWrite(LedRot, LOW);
delay(50);
aber trotzem alle drei Leds an und aus gehen wie oben, da spar ich mir doch schreibarbeit.
verwende Arrays und For Schleifen.
Das geht so nicht. Eine "normale" variable kann nicht gleichzeitig 3 verschiedene Werte annehmen.
Wenn DuSchreibarbeit sparen willst, solltest Du lernen, was Arrays sind und wie man mit ihnen arbeitet.
Gruß Tommy
OK danke.
werde ich mir mal anschauen.
Gruß
Schnellsieder-Kurs:
const byte ledRot[] {3, 5, 6}; // array anlegen, Pins definieren
const byte ledBlau[] {9, 10, 13};
void setup() {
Serial.begin(115200);
Serial.println(F("\nStart"));
for (byte i = 0; i<sizeof(ledBlau); i++) // in einer For schleife abarbeiten
pinMode(ledBlau[i], OUTPUT);
for (auto &pin : ledRot) // auto range for geht auch, pin ist dann eine Referenz auf den Inhalt von ledRot -> genau der Pin
pinMode(pin, OUTPUT);
}
void loop() {
machRot();
machBlau();
}
void machBlau()
{
for (byte i = 0; i<sizeof(ledBlau); i++)
digitalWrite(ledBlau[i], HIGH);
delay(500); // dirty delay
for (byte i = 0; i<sizeof(ledBlau); i++)
digitalWrite(ledBlau[i], LOW);
delay(500); // dirty delay
}
void machRot()
{
for (auto &pin : ledRot) // auto range for geht auch hier
digitalWrite(pin, HIGH);
delay(1000); // dirty delay
for (auto &pin : ledRot)
digitalWrite(pin, LOW);
}
noiasca:
Schnellsieder-Kurs:
const byte ledRot[] {3, 5, 6}; // array anlegen, Pins definieren
const byte ledBlau[] {9, 10, 13};
void setup() {
Serial.begin(115200);
Serial.println(F("\nStart"));
for (byte i = 0; i<sizeof(ledBlau); i++) // in einer For schleife abarbeiten
pinMode(ledBlau[i], OUTPUT);
for (auto &pin : ledRot) // auto range for geht auch, pin ist dann eine Referenz auf den Inhalt von ledRot -> genau der Pin
pinMode(pin, OUTPUT);
}
void loop() {
machRot();
machBlau();
}
void machBlau()
{
for (byte i = 0; i<sizeof(ledBlau); i++)
digitalWrite(ledBlau[i], HIGH);
delay(500); // dirty delay
for (byte i = 0; i<sizeof(ledBlau); i++)
digitalWrite(ledBlau[i], LOW);
delay(500); // dirty delay
}
void machRot()
{
for (auto &pin : ledRot) // auto range for geht auch hier
digitalWrite(pin, HIGH);
delay(1000); // dirty delay
for (auto &pin : ledRot)
digitalWrite(pin, LOW);
}
Danke, werde ich mir mal anschauen.
Gruß