PB de PRG avec MCP23017

Bonjour
Je n'arrive pas à faire fonctionner une carte MCP23017 comme sur la photo jointe .
je mets le code que j'utilise pour essayer de faire fonctionner cette carte .
Pouvez vous me dire ce qui cloche.

t//#include <Wire.h> // Wire.h
#include <Adafruit_MCP23X17.h>
Adafruit_MCP23X17 mcp ;

byte i,ent ;
void setup()
{
Serial.begin(115200);  
pinMode(2,INPUT);  
pinMode(3,OUTPUT);  
 
 for(byte i= 0; i<=15;i++)
mcp.pinMode (i,OUTPUT);
}



void loop()
{
     ent= digitalRead(2);
      
     if (ent >=1)
             {
              digitalWrite(3,1);
              Serial.println("allumé");  
             }
          else
             {
               digitalWrite(3,0);
              Serial.println(".......éteint");   
             }
     

    for(byte i= 0; i<=15;i++)
    {
    Serial.print("Flashing GPIO:") ; 
    Serial.println(i) ;
    mcp.digitalWrite(i,HIGH);
    delay(1000);
    //mcp.digitalWrite(i,LOW); 
   //delay(1000);
    }
    delay(1000);
}ype or paste code here
  • parmi vous ,une personne pourrait elle me communiquer un PRG trés simple d'entrée sortie avec cette carte
  • pour mémoire afin de visualiser les sorties sur led je sors sur un ULN2804 à travers une résistance de 10K
    en vous remerciant d'avance pour les conseils
    bonne soirée à tous

Salut
As-tu bien regardé les exemples de la librairie ?

  if (!mcp.begin_I2C()) {
  //if (!mcp.begin_SPI(CS_PIN)) {
    Serial.println("Error.");
    while (1);
  }

rebonjour
Je viens de trouver pourquoi par hazard au bout de plusieurs jours de recherche le grain de sable qui manquait .
Lors d'essais avec l'instruction mcp.begin l'ide ma proposé d'ajouter _I2C .
Ce qui donne une déclaration de l'objet mcp.begin_I2C();// indispensable pour faire fonctionner la carte MCP23017 et cela dans le void setup
Cela donne le programme suivant qui fonctionne au moins en sortie (je n'ai pas encore essayé en entrée mais il y a de forte chance que cela fonctionne .

#include <Adafruit_MCP23X17.h>
Adafruit_MCP23X17 mcp ;

byte i,ent ;
void setup()
{

mcp.begin_I2C();// indispensable pour faire fonctionner la carte MCP23017

  
Serial.begin(115200);  
pinMode(2,INPUT);  
pinMode(3,OUTPUT);  
 
 for(byte i= 0; i<=15;i++)
mcp.pinMode (i,OUTPUT);
}



void loop()
{
     ent= digitalRead(2);
      
     if (ent >=1)
             {
              digitalWrite(3,1);
              Serial.println("allumé");  
             }
          else
             {
               digitalWrite(3,0);
              Serial.println(".......éteint");   
             }
     

    for(byte i= 0; i<=15;i++)
    {
    Serial.print("Flashing GPIO:") ; 
    Serial.println(i) ;
    mcp.digitalWrite(i,HIGH);
    delay(1000);
    mcp.digitalWrite(i,LOW); 
    delay(1000);
    }
    delay(1000);
}
`
donc problème résolu et j'espère que cela servira à quelq'un et ne dérangera personne .

bonne soirée

merci hbachetti
Je n'avais pas compris à quoi servait cette partie et donc fait le rapprochement .Mais maintenant oui.
merci encore de ta réponse très rapide et bonne de surcroit
Je suis pas très doué et débutant et l'anglais n'est pas ma langue maternel loin de là :joy:

bonne soirée

Oui, la version précédente de la librairie possédait une méthode begin().
Mais AdaFruit a fait un gros travail pour rendre cette librairie compatible MCP23008, MCP23017, MCP23S08 et MCP23S17.
D'où les nouvelles méthodes :

  • begin_I2C() pour les MCP23008 et MCP23017 I2C
  • begin_SPI() pour les MCP23S08 et MCP23S17 SPI

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.