Kann mir jemand erklären warum diese Arduino Schaltung nicht richtig funktioniert? bzw. die Taster?
Ich habe btw Natürlich die Kabel richtig verbunden falls das jemand fragt weil ich den arduino ausgelassen habe
Code:
const int Taster1 = 1; // Pin für den ersten Taster
const int Taster2 = 2; // Pin für den zweiten Taster
const int Taster3 = 3; // Pin für den dritten Taster
const int helligkeitsreglerPin = A5; // Pin für den Helligkeitsregler
const int numLEDs = 8;
const int AmpelLEDs = 2;
int LEDs1[numLEDs] = {6, 7, 8, 9, 10, 11, 12, 13}; // Pins für die LEDs
int LEDs2[numLEDs] = {12, 10, 9, 7, 13, 11, 8, 6}; // Another pattern
int LEDrot[AmpelLEDs] = {10, 11};
int LEDgelb[AmpelLEDs] = {9, 8};
int LEDgruen[AmpelLEDs] = {7, 6};
void setup() {
for (int i = 0; i < numLEDs; i++) {
pinMode(LEDs1[i], OUTPUT);
pinMode(LEDs2[i], OUTPUT);
}
gleichzeitigBlinken(LEDs1, 12, 13);
delay(200); // Warte 2 Sekunden
gleichzeitigBlinken(LEDs1, 10, 11);
delay(200); // Warte 2 Sekunden
gleichzeitigBlinken(LEDs1, 9, 8);
delay(200); // Warte 2 Sekunden
gleichzeitigBlinken(LEDs1, 7, 6);
delay(200); // Warte 2 Sekunden
}
void loop() {
if (digitalRead(Taster1) == HIGH) {
Variation1(LEDs1);
delay(1000); // Entprellzeit
}
if (digitalRead(Taster2) == HIGH) {
Variation2(LEDs2);
delay(1000); // Entprellzeit
}
if (digitalRead(Taster3) == HIGH) {
ampelProgram(LEDrot, LEDgelb, LEDgruen);
delay(1000); // Entprellzeit
}
// Weitere Bedingungen für andere Programme hinzufügen, wenn nötig
}
void Variation1(int LEDs[]) {
int brightness = analogRead(helligkeitsreglerPin) / 4; // 0-1023 to 0-255
for (int i = 0; i < numLEDs; i++) {
analogWrite(LEDs[i], brightness);
delay(200); // Beispiel: LED für 0,5 Sekunden einschalten
analogWrite(LEDs[i], LOW); // LED ausschalten
}
}
void Variation2(int LEDs[]) {
int brightness = analogRead(helligkeitsreglerPin) / 4; // 0-1023 to 0-255
for (int i = 0; i < numLEDs; i++) {
analogWrite(LEDs[i], brightness);
delay(200); // Beispiel: LED für 0,2 Sekunden einschalten
analogWrite(LEDs[i], LOW); // LED ausschalten
}
}
void ampelProgram(int redLEDs[], int yellowLEDs[], int greenLEDs[]) {
// Rote LEDs einschalten
turnOnLEDs(redLEDs, AmpelLEDs);
delay(200); // Warte 2 Sekunden
// Rote LEDs ausschalten
turnOffLEDs(redLEDs, AmpelLEDs);
// Gelbe LEDs einschalten
turnOnLEDs(yellowLEDs, AmpelLEDs);
delay(200); // Warte 1 Sekunde
// Gelbe LEDs ausschalten
turnOffLEDs(yellowLEDs, AmpelLEDs);
// Grüne LEDs einschalten
turnOnLEDs(greenLEDs, AmpelLEDs);
delay(200); // Warte 2 Sekunden
// Grüne LEDs ausschalten
turnOffLEDs(greenLEDs, AmpelLEDs);
}
void turnOnLEDs(int leds[], int num) {
for (int i = 0; i < num; i++) {
analogWrite(leds[i], 255); // Vollhelligkeit für die LEDs
}
}
void turnOffLEDs(int leds[], int num) {
for (int i = 0; i < num; i++) {
analogWrite(leds[i], 0); // LEDs ausschalten
}
}
void gleichzeitigBlinken(int LEDs[], int pin1, int pin2) {
for (int i = 0; i < numLEDs; i++) {
if (i == pin1 || i == pin2) {
digitalWrite(LEDs[i], HIGH);
}
}
delay(200); // Beispiel: LEDs für 1 Sekunde einschalten
for (int i = 0; i < numLEDs; i++) {
digitalWrite(LEDs[i], LOW);
}
}
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Arduino
Da sind einige Fehler in der Verdrahtung die keinen Sinn ergeben...
- Welches Signal ist auf der unteren Lane quer, wo alle Widerstände drauf gehen? GND oder +5V?
- Warum ist die zweite LED-Reihe mit den Widerständen in Reihe zu den ersten Widerständen und nicht auch gegen den gemeinsamen unten direkt geschaltet? Die zweite LED-Reihe hat somit den doppelten Vorwiderstandswert...
- Was sollen die Widerstönde in Reihe mit den Tastern bewirken? Das ist weder PullUp noch Pulldown, und macht so keinen Sinn, um Taster an einem Arduino anzuschließen... Zudem macht es keinen Sinn mit dem Potential der LEDs und der Abfrage...
Ja ok ich habe halt keine Ahnung von Arduino und muss bis nächste Woche Dienstag das fertig haben für die schule und ich komm nicht weiter.