Ich habe einen Arduino UNO R3 Plus mit 14 digitalen Pins, aber sie funktionieren nicht gut. Oder vielleicht tun sie das, aber der Punkt ist, ich glaube, ich überbeanspruche sie. Ich habe ein LCD an die Ports 13-7, 4 LED-Leuchten an 5-2 und 2 Tasten an 0-1 angeschlossen. Aber ich verwende nur eine Taste, also ist es technisch gesehen 1 Taste, die mit Port 1 verbunden ist. Die LED + Taste ist ein LED-Spiel, und ich versuche, den LCD-Bildschirm zu einem Zähler dafür zu machen. Das LCD und die LED-"Netzkabel" teilen sich die gleichen Steckbrettsegmente, die LED ist diejenige, die zum 5-V-Stromanschluss führt. Das Problem ist, dass ich immer nur einen zum Laufen bringen kann, also weiß ich nicht, ob es an der Programmierung oder der Hardware liegt. Sagen Sie mir also bitte, wie ich das neu programmieren / neu verdrahten kann (oder erklären Sie, warum es unmöglich ist).
Mein Code:
int currentLED = 2;
int delayValue = 200;
int numberShown = 0;
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(13, 12, 10, 9, 8, 7);
void setup() {
pinMode(1, INPUT); //Button
pinMode(2, OUTPUT); //White LED
pinMode(3, OUTPUT); //Yellow LED
pinMode(4, OUTPUT); //Green LED
pinMode(5, OUTPUT); //RED LED
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
int checkInput() {
if(digitalRead(1)==0) {
return 1;
} else {
return 0;
}
}
}
void loop(){
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
if(digitalRead(1) == 0){
if(currentLED == 4) {
digitalWrite(4, HIGH);
delay(200);
digitalWrite(4, LOW);
delay(200);
digitalWrite(4, HIGH);
delay(200);
digitalWrite(4, LOW);
delay(200);
delayValue = delayValue - 10;
} else {
digitalWrite(currentLED, HIGH);
delay(200);
digitalWrite(currentLED, LOW);
delay(200);
digitalWrite(currentLED, HIGH);
delay(200);
digitalWrite(currentLED, LOW);
delay(200);
}
}
digitalWrite(currentLED, HIGH);
delay(delayValue);
digitalWrite(currentLED, LOW);
delay(delayValue);
currentLED = currentLED + 1;
if(currentLED > 5) {
currentLED = 2;
}
}
NB: Mir ist klar, dass dies inzwischen eine alte Frage ist und wahrscheinlich auf Arduino SE migriert werden sollte, aber Fragen ohne Antworten sind nur Lärm, also werde ich nach einer Antwort suchen.
Arduino UNO R3 Plus Digital-Pins überstrapaziert?
Oder um es anders auszudrücken: Kann ein Arduino UNO sowohl ein LCD als auch eine Reihe von LEDs gemeinsam ansteuern?
Die Antwort ist natürlich ein klares Ja. Hier ist ein Beispiel dafür, wie es funktioniert .
Wenn dem Fritzing-Diagramm in der Frage geglaubt werden kann, liegt der Hauptgrund, warum die Schaltung nicht wie erwartet funktionierte, darin, dass das LCD nicht richtig verdrahtet ist (wie von Ignacio in den Kommentaren hervorgehoben). Insbesondere der Poti erfüllt nicht seine Aufgabe, den Kontrast einzustellen, sondern zieht RS hoch.
Fritzing ist ein gutes Werkzeug, aber es lohnt sich, sich an die schematische Ansicht zu gewöhnen. Es kann solche Probleme selbstverständlich machen, wenn sie in der Steckbrettansicht so leicht zu übersehen sind.
Passant
Die Ritter, die Ni sagen
Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams
Peter Bennett
Die Ritter, die Ni sagen
Passant
Ryan Griggs
Die Ritter, die Ni sagen
Die Ritter, die Ni sagen
Die Ritter, die Ni sagen
Passant
Die Ritter, die Ni sagen
Passant
Die Ritter, die Ni sagen
Die Ritter, die Ni sagen
Passant