ich habe mir ein LCD Keypad Shield besorgt, dass leider keinerlei Herstellerangaben aufweißt... nun versuche ich vergeblich es anzusteuern.
Ich vermute, aufgrund eines Blickes auf die Rückseite:
dass LiquidCrystal lcd(8, 9, 4, 5, 6, 7); in etwa richtig sein könnte. Habe auch schon die 9 durch 8-13 ersetzt (da ich da keine Leiterbahn erkennen konnte)
Jemand ideen/tipps ? Nach anschalten und auch nach hochladen des codes sieht das display immer so aus:
Das wird doch sicher den Standard Hitachi HD44780 Controller haben. Da gehen dann alle Standard Libs und mit den Tastern musst du halt mal schauen auf welchen Pins die liegen. Multimeter hilft da.
Du musst das Display auch mit init() initialisieren und im sagen, dass der z.B. 2x16 Zeichen im 4 Bit Modus machen soll. Oder ist das bei dir nur begin().
?? Das kommt aber in keinem der Beispiele auf Arduino.cc noch in iwelchen von dfrobots/sainsmart oder anderen forenbeiträgen vor
Denke eigtl auch dass die sache mit lcd() und begin() getan ist.
Sorry, bei dir ist das dann begin(). Hatte ich übersehen. Ich habe ein I2C Display, da sind die Methoden etwas anders :s
Sollte eigentlich funktionieren, da 4-Bit der Standardmodus ist.
Was aber ist, dass du eigentlich nicht clear() machen kannst vor begin(). Die Initialisierung ist aufwändig und dauert etwas. Davor kann man keine anderen Kommandos senden.
Dürfte ja das gleiche Board wie das Sainsmart sein. Bei dem hats bei mir mit dem folgenden Code funktioniert.
//Sample using LiquidCrystal library
#include <LiquidCrystal.h>
/*******************************************************
This program will test the LCD panel and the buttons
Mark Bramwell, July 2010
********************************************************/
// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int multiplikator = 1;
boolean waspressed = false;
int count = 0;
// define some values used by the panel and buttons
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
// read the buttons
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // read the value from the sensor
// my buttons when read are centered at these valies: 0, 144, 329, 504, 741
// we add approx 50 to those values and check to see if we are close
if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE; // when all others fail, return this...
}
void setup()
{
lcd.begin(16, 2); // start the library
lcd.setCursor(0,0);
lcd.print("Vince ist doof!"); // print a simple message
}
void loop()
{
lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over
//lcd.print(millis()/1000); // display seconds elapsed since power-up
lcd.print(count);
lcd.setCursor(13,1);
lcd.print(multiplikator);
lcd.setCursor(0,1); // move to the begining of the second line
lcd_key = read_LCD_buttons(); // read the buttons
switch (lcd_key) // depending on which button was pushed, we perform an action
{
case btnRIGHT:
{
lcd.print("RIGHT ");
break;
}
case btnLEFT:
{
lcd.print("LEFT ");
break;
}
case btnUP:
{
lcd.print("UP ");
if(!waspressed) {
multiplikator++;
waspressed = true;
}
break;
}
case btnDOWN:
{
lcd.print("DOWN ");
if(!waspressed) {
if (multiplikator > 0) {
multiplikator--;
}
waspressed = true;
}
break;
}
case btnSELECT:
{
lcd.print("SELECT");
break;
}
case btnNONE:
{
lcd.print("NONE ");
waspressed = false;
break;
}
}
count++;
}
@Worldleader: Dieser Code dürfte leider nicht helfen, da du die selbe Library und Pin Kofiguration wie ich verwendest, mit welcher es ja nicht geht.. Habe es natürlich eben getestet - nichts
Nachdem es eigentlich funktionieren müsste mit dem Pinup (da ich ja auch jedes andere ausprobiert habe..) hab ich es einfach mal noch mit etwas mehr gewalt auf den Arduino gesteckt... und siehe da.
Es funktioniert. Vielen Dank für Deinen Code, denke werde Ihn als Grundlage nehmen