So, nachdem am Freitag nun endlich mein erster eigener Arduino bei mir ankam hab ich gleich mal das alte 3210-Display ausgegraben.
Leider bekomme ich es ums Verrecken nicht ans Laufen, es tut keinen Mucks, und ich bin mittlerweile wirklich ratlos.
Fällt vielleicht jemandem von Euch was auf...?
Die Spannungen passen an sich, ich hab an den einzelnen Datenpins zum Display 3,28V (bzw. 0V) und 3,34V an Vdd anliegen.
/* --- Pinbelegung, Displayrueckseite, Leiste oben, von links */
// VDD
#define PIN_SCLK 2
#define PIN_SDIN 3
#define PIN_DC 4
#define PIN_SCE 5
// GND
// VOUT
#define PIN_RESET 6
/* --- */
#define LCD_C LOW
#define LCD_D HIGH
#define LCD_X 84
#define LCD_Y 48
#define LCD_CMD 0
static const byte SPLASH[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-16,-52,6,2,2,2,1,1,15,10,14,12,24,24,16,0,0,0,0,0,0,0,0,0,0,-128,-48,112,96,-32,-64,64,64,64,-64,-128,-128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,-112,-16,-128,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,-8,-76,123,-49,-121,-125,2,2,4,8,8,8,8,8,8,8,8,8,8,8,8,12,4,4,6,3,3,3,3,-125,-125,-125,-63,65,-31,-95,113,113,57,63,31,-2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,14,18,18,18,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,31,97,-61,2,3,1,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,7,5,5,5,1,3,3,2,3,17,25,-120,-56,72,-12,-12,38,-2,3,0,0,0,0,0,0,0,0,0,0,0,0,64,-128,-43,-107,-107,-107,-118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,124,-64,0,0,0,0,0,16,112,127,62,0,60,100,124,56,28,-68,-20,-4,3,63,6,30,24,15,-36,-33,-49,-29,-57,-64,-128,3,3,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-128,-128,-99,-96,-40,-124,-72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,-64,0,0,0,0,0,0,0,0,0,0,0,-8,-4,-2,-2,-1,-1,-1,127,60,-2,-1,-1,-1,127,63,-97,-121,67,96,-128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,114,-108,-105,-112,112,-112,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,24,48,32,32,64,64,64,64,-64,-64,-127,-127,-127,-127,-127,-128,-64,-64,-32,112,113,97,48,24,14,7,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,14,18,18,18,14,0,0,0};
void LcdClear(void) {
for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
LcdWrite(LCD_D, SPLASH[index]);
}
void LcdInitialise(void) {
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
digitalWrite(PIN_RESET, LOW);
delay(1);
digitalWrite(PIN_RESET, HIGH);
LcdWrite( LCD_CMD, 0x21 ); // LCD Extended Commands.
LcdWrite( LCD_CMD, 0xBf ); // Set LCD Vop (Contrast). //B1
LcdWrite( LCD_CMD, 0x04 ); // Set Temp coefficent. //0x04
LcdWrite( LCD_CMD, 0x14 ); // LCD bias mode 1:48. //0x13
LcdWrite( LCD_CMD, 0x0C ); // LCD in normal mode. 0x0d for inverse
LcdWrite(LCD_C, 0x20);
LcdWrite(LCD_C, 0x0C);
}
void LcdWrite(byte dc, byte data) {
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
void setup(void) {
LcdInitialise();
LcdClear();
}
void loop(void) {
}