ich weiß, der Thread-Titel mag schon einige abschrecken und glaubt mir, ich habe schon so einiges versucht, bin aber jetzt mit meinem Latein am Ende.
Ich habe eine Custom-PCB designed, mit der ich einen LC-Display (16x2) ansteuern möchte. Dazu verwende ich einen Arduino Nano.
Der relevante Teil der Schematic ist im Anhang zu finden. Als Code verwende ich das beigelegte Beispiel der "LiquidCrystal" Lib mit dem Titel "HelloWorld", bei der ich nur die vierfolgenden Zeilen im Setup noch eingefügt habe, damit die Hintergrundbeleuchtung aktiviert wird und der R/W Pin auf Low gezogen wird, bzw. die Pinnummer zur Ansteuerung lt. Schematic geändert.
Auf dem Display kommen auch zeichen raus, jedoch sieht die Ausgabe irgendwie so aus " ??0<</", also nur Sonderzeichen. Lt. dem Beispielprogramm, soll aber hier ein Sekundezähler ablaufen. Die Sonderzeichen ändern sich dann auch im Sekundentakt. Irgendwo hakt es also an der Kommunikation denke ich.
Ich weiß echt nicht mehr weiter, warum mir der Display nur diese Sonderzeichen ausspuckt und wäre um jede Hilfe sehr dankbar!
Das hab ich für den Versuchsaufbau für das Design gemacht, mit den neu gekauften Hardwarekomponenten jedoch noch nicht. Die sind verlötet auf der PCB, die müsste ich erst wieder auslöten, aber werde ich wahrscheinlich machen müssen.
Ich habe 3 PCB's zum Bestücken hier. Zwei davon habe ich bestückt und beide haben das gleiche Fehlerbild.
Hier der Code den ich verwende:
// include the library code:
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 6, en = 8, d4 = 12, d5 = 11, d6 = 10, d7 = 9;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
pinMode(13,OUTPUT);
pinMode(7,OUTPUT);
digitalWrite(13,HIGH);
digitalWrite(7,LOW);
// Print a message to the LCD.
lcd.print("hello, world!");
}
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);
}
Unten das Bild der PCB, der Arduino sitzt auf der Rückseite. Verkabelung in dem Sinne gibt es keine, nur die Leiterbahnen. Der Widerstand R4 wird noch gegen einen SMD-Widerstand getauscht, hatte nur gerade keinen da und der ist auch nur für die Hintergrundbeleuchtung.
Ich habe die Pins durchgemessen - keine Querschlüsse, keine Masseschlüsse, keine Potentialschlüsse. Die Pinbelegung stimmt auch und es sind alle Verbindungen durchgängig..
Rügt mich ruhig wie ich den Arduino aufgelötet hab bei der ersten PCB hab ichs mit Headern gemacht und da hab ich das selbe Problem, und gemessen hab ichs ja alles
geht leider immer noch nicht nein. Kann es sein, dass die Lib mit diversen Pins nicht umgehen kann? Benutzt sie SPI im Hintergrund?
ich sehe keinen Grund warum die Pins nicht gültig wären.
Daher der Rat das auf einem Breadboard nachzubauen.
Ich bin mir sehr sicher es liegt an deinem Board/deine Lötungen. Gut - du hast auf Durchgang geprüft - aber auch gegen Schlüsse zwischen den Pins. Jeder Pin gegen jeden anderen?
Die library verwendet nichts besonderes
abgesehen davon dass es auch eine Signatur für rs, rw, en gäbe
Ok, ich check die Lötstellen nochmal und entnehme das überschüssige Zinn, baue die Schaltung am Breadboard nach und messe auch noch zwischen den Pins durch.
Das dauert aber jetzt ein wenig, ich melde mich wieder.