Uno + MCP23S17 + LCD ?

Bonjour,

Je me tourne une fois de plus vers vous. Mon objectif est de piloter un afficheur LCD 2*16 charactères via un port expander SPI de chez Microchip, le MCP23S17. J’ai décidé de procéder par étapes, en premier configurer la liaison SPI et contrôler le port expander.
Pour cela j’utilise la bibliothèque disponible ici. Ce que je souhaite faire pour le moment c’est allumer des leds via le port expander pour prendre en main la bibliothèque.

D’après ce que j’ai compris en lisant la bibliothèque et les exemples fournis ce code devrait me permettre d’allumer une led sur le pin 4 du port expander.

#include <SPI.h>
#include <MCP23S17.h>

MCP chip(0); // A0,A1,A2 => Ground

void setup() {
  
  SPI.begin();
  chip.pinMode(4,OUTPUT);
  chip.digitalWrite(4,HIGH);
}

void loop() {

}

Ce que j’ai, la led ne s’allume pas, les broches 19 et 20 sont à l’état logique haut. Elles correspondent à des interruptions au niveau des Port A et Port B. Ce que je ne comprends pas c’est pourquoi ces interruptions sont-elles actives ? Et comment les acquitter ? A priori ce sont elles qui m’empêche d’écrire sur les ports.
Si quelqu’un à déjà eu une expérience avec ce chip et qu’il veut bien m’aider je le remercie d’avance.

Bonjour,

Je me permets de remonter mon sujet car j'ai un peu avancé dans mes recherches.
Tout d'abord j'ai acheté un nouveau port expander et trouvé une nouvelle bibliothèque et maintenant j'arrive à faire fonctionner l'ensemble comme je le voulais. Je m'attaque donc à la deuxième étape.
J'imagine que la bibliothèque LCD fournie avec Arduino n'est pas compatible avec les ports expander ou du moins je ne vois comment l'utiliser. Je me demande si je dois fabriquer ma propre bibliothèque qui me permettra d'établir un lien entre le port expander et l'écran.
Je pensais me baser sur les fonctions "bas niveau" de la bibliothèque LCD d'Arduino, les modifier pour ensuite pouvoir envoyer les données correspondantes en SPI jusqu'au port expander qui les mettra en parallèle et les transférera à l'écran LCD.

Que pensez-vous de cette idée ? j'imagine que c'est réalisable, mais est-ce que je ne me complique pas la vie ? Si quelqu'un connait une solution plus simple je suis preneur :slight_smile:

J'espère être assez compréhensible.

Merci d'avance pour votre aide.

alan30:

Je pensais me baser sur les fonctions “bas niveau” de la bibliothèque LCD d’Arduino, les modifier pour ensuite pouvoir envoyer les données correspondantes en SPI jusqu’au port expander qui les mettra en parallèle et les transférera à l’écran LCD.

Que pensez-vous de cette idée ? j’imagine que c’est réalisable, mais est-ce que je ne me complique pas la vie ? Si quelqu’un connait une solution plus simple je suis preneur :slight_smile:

J’espère être assez compréhensible.

Merci d’avance pour votre aide.

bonsoir
regarde ici

Merci beaucoup, super lien très intéressant. L'ensemble à l'ai un peu compliqué vu qu'avec sa bibliothèque on peut utiliser l'I2C ou le SPI au choix. Et en plus il l'utilise pour piloter un écran graphique. Je vais étudier tout ça et voir si je parviens à m'en servir.

Merci encore.

PS: ça ne pose pas de problème si j'essaie d'utiliser cette biblio avec mon lcd alphanumérique ?