Je bidouille un peu avec un raspberry et un mcp23017.
J'ai fais des montages en utilisant les sorties du MCP avec WiringPI et pas de soucis : une led qui clignote, un moteur pas à pas, nickel.
La ou ça se gâte c'est un niveau des entrées..
Je prends mon montage qui fonctionne bien en sortie :
Je branche un bouton entre un des ports du mcp et la masse du mcp, et je compile ce programme :
Code : Tout sélectionner
//
// Test switch MCP23017
//
#include <stdio.h>
#include <wiringPi.h>
#include <mcp23017.h>
int switchPin = 4;
int main(void) {
wiringPiSetup();
// adresse port 0 ( port A.0 du mcp23017 )
int MCPbase=100;
// adresse I2c MCP23017 = 0x20 (32 en décimal)
mcp23017Setup (MCPbase, 0x20) ;
// Sur quelle broche faire clignoter la led
int switchPin=0;
// broche led en entrée
pinMode (MCPbase+switchPin, INPUT) ;
pullUpDnControl (MCPbase+switchPin, PUD_UP) ;
for (;;) {
printf("switch : %d\n", digitalRead(MCPbase+switchPin));
}
return (0);
}
Si je l’exécute, j'ai un défilé de 0, mais de temps en temps un 1 s'invite...
Si j'appuie sur le bouton, une série de 1 s'affiche mais de temps en temps un 0 apparait ?
Du coup j'ai pensé à la résistance de rappel, mais dans la doc du MCP et wiringPi, il est indiqué que le MCP à déjà cette résistance en interne ?
D'ailleurs je l'active via la ligne
Code : Tout sélectionner
pullUpDnControl (MCPbase+switchPin, PUD_UP) ;
Auriez vous une idée pour éliminer ce problème ? Je ne vois pas trop ou est la cause ?
Merci beaucoup,
Alain