Arduino UNO R3 Plus Digital-Pins überstrapaziert?

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).Schaltkreis

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;
  }
}
Widerstandswert für die LEDs? Und wie hoch sind die Durchlassspannungen der LED?
Tut mir leid, wenn ich in Elektrotechnik schlecht bin, es fasziniert mich einfach. Aber die Spannung ist 5V für beide und der Widerstand ist 330 Ohm
Mehrere Pins auf dem LCD sind falsch verdrahtet.
Die Enden Ihres Topfes sollten mit Versorgung und Masse verbunden sein, und der Schleifer sollte mit V0 verbunden sein.
Ihre Abbildung scheint ein 2 x 16-Zeichen-LCD-Display zu zeigen, aber die Software scheint es als mehrstelliges 7-Segment-Display zu behandeln. Wenn es sich wirklich um ein 2 x 16-LCD handelt, funktioniert es definitiv nicht so, wie Sie es versuchen es zu fahren.
@PeterBennett Ich meinte etwas anderes, ich habe eine bereits erstellte Skizze ausprobiert, die Pins geändert und immer noch nicht funktioniert. Aber der Code wurde für das LCD bearbeitet, danke für den Hinweis.
Angenommen, Sie haben die LEDs richtig verdrahtet, haben Sie jeweils zwischen 9 mA und 5 mA, was in Ordnung ist. Aber Ihr Code zeigt, dass immer nur einer zu einem bestimmten Zeitpunkt eingeschaltet ist. Was ist also das eigentliche Problem? Die LCD + Arduino + LED (s) liegen gut im Leistungsbereich des 5-V-Reglers. Verwenden Sie eine 9-V-Batterie oder betreiben Sie sie über die Steckdose? Welche Amperezahl an der Wandwarze?
Der delayValue-Wert wird zu keinem Zeitpunkt zurückgesetzt, sodass er sehr schnell null und darunter erreichen wird. Könnte dies das Problem sein, dh es gibt keine Verzögerung zwischen Ein / Aus, sodass Sie nichts sehen können?
Nein, die LEDs funktionieren gut, das LCD nicht.
@RyanGriggs Nein, das kann nicht, das ist der Sinn des Spiels, um zu sehen, wie schnell Sie die Taste drücken können, wenn grün blinkt.
@Passerby Das Problem ist, dass ich nicht herausfinden kann, wie ich beiden Strom geben kann.
@TheKnightsWhoSayNi spezifisches LCD, das Sie verwenden? Benutzt du eine 9V Batterie? Verwenden Sie eine Gleichstromsteckdose/Netzteil?
@ Passant HD44780 comp. 16x2-LCD. Ich verwende ein 9-V-Stromkabel zum Übertragen des Codes von meinem Computer und einen DC-Akku mit 3 AA-Batterien.
Sie verwenden also 4,5 V oder 9 V? Nicht 5V? Sind die Batterien frisch? Nicht alle HD44780-LCDs sind mit 4,5 V oder weniger zufrieden. Und an diesem Punkt erhalten Sie keine geregelten 5 V vom Regler des Arduino ...
Keine Ahnung, aber die Batterien sind frisch.
@Passerby, wie kann ich feststellen, welche Spannung ich verwende?
Verwenden Sie ein Multimeter.

Antworten (1)

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.