Salve ragazzi,
sto tentando di fare funzionare un keypad 4x4 tramite expander mpc23017 abbinato ad un display grafico con libreria openglcd.
Il mio problema è il seguente: il solo codice relativo al keypad funziona bene, riesco a vedere i caratteri sul seriale, ma appena inserisco quelle 4 righe relative al "GLCD" non funziona piu nulla. Quelle stesse 4 righe in un altro sketch separato funzionano....non capisco se ci possa essere un problema di conflitto.....spero mi possiate illuminare. Di seguito il codice...
Grazie a tutti
#include <openGLCD.h>
#include <Keypad_MC17.h>
#include <Wire.h>
#define I2CADDR 0x20
int ok;
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {0,1,2,3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {4,5,6,7}; //connect to the column pinouts of the keypad
Keypad_MC17 keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS, I2CADDR);
void setup(){
keypad.begin( );
Serial.begin(9600);
GLCD.Init();
GLCD.SelectFont(System5x7);
GLCD.CursorTo(0, 1);
GLCD.print("ciao");
}
void loop(){
char key = keypad.getKey();
if (key){
Serial.println(key);
}
}
GND Connect to GND
+5 volts Connect to +5v
(Vo) Contrast in Connect to Wiper (middle pin) of contrast pot
D_I A3
R_W A2
EN A4
D0 PIN 8
D1 PIN 9
D2 PIN 10
D3 PIN 11
D4 PIN 4
D5 PIN 5
D6 PIN 6
D7 PIN 7
CSEL1 A0
CSEL2 A1
Reset in Connect to +5v
(Vee/Vout) Contrast out connect to 1 leg of Contrast pot
Backlight Anode +5v (See datasheet for resistor value)
Backlight Cathode GND
Ovvio il problema.
Il bus I2C usa SDA e SCL che sono i pin A4 e A5 (Arduino Uno)
Sulla scheda Arduino Uno vedi dei pin SDA/SCL ma sono solo un "doppione" di A4 e A5.
Non puoi usare A4 per il display e per il MCP.
scusami nad, non ho ben capito. Il fatto è che con questo collegamento (adesso non ricordo se è esattamente questo perche ho preso spunto da una guida online che seguii a suo tempo) il mio display funziona. Smette di funzionare non appena abbino il codice relativo al keypad collegato sui pin dell'expander...supponendo di voleve separare i codici per display e keypad ottengo due codici funzionanti.
Vedo che liberi tu hai ancora i pin 2, 3, 12, 13 ... vedi se, magari modificando qualche cosa nella libreria, o in qualche chiamata di inizializzazione, puoi riassegnare quel pin ad uno di quelli che attualmente non stai usando.
Purtroppo, non avendola mai usata, non la conosco e di più non so dirti.
Questione risolta!
ho cambiato al connessione del pin EN: da A4 a D3, funziona perfettamente.
Avevo provato anche A6 o A7 ma non va perchè deve essere necessariamente digitale....