# keypad con mcp23017 e openGLCD: conflitto??

**URL:** <https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067>\
**Category:** Software\
**Created:** [May 3, 2018, 9:14pm UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067 "2018-05-03T21:14:05Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![domix1684](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@domix1684](https://forum.arduino.cc/u/domix1684)\
**Post date:** [May 3, 2018, 9:14pm UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/1 "2018-05-03T21:14:05Z")

</div>

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

```cpp
#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); 
    }
}

```

---

<div class="post-metadata">

**Author:** ![domix1684](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@domix1684](https://forum.arduino.cc/u/domix1684)\
**Post date:** [May 14, 2018, 7:08am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/2 "2018-05-14T07:08:00Z")

</div>

nessuno puo' darmi qualche suggerimento? ☹

---

<div class="post-metadata">

**Author:** ![nid69ita](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/nid69ita/32/901258_2.png) [@nid69ita](https://forum.arduino.cc/u/nid69ita)\
**Post date:** [May 14, 2018, 8:48am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/3 "2018-05-14T08:48:33Z")

</div>

Un display grafico. Quale ?

---

<div class="post-metadata">

**Author:** ![domix1684](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@domix1684](https://forum.arduino.cc/u/domix1684)\
**Post date:** [May 14, 2018, 8:51am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/4 "2018-05-14T08:51:03Z")

</div>

ciao nad, è un Display Grafico 128x64 - KS0108

---

<div class="post-metadata">

**Author:** ![nid69ita](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/nid69ita/32/901258_2.png) [@nid69ita](https://forum.arduino.cc/u/nid69ita)\
**Post date:** [May 14, 2018, 8:55am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/5 "2018-05-14T08:55:47Z")

</div>

Come è collegato ? Quali pin usa ?

---

<div class="post-metadata">

**Author:** ![domix1684](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@domix1684](https://forum.arduino.cc/u/domix1684)\
**Post date:** [May 14, 2018, 9:07am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/6 "2018-05-14T09:07:38Z")

</div>

Ecco la lista dei pin che ho collegato:

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

Grazie

---

<div class="post-metadata">

**Author:** ![nid69ita](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/nid69ita/32/901258_2.png) [@nid69ita](https://forum.arduino.cc/u/nid69ita)\
**Post date:** [May 14, 2018, 9:11am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/7 "2018-05-14T09:11:24Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![domix1684](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@domix1684](https://forum.arduino.cc/u/domix1684)\
**Post date:** [May 14, 2018, 9:19am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/8 "2018-05-14T09:19:14Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [May 14, 2018, 9:25am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/9 "2018-05-14T09:25:25Z")

</div>

Tu stai usando lo stesso pin **A4** per due scopi diversi e questo **NON** è possibile.

O lo usi per il display o lo usi per il bus I2C (_dove, oltretutto, A4 ed A5 sono fissi_).

Guglielmo

---

<div class="post-metadata">

**Author:** ![domix1684](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@domix1684](https://forum.arduino.cc/u/domix1684)\
**Post date:** [May 14, 2018, 9:33am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/10 "2018-05-14T09:33:28Z")

</div>

Grazie Guglielmo per la risposta, ora è chiaro. Visto che A4 è fisso per I2C, ho la possibilità di cambiare il pin del display "EN" ?

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [May 14, 2018, 9:49am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/11 "2018-05-14T09:49:08Z")

</div>

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.

Guglielmo

---

<div class="post-metadata">

**Author:** ![nid69ita](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/nid69ita/32/901258_2.png) [@nid69ita](https://forum.arduino.cc/u/nid69ita)\
**Post date:** [May 14, 2018, 9:54am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/12 "2018-05-14T09:54:55Z")

</div>

In teoria nella libreria c'e' il file: PinConfig\_ks0108-Uno.h  
Modifica la riga: #define glcdPinEN A4

---

<div class="post-metadata">

**Author:** ![domix1684](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@domix1684](https://forum.arduino.cc/u/domix1684)\
**Post date:** [May 14, 2018, 10:04am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/13 "2018-05-14T10:04:54Z")

</div>

> nid69ita:  
> In teoria nella libreria c'e' il file: PinConfig\_ks0108-Uno.h  
> Modifica la riga: #define glcdPinEN A4

Provo e vi faccio sapere, grazie mille ragazzi

---

<div class="post-metadata">

**Author:** ![acik](https://avatars.discourse-cdn.com/v4/letter/a/bbce88/32.png) [@acik](https://forum.arduino.cc/u/acik)\
**Post date:** [May 26, 2018, 3:26pm UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/14 "2018-05-26T15:26:59Z")

</div>

Sarebbe bello se poi scrivessi se funziona.

In ogni caso, secondo me sarebbe meglio usare l'mpc per il display e connettere i tasti direttamente all'Adruino.

Altra soluzione sarebbe cambiare display: altri display equivalenti al tuo hanno il bus SPI.

---

<div class="post-metadata">

**Author:** ![domix1684](https://avatars.discourse-cdn.com/v4/letter/d/e19adc/32.png) [@domix1684](https://forum.arduino.cc/u/domix1684)\
**Post date:** [May 29, 2018, 11:31am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/15 "2018-05-29T11:31:25Z")

</div>

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....

Grazie a tutti

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 7, 2021, 2:13am UTC](https://forum.arduino.cc/t/keypad-con-mcp23017-e-openglcd-conflitto/524067/16 "2021-05-07T02:13:27Z")

</div>


