Search Code

Sida loo Dejiyo Ciwaanada I²C iyo Sida Loo Isticmaalo I²C Scanner ee LCD1602 iyo LCD2004

Sida loo Dejiyo Ciwaanada I²C iyo Sida Loo Isticmaalo I²C Scanner ee LCD1602 iyo LCD2004

Cashiggan, waxaanu sahamin doonaa sida loo dejiyo ciwaanada I²C iyo isticmaalka scanner-ka I²C ee bandhigyada LCD1602 iyo LCD2004. Fahamka isgaarsiinta I²C ayaa muhiim u ah isku-dhafka qaybahan LCD-ga ee mashruucyadaada Arduino, taasoo u oggolaanaysa gudbinta xogta iyo xakamaynta si hufan. Markaad dhammayso hagahan, waxaad awoodi doontaa inaad si wax ku ool ah u aqoonsato ciwaanada I²C ee LCD-yadaada oo aad hubiso inay si sax ah u shaqeynayaan.

LCD1602-I2C display module with 4 wires

Waxaanu isticmaali doonaa sensor-ka BMP-180 qayb ka mid ah mashruucan, kaas oo ku shaqeeya isgaarsiinta I²C. Sensor-ku wuxuu bixiyaa akhrinno heerkul iyo cadaadis, kuwaas oo lagu muujin karo LCD1602 ama LCD2004. Casharradan waxaa ku jiri doona tilmaamo fiilooyin, qaybo kood ah, iyo muujin natiijooyinka la filayo. Si aad u fahanto si muuqaal ah, hubi inaad daawato fiidiyowga la xidhiidha (fiidiyowga 00:00).

Qalabka La Sharaxay

Qaybaha ugu muhiimsan ee mashruucan waxaa ka mid ah sensor-ka BMP-180, bandhig LCD1602 ama LCD2004, iyo loox Arduino. BMP-180 waa sensor cadaadis dhijitaal ah oo ku xidhiidha borotokoolka I²C, isagoo u baahan kaliya laba khadad xogeed: SDA (khadka xogta) iyo SCL (khadka saacadda). Bandhigyada LCD-ga sidoo kale waxay la jaan qaadi karaan I²C waxaana si fudud loo xakameyn karaa iyadoo la isticmaalo isla borotokoolka isgaarsiinta, taasoo u oggolaanaysa qaab nadiif ah oo hufan.

BMP-180 wuxuu ku shaqeeyaa koronto sahay ah inta u dhaxaysa 1.8V iyo 3.6V, taasoo la macno ah in lagu shideyn karo iyadoo la isticmaalo nidaamiye koronto haddii aad isticmaalayso il koronto sare. Bandhigyada LCD-ga, dhanka kale, caadi ahaan waxay ku shaqeeyaan 5V, taasoo ka dhigaysa mid fudud in lala xiriiriyo loox Arduino iyada oo aan loo baahnayn qaybo dheeri ah.

Faahfaahinta Xaashida Xogta

Soo-saare Bosch
Nambarka qaybta BMP-180
Korontada Logic/IO 1.8 - 3.6 V
Korontada sahayda 1.8 - 3.6 V
Korontada soo-saarka (kanal kasta) 3.6 µA
Korontada ugu sarreysa (kanal kasta) 1 mA
Hagaha soo-noqnoqoshada PWM N/A
Heerarka caqabadaha gelinta N/A
Hoos-u-dhaca korontada / RDS(on) / dhereg N/A
Xadka kulaylka -40 ilaa +85 °C
Baakad 3.6 x 3.8 mm
Xusuus / noocyo kale Sensor heerkul iyo cadaadis

 

  • Hubi korontada sahayda ee saxda ah: 1.8V ilaa 3.6V BMP-180.
  • Isticmaal resistors-ka kor-u-jiidashada ee khadadka SDA iyo SCL si isgaarsiinta I²C ay u degganaato.
  • Ka dhig fiilooyinka gaagaaban si looga fogaado hoos-u-dhaca calaamadda.
  • Hubi ciwaanka I²C ee saxda ah inta lagu jiro scanning-ka.
  • La soco xadka heerkulka: -40 ilaa +85 °C BMP-180.

Tilmaamaha Fiilooyinka

Arduino wirng for LCD1602 with I2C
Arduino wirng for LCD1602 with I2C

Si aad ugu xidhid sensor-ka BMP-180 iyo bandhigga LCD-ga Arduino-gaaga, raac tillaabooyinkan:

Marka hore, ku xidh binka Vn ee BMP-180-ka soo-saarka 5V ee Arduino-ga. Marka xigta, ku xidh binka GND ee BMP-180-ka dhulka Arduino-ga. Binka SDA ee BMP-180-ka waa inuu ku xidhmaa binka A4 ee Arduino-ga, halka binka SCL uu ku xidhmaa A5.

LCD1602 ama LCD2004, ku xidh binka VCC 5V ee Arduino-ga iyo binka GND dhulka sidoo kale. Binka SDA ee LCD-ga waa inuu sidoo kale ku xidhmaa A4 (oo la wadaago BMP-180), iyo binka SCL waa inuu ku xidhmaa A5.

Qaabkani wuxuu u oggolaanayaa labada qalab inay ku xidhiidhaan isla baska I²C, taasoo hubinaysa qaab nadiif ah oo hufan.

Tusaalooyinka Koodka & Sharaxaad

Si loo baaro ciwaanada I²C, waxaanu isticmaali doonaa qayb kood oo fudud. Qaybta soo socota waxay bilaabaysaa isgaarsiinta I²C waxayna diyaarisa kormeerka taxanaha ah:


#include 

void setup() {
  Wire.begin();
  Serial.begin(9600);
  while (!Serial); // Leonardo: sug kormeerka taxanaha
  Serial.println("\nI2C Scanner");
}

Koodkani wuxuu bilaabayaa maktabadda Wire ee isgaarsiinta I²C wuxuuna dejiyaa kormeerka taxanaha ee soo-saarka. Waa lagama maarmaan cillad-sheegista iyo hubinta in qalabka I²C la aqoonsado.

Hawsha loop-ka waxay baartaa qalabka ku yaal baska I²C waxayna daabacdaa ciwaanadooda:


void loop() {
  byte error, address;
  int nDevices = 0;
  Serial.println("Scanning...");

  for(address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      Serial.println(address, HEX);
      nDevices++;
    }
  }
  if (nDevices == 0) Serial.println("No I2C devices found\n");
  delay(5000); // sug 5 ilbiriqsi baaritaanka xiga
}

Loop-kani wuxuu hubinayaa ciwaan kasta oo ka bilaabmaya 1 ilaa 127, isagoo isku dayaya inuu la xidhiidho qalab kasta oo jooga. Haddii qalab uu aqoonsado isgaarsiinta, ciwaankiisa waxaa lagu daabacaa kormeerka taxanaha. Tani waa tillaabo muhiim ah oo lagu aqoonsanayo ciwaanka I²C ee LCD-gaaga ama qalabka kale ee ku xidhan.

Muujin / Waxa Laga Filayo

Marka scanner-ka I²C la shubo, waa inaad ku aragtaa farriimo kormeerka taxanaha oo muujinaya haddii qalab I²C la helay iyo in kale. Haddii ay guul tahay, soo-saarku wuxuu muujin doonaa ciwaanada qalabka ku xidhan, oo lagu qaabeeyey qiyamka hexadecimal (tusaale, "I2C device found at address 0x27"). Haddii aan qalab la helin, waxaad arki doontaa farriin u dhiganta.

Waa muhiim in la hubiyo in dhammaan xidhiidhada ay adag yihiin iyo in heerarka korontada ee saxda ah la siiyo si looga fogaado dhibaatooyinka aqoonsiga qalabka (fiidiyowga 05:30).

Sawirro

Arduino wirng for LCD1602 with I2C
Arduino wirng for LCD1602 with I2C
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD2004_display-1
LCD2004_display-1
LCD2004_display-2
LCD2004_display-2
I2C_module
I2C_module
125-Arduino code for finding an I2C address
Luqadda: C++
// --------------------------------------
//http://playground.arduino.cc/Main/I2cScanner
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not known.
// Version 2, June 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26, 2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// Version 6, November 27, 2015.
//    Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit addresses might not be seen properly.
// Watch Video explaining I2C address: https://www.youtube.com/watch?v=bqMMIbmYJS0
//
 
#include <Wire.h>
 
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}
 
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}

Waad u baahan tahay

Kheyraadka & Tixraacyada

Wali wax kaydsan ah oo weli ma jiro.

Faylasha📁

Arduino Libraries (zip)

Faylka Fritzing