I²C Scanner mit LC Display - AZ-Delivery

Salut et bienvenu à notre contribution de Blog actuelle.

I²C l'autobus (l'allemand “I-Quadrat-C” ou l'anglais “I-Squared-C”) est un autobus de données en série. Celui-ci est aussi connu sous l'indication TWI (interface de Two Wire).
Il permet la communication entre Mickrocontroller et modules différents sur tout simplement 2 directions, et le permet très simplement à des détecteurs et des modules à des coffrant et de programmer.

Chaque appareil capable d'I²C a une adresse fixée par le fabricant. A certains modules peuvent être fixés untersten 3 Bits plus de 3 Steuerpins. Dans ce cas peuvent être faits jusqu'à huit ICs analogues à I²C l'autobus.

Pour apporter I²C l'adresse d'un module dans l'expérience, des bricoleurs recourent volontiers à un petit sketch comme i2cdetect qui fouille les adresses différentes d'I²C l'autobus, et cela liste dans le moniteur en série.
Qui a, donc, beaucoup d'I²C des modules, ou doit assez souvent tester les quantités grandes, pour celui-ci un scanner i²C avec le display se propose.

Pour ce projet, les éléments suivants étaient utilisés :

- un module ESP32 NodeMCU (là ces 2 I²C séparés la pénitence a)
- l'HD44780 1602 le display Bundle avec I²C l'interface
- 2x Breadboard
- 8x jumper le câble m2f
- 2x jumper le câble m2m
- Micro le câble USB pour ESP32

La mise en circuit est jointe par le fil comme dans le tableau suivant.

 

Tableau

Si nous maintenant notre sketch sur un haut magasin ESP32 l'annonce suivante apparaît à tour de rôle dans le display :

LC Display 1

Dès que nous branchons maintenant I²C le module à nos directions de test pour SDA et SCL/SCK et pourvoyons en courant, l'adresse apparaît trouvé dans le display :

LC Display 2
Il est recommandé les correspondances de test à beschriften et incorporer tout dans un boîtier.

Inscription

Avec cela nous avons produit un simple appareil de test avec nous dans l'avenir vite et sûrement, et sans ordinateur, I²C l'adresse de nos modules peuvent instruire.

Nous mettons à la disposition volontiers le sketch appartenant de vous :

 

/* I2C slave Address le scanner
Kutscher07 : Modified for TTGO TQ board with builtin OLED
Source : https://github.com/espressif/arduino-esp32/issues/977
AZ-Delivery : Modified for ESP32 with en 1602 LCD
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define SDA1 21
#define SCL1 22
#define SDA2 17
#define SCL2 16
TwoWire I2Cone = TwoWire(0);
TwoWire I2Ctwo = TwoWire(1);
uint8_t lcdColumns = 16;
uint8_t lcdRows = 2;
bool detected=false;
//Ici adaptent l'adresse de Displaya utilisé.
LiquidCrystal_I2C lcd(0x3F, lcdColumns, lcdRows);   void scan2(){   detected=false;   lcd.curseur d'assortiment(0,0);   lcd.clear();   lcd.print("I2C found at :");   lcd.curseur d'assortiment(0,1);   uint8_t cnt=0;   for(uint8_t i=0;i<128;i++){     I2Ctwo.beginTransmission(i);     uint8_t ec=I2Ctwo.transmission finale(true);     if(ec==0){       detected=true;       if(i<16) lcd.print("0");       lcd.print("0x");       lcd.print(i,PRATIQUE LA MAGIE);       lcd.print(" ");       cnt++;     }   }   if (detected==false){     lcd.clear();     lcd.curseur d'assortiment(0,0);     lcd.print("No I2C devices");     lcd.curseur d'assortiment(0,1);     lcd.print("found...");   }
}   void setup(){
I2Cone.begin(SDA1,SCL1,400000); //SDA pin 21, SCL pin 22 TTGO TQ
I2Ctwo.begin(SDA2,SCL2,400000); //SDA2 pin 17, SCL2 pin 16    lcd.init();   lcd.backlight();
}

void loop(){   lcd.curseur d'assortiment(0, 0);   lcd.clear();   lcd.print("Scanning I2C Bus...");   delay(2000);   scan2();   delay(4000);
}

 


Nous espérons le projet actuel vous est tombé. Peut-être, vous avez Ideeen et suggestions comme on le tout pourrait encore élargir ? Nous nous réjouissons de votre feed-back, et prenons congé jusqu'à la prochaine contribution.

DisplaysEsp-32Projekte für anfänger

3 commentaires

ad

ad

/* I2C slave Address Scanner
Kutscher07: Modified for TTGO TQ board with builtin OLED
Quelle: https://github.com/espressif/arduino-esp32/issues/977
AZ-Delivery: Modified for ESP32 with 1602 LCD
*/
#include
#include
#define SDA1 21
#define SCL1 22
#define SDA2 17
#define SCL2 16
TwoWire I2Cone = TwoWire(0);
TwoWire I2Ctwo = TwoWire(1);
uint8_t lcdColumns = 16;
uint8_t lcdRows = 2;
bool detected=false;
//Hier die Adresse des verwendeten Displaya anpassen.
LiquidCrystal_I2C lcd(0×3F, lcdColumns, lcdRows);  

void scan2(){
 detected=false;
 lcd.setCursor(0,0);
 lcd.clear();
 lcd.print(“I2C found at:  ”);
 lcd.setCursor(0,1);
 uint8_t cnt=0;
 for(uint8_t i=0;i<128;i++){
   I2Ctwo.beginTransmission(i);
   uint8_t ec=I2Ctwo.endTransmission(true);
   if(ec==0){
     detected=true;
     if(i<16) lcd.print(“0”);
     lcd.print(“0x”);
     lcd.print(i,HEX);
     lcd.print(" “);
     cnt++;
   }
 }
 if (detected==false){
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print(”No I2C devices");
   lcd.setCursor(0,1);
   lcd.print(“found …”);
 }
}  

void setup(){
I2Cone.begin(SDA1,SCL1,400000); // SDA pin 21, SCL pin 22 TTGO TQ
I2Ctwo.begin(SDA2,SCL2,400000); // SDA2 pin 17, SCL2 pin 16
 lcd.init();
 lcd.backlight();
}

void loop(){
 lcd.setCursor(0, 0);
 lcd.clear();
 lcd.print(“Scanning I2C Bus…”);
 delay(2000);
 scan2();
 delay(4000);
}

Armin Walter

Armin Walter

In der Prozedur setup() fehlt die Initialisierung von IIC.

Einfügen Wire.begin(); vor “I2Cone.begin………”

Michael Reichelt

Michael Reichelt

Hallo, beim Compilieren erhalte ich den Fehler
no matching function for call to ‘TwoWire::TwoWire(int)’
Ich habe es dann mit dem oben erwähnten Script i2cdetect versucht, der produziert den gleichen Fehler – was mache ich falsch?

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Articles de blog recommandés

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery