Hi Loits,
Ich krebse aktuell ein wenig mit meinem Equipment rum...
Aaaalllsssooooo:
Arduino Uno, R3 original/ alternativ ein Sainsmart Uno
ein DEEK Robot Data Logging shield, V1.0, also mit SD/ RTC
ein I2C LCD 2004. LCD made in China, I2C von Sainsmart
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN 13
/*
Add read: 7E <= LCD
Add read: D0 <= RTC
Add write: 7E <= LCD
Add write: D0 <= RTC
Scanning...
I2C device found at address 0x3F !
I2C device found at address 0x68 !
done
Done
*/
LiquidCrystal_I2C lcd(0x3F,20,4); // Set the LCD I2C address
// LiquidCrystal_I2C lcd(0x7E, BACKLIGHT_PIN, 20); // Set the LCD I2C address
// Creat a set of new characters
const uint8_t charBitmap[][8] = {
{ 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
{ 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
{ 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
{ 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
{ 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
{ 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
{ 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
{ 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
};
void setup()
{
Serial.begin(9600);
int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0]));
// Switch on the backlight
pinMode ( BACKLIGHT_PIN, OUTPUT );
digitalWrite ( BACKLIGHT_PIN, HIGH );
Serial.println("Setup done");
lcd.begin(20,4); // initialize the lcd
for ( int i = 0; i < charBitmapSize; i++ )
{
lcd.createChar ( i, (uint8_t *)charBitmap[i] );
}
lcd.home (); // go home
lcd.print("Hello, ARDUINO ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print (" FORUM - fm ");
delay ( 1000 );
Serial.println("Forum.fm");
}
void loop()
{
/* lcd.home ();
// Do a little animation by writing to the same location
for ( int i = 0; i < 2; i++ )
{
for ( int j = 0; j < 16; j++ )
{
lcd.print (char(random(7)));
}
lcd.setCursor ( 0, 1 );
}
*/
lcd.home (); // go home
lcd.setCursor (0, 0);
lcd.print("This is Tom ");
Serial.println("This is Tom");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print ("Testing LCD");
lcd.setCursor ( 0, 2 ); // go to the next line
lcd.print ("Writing LCD");
lcd.setCursor ( 0, 3 ); // go to the next line
lcd.print ("Shining LCD");
digitalWrite ( BACKLIGHT_PIN, LOW );
delay (2500);
digitalWrite ( BACKLIGHT_PIN, HIGH );
delay (2500);
}
Problem:
Das LCD zeigt mit auf Zeile 1 und 3, also die 2. und vierte Zeile einen Streifen aus den 5x7 Matrix Punkten
Mit den Original Settings der Examples aus der (den....) Libaries erhalte ich keine Reaktion, mit den Settings von oben, also den Echos des I2C Scanners und den 20 Zeichen x 4 Zeilen bleiben die Zeilen mit den Pixeln, mit 7E als Adresse blinkt das LCD mit den 5000ms, wird also angesprochen, ohne Zeichen dazustellen.
Hat einer von Euch Freaks eine Idee, an welchen 'Schrauben' ich noch drehen kann, um das Ding zum Rennen zu bringen?
Hier im Forum, und bei den weiterführenden Links habe ich zwar ne Menge Infos gefunden, jedoch nichts, was geholfen hat...
Best regards,
Grazie tutti,
Ciao, Markus