Bonjour,
j'ai installé un mcp23017 sur mon esp32 pour augmenter le nombre E/S.
Je n'arrive pas à lui faire reconnaitre l'affectation des GPIO du mcp.
J'ai notamment les erreurs suivantes :
je ne trouve pas de librairie spécifique au mcp23017 :
dans platformio.ini : adafruit/Adafruit MCP23017 Arduino Library@^2.3.2
#include <Adafruit_MCP23XXX.h>
Par contre, dans le main : #include <Adafruit_MCP23017.h> n'est pas reconnu et me retrouve avec un message : CMake incorrect : vérifier la valeur de Cmake.cMakePath (c'est quoi et on fait comment ?)
[Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error 263.
Je ne comprends ce que j'ai vu sur Internet...
que ce soit en Input ou en Output rien ne fonctionne
J'ai vérifié la communication I2C fonctionne avec une routine : OK
Où puis-je mettre le code du main.cpp et de platformio.ini et un croquis de mon câblage ?
platformio.ini :
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
adafruit/Adafruit SSD1306@^2.5.7
adafruit/Adafruit GFX Library@^1.11.9
adafruit/DHT sensor library@^1.4.4
adafruit/Adafruit BusIO@^1.14.5
adafruit/Adafruit TestBed@^1.11.0
adafruit/Adafruit MCP23017 Arduino Library@^2.3.2
main.cpp :
// Projet carte extension MCP 23017
#include <Arduino.h>
#include <Wire.h>
// Mettez à jour includePath. comment ?
// impossible d'ouvrir le fichier source
// essai de rechargement à partir de la Library : idem defaut
// #include <Adafruit_MCP23X08.h>
// dans platformio.ini : adafruit/Adafruit MCP23017 Arduino Library@^2.3.2
#include <Adafruit_MCP23XXX.h> // pas d'erreur à la compilation : 017 et non XXX ...
// #include <Adafruit_MCP23017.h>
#include <Adafruit_Sensor.h> // rajout suite à message erreur : manque DHT sensor library
#include <DHT.h>
#include <Adafruit_TestBed.h> // pour connaitre les adresses de la carte d'extension mcp23017 et de l'écran
#define MCP_INPUTPIN 8 // 8 : GPB0 marche pas ...pourquoi ?
Adafruit_MCP23XXX mcp;
void setup()
{
Serial.begin(115200); // pour visualiser le moniteur série
mcp.begin_I2C();
mcp.pinMode(0, OUTPUT);
mcp.pinMode(1, OUTPUT);
mcp.pinMode(2, OUTPUT);
mcp.pinMode(3, OUTPUT);
mcp.pinMode(4, OUTPUT);
mcp.pinMode(5, OUTPUT);
mcp.pinMode(6, OUTPUT);
mcp.pinMode(7, OUTPUT);
pinMode(4, OUTPUT); // ok sur ESP32
mcp.pinMode(MCP_INPUTPIN,INPUT_PULLDOWN); // Pull-down interne sans resistance externe : 0x09
// ne voit pas l'entrée ni sur le + ni sur le -
// vu sur internet : le MCP23017 n’a pas de résistance pull-down : vrai ?
// mcp.pinMode(MCP_INPUTPIN,INPUT); // 0x01
// ne voit pas l'entrée ni sur le + ni sur le -
// rajouter une resistance ? si oui, quelle valeur ?
// mcp.pinMode(MCP_INPUTPIN,INPUT_PULLUP); // 0x05
// ne voit pas l'entrée ni sur le + ni sur le -
// rajouter une resistance ? si oui, quelle valeur ?
Serial.printf ("Sortie du setup \r") ;
delay (3000);
} // fin setup
void loop()
{
mcp.digitalWrite(0, HIGH); // la led ne s'allume pas ...sur aucune sorties
mcp.digitalWrite(1, HIGH); // du port A ...
mcp.digitalWrite(2, HIGH); // idem sur HIGH ou sur LOW ...
mcp.digitalWrite(3, HIGH); // ne renvoie jamais une tension entre la pin et le GND
mcp.digitalWrite(4, LOW); // idem sur HIGH ou sur LOW ...
mcp.digitalWrite(5, LOW);
mcp.digitalWrite(6, LOW);
mcp.digitalWrite(7, LOW);
digitalWrite(4,HIGH); // sur ESP32 : ok allume la led
// sur les pin du ports A en Output : aucune tension en HIGH ou en LOW
// sur INTA et INTB : 3.28 VDC (rien de branché dessus) : normal ?
// Transfer input pin state to LED1
if (mcp.digitalRead(MCP_INPUTPIN)) // si bouton à 1 : avec le mcp,
// devrait voir l'entrée de l'extension mcp
{
Serial.printf ("Bouton actif \r") ;
// bouton actif quand rien n'est branché sur aucune GPIO 0.21 à 0.24 VDC instable
delay(200);
}
else // si bouton à 0
{
Serial.printf ("Bouton inactif \r") ;
delay(200);
}
}
Merci d'avance pour votre aide Use code tags to format code for the forum
* type or paste code here
platformio.ini :
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
adafruit/Adafruit SSD1306@^2.5.7
adafruit/Adafruit GFX Library@^1.11.9
adafruit/DHT sensor library@^1.4.4
adafruit/Adafruit BusIO@^1.14.5
adafruit/Adafruit TestBed@^1.11.0
adafruit/Adafruit MCP23017 Arduino Library@^2.3.2
main.cpp :
// Projet carte extension MCP 23017
#include <Arduino.h>
#include <Wire.h>
// Mettez à jour includePath. comment ?
// impossible d'ouvrir le fichier source
// essai de rechargement à partir de la Library : idem defaut
// #include <Adafruit_MCP23X08.h>
// dans platformio.ini : adafruit/Adafruit MCP23017 Arduino Library@^2.3.2
#include <Adafruit_MCP23XXX.h> // pas d'erreur à la compilation : 017 et non XXX ...
// #include <Adafruit_MCP23017.h>
#include <Adafruit_Sensor.h> // rajout suite à message erreur : manque DHT sensor library
#include <DHT.h>
#include <Adafruit_TestBed.h> // pour connaitre les adresses de la carte d'extension mcp23017 et de l'écran
#define MCP_INPUTPIN 8 // 8 : GPB0 marche pas ...pourquoi ?
Adafruit_MCP23XXX mcp;
void setup()
{
Serial.begin(115200); // pour visualiser le moniteur série
mcp.begin_I2C();
mcp.pinMode(0, OUTPUT);
mcp.pinMode(1, OUTPUT);
mcp.pinMode(2, OUTPUT);
mcp.pinMode(3, OUTPUT);
mcp.pinMode(4, OUTPUT);
mcp.pinMode(5, OUTPUT);
mcp.pinMode(6, OUTPUT);
mcp.pinMode(7, OUTPUT);
pinMode(4, OUTPUT); // ok sur ESP32
mcp.pinMode(MCP_INPUTPIN,INPUT_PULLDOWN); // Pull-down interne sans resistance externe : 0x09
// ne voit pas l'entrée ni sur le + ni sur le -
// vu sur internet : le MCP23017 n’a pas de résistance pull-down : vrai ?
// mcp.pinMode(MCP_INPUTPIN,INPUT); // 0x01
// ne voit pas l'entrée ni sur le + ni sur le -
// rajouter une resistance ? si oui, quelle valeur ?
// mcp.pinMode(MCP_INPUTPIN,INPUT_PULLUP); // 0x05
// ne voit pas l'entrée ni sur le + ni sur le -
// rajouter une resistance ? si oui, quelle valeur ?
Serial.printf ("Sortie du setup \r") ;
delay (3000);
} // fin setup
void loop()
{
mcp.digitalWrite(0, HIGH); // la led ne s'allume pas ...sur aucune sorties
mcp.digitalWrite(1, HIGH); // du port A ...
mcp.digitalWrite(2, HIGH); // idem sur HIGH ou sur LOW ...
mcp.digitalWrite(3, HIGH); // ne renvoie jamais une tension entre la pin et le GND
mcp.digitalWrite(4, LOW); // idem sur HIGH ou sur LOW ...
mcp.digitalWrite(5, LOW);
mcp.digitalWrite(6, LOW);
mcp.digitalWrite(7, LOW);
digitalWrite(4,HIGH); // sur ESP32 : ok allume la led
// sur les pin du ports A en Output : aucune tension en HIGH ou en LOW
// sur INTA et INTB : 3.28 VDC (rien de branché dessus) : normal ?
// Transfer input pin state to LED1
if (mcp.digitalRead(MCP_INPUTPIN)) // si bouton à 1 : avec le mcp,
// devrait voir l'entrée de l'extension mcp
{
Serial.printf ("Bouton actif \r") ;
// bouton actif quand rien n'est branché sur aucune GPIO 0.21 à 0.24 VDC instable
delay(200);
}
else // si bouton à 0
{
Serial.printf ("Bouton inactif \r") ;
delay(200);
}
}
Je me suis servi du bouton <CODE/> pour formater le code et fait un copier / coller : je ne vois pas ce que ça change ?
ou faut-il faire autre chose ou autrement ?
Je tourne en rond :
en bas de cette fenêtre j'ai 2 boutons : Save Edit et Close
si je clique sur : Save Edit j'ai 2 choix soit : Edit Post (retour à l'étape précédente)
Post Anyway (poster quand même)
si je clique sur : Close j'ai 3 choix soit : Discard (supprimer)
Save draft for later (sauvegarder le brouillon pour plus tard)
Keep Editing (rester en mode Edition)
Comment dire au site internet que j'ai modifié la conversation, que je veux enregistrer et envoyer cette conversation ?