stevie1002:
jurs:
Leider hab ich kein Datenblatt zu dem Modul und finde auch keines, ist irgendein China LCD und das kam ohne ein Blatt Papier :
Zum Glück haben ja fast alle LCDs die gleichen Anschlüsse in derselben Reihenfolge auf der Platine.
Falls Du "nur" bei den Datenleitungen etwas verwechselt hast, kannst Du ja mal diesen Test-Sketch ausprobieren, wenn Du ihn etwas umschreibst (Zeichenzahl pro Zeile von 16 auf 20, Library LiquidCrystal_I2C statt LiquidCrystal).
Bei diesem Test-Sketch scrollen alle 255 darstellbaren Zeichen über das Display, inklusive aller Sonderzeichen:
In der ersten Zeile von rechts nach links.
In der zweiten Zeile von links nach rechts.
Falls NUR Datenleitungen vertauscht sind, solltest Du wenigstens das Scrollen innerhalb der Zeilen sehen können:
In der ersten Zeile von rechts nach links.
In der zweiten Zeile von links nach rechts.
Und dabei sollte innerhalb von ca. 80 Sekunden jedes Zeichen in jeder Zeile einmal durch die Anzeige laufen. Wenn die Verkabelung richtig ist, folgen die Ziffer (012345...), die Großbuchstaben (ABCDEFG...) und die Kleinbuchstaben (abcdefg...) irgendwo in der Darstellung aufeinander. Wenn die Datenleitungen querbeet verkabelt sind, sind die Zeichen irgendwo über den Zeichensatz verteilt zu finden.
// LCD Scrolltext by 'jurs' for German Arduino Forum
// define the chars in one LED line
#define LEDLINE 16
// Folgende zwei Zeilen Code für Sainsmart LCD Keypad Shield
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Sainsmart keypad LCD
// Folgende zwei Zeilen Code für I2C Display
// #include <LiquidCrystal_I2C.h>
// LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display
// define scrolling speed for two LED lines
const int ledScrollSpeed[2]={300,300};
// define scrolling direction for two LED lines (true means right-to-left scrolling)
const boolean ledScrollDir[2]={true,false};
char charAt(char *text, int pos)
// scrolling-logic coded here
{
if (pos<LEDLINE) return ' '; // scroll in
else if (pos>=LEDLINE && pos<LEDLINE+strlen(text))
return text[pos-LEDLINE]; // scroll text
else return ' '; // scroll out
}
void task_text(char *text, byte line)
// scroll the LED lines
{
char currenttext[LEDLINE+1];
static unsigned long nextscroll[2];
static int positionCounter[2];
int i;
if (millis()>nextscroll[line])
{
nextscroll[line]=millis()+ledScrollSpeed[line];
for (i=0;i<LEDLINE;i++)
currenttext[i]=charAt(text,positionCounter[line]+i);
currenttext[LEDLINE]=0;
lcd.setCursor(0,line);
lcd.print(currenttext);
if (ledScrollDir[line])
{
positionCounter[line]++;
if (positionCounter[line]==strlen(text)+LEDLINE) positionCounter[line]=0;
}
else
{
positionCounter[line]--;
if (positionCounter[line]<0) positionCounter[line]=strlen(text)+LEDLINE-1;
}
}
}
char allChars[256];
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
for (int i=0;i<256;i++)
allChars[i]=i+1;
// allChars[256]=0;
}
void loop() {
// Scroll text in line number 0
task_text(allChars,0);
// Scroll text in line number 1
task_text(allChars,1);
}