Parutions - Les micro contrôleurs

Scanner I2C Arduino

| | Les micro contrôleurs | 914
Scanner I2C Arduino
I2c

Ce sketch entre en communication avec toutes les adresses I2C possibles et affiche celles qui répondent. En effet, lorsque vous utilisez des modules I2C pour Arduino, le fabricant ne donne pas toujours l'adresse du périphérique I2C à l'intérieur de la puce. C'est un problème si l'adresse est inconnue ou si vous écrivez à la mauvaise adresse.

Raccordement

  • Pin SCD du module à scanner : Sur la pin SCD de l'Arduino.
  • Pin SDA du module à scanner ; Sur la pin SDA de l'Arduino.

Le Sketch


Code ARDUINO :
#include <Wire.h>
            void setup(){
                Wire.begin();
                Serial.begin(9600);
                Serial.println("\n Scanner de port(s) I2C");
                Serial.println("________________________\n");
            }
 
            void loop(){
                byte error, address;
                int nDevices;
                Serial.println("Recherche en cours...");
                nDevices = 0;
                for(address = 1; address < 127; address++ ){
                    Wire.beginTransmission(address);
                    error = Wire.endTransmission();
                    if (error == 0){
                        Serial.print("Equipement I2C à l'addresse 0x");
                        if (address<16)
                            Serial.print("0");
                        Serial.print(address,HEX);
                        Serial.println("  !");
                        nDevices++;
                    }
                        else if (error==4){
                            Serial.print("Erreur inconnue a l'addresse 0x");
                                if (address<16) 
                                    Serial.print("0");
                                Serial.println(address,HEX);
                        }    
                }
                if (nDevices == 0) 
                    Serial.println("Aucun équipement I2C détecté...\n");
                        else
                            Serial.println("Fin de la recherche\n");
                delay(3000);           
            }