کوډ ولټوئ

د I²C پتې څنګه وټاکو او د LCD1602 او LCD2004 لپاره د I²C سکینر څنګه وکاروو

د I²C پتې څنګه وټاکو او د LCD1602 او LCD2004 لپاره د I²C سکینر څنګه وکاروو

په دې ټیوټوریل کې، موږ به وپلټو چې څنګه د I²C پتې وټاکو او د LCD1602 او LCD2004 نندارو لپاره د I²C سکینر وکاروو. د I²C اړیکو پوهیدل ستاسو د Arduino پروژو سره د دې LCD ماډلونو ادغام لپاره خورا مهم دي، چې د معلوماتو اغیزمن لیږد او کنټرول ته اجازه ورکوي. د دې لارښود په پای کې، تاسو به وکولی شئ په مؤثره توګه د خپلو LCDs I²C پتې وپیژنئ او ډاډ ترلاسه کړئ چې دوی په سمه توګه کار کوي.

LCD1602-I2C display module with 4 wires

موږ به د دې پروژې د یوې برخې په توګه د BMP-180 سینسر وکاروو، کوم چې د I²C اړیکو په کارولو سره کار کوي. سینسر د تودوخې او فشار لوستل چمتو کوي، کوم چې د LCD1602 یا LCD2004 په دواړو کې ښودل کیدی شي. دا ټیوټوریل به د تارونو لارښوونې، د کوډ برخې، او د تمه شویو پایلو نندارې شامل کړي. د لا زیات بصري پوهاوي لپاره، ډاډ ترلاسه کړئ چې اړونده ویډیو وګورئ (په ویډیو کې په 00:00).

هارډویر تشریح شوی

د دې پروژې اصلي برخې د BMP-180 سینسر، د LCD1602 یا LCD2004 نندارې، او د Arduino بورډ شامل دي. BMP-180 یو ډیجیټل فشار سینسر دی چې د I²C پروتوکول له لارې اړیکه نیسي، چې یوازې دوه ډیټا کرښو ته اړتیا لري: SDA (ډیټا کرښه) او SCL (کلاک کرښه). د LCD نندارې هم د I²C سره مطابقت لري او په اسانۍ سره د ورته اړیکو پروتوکول په کارولو سره کنټرول کیدی شي، چې د پاک او اغیزمن تنظیم اجازه ورکوي.

BMP-180 د 1.8V او 3.6V ترمنځ د بریښنا رسولو ولتاژ سره کار کوي، پدې معنی چې دا د ولتاژ تنظیم کونکي له لارې ځواکمن کیدی شي که تاسو د لوړ ولتاژ سرچینه کاروئ. له بلې خوا، د LCD نندارې معمولا په 5V کار کوي، چې دا د اضافي برخو پرته د Arduino بورډ سره اړیکه اسانه کوي.

ډیټاشیټ تفصیلات

جوړونکی بوش
د برخې شمېره BMP-180
منطق/IO ولتاژ 1.8 - 3.6 V
د بریښنا رسولو ولتاژ 1.8 - 3.6 V
د تولید جریان (په هر چینل) 3.6 µA
د لوړ جریان (په هر چینل) 1 mA
د PWM فریکونسۍ لارښوونه N/A
د منطق داخلولو حدونه N/A
د ولتاژ کمښت / RDS(on) / سنتریشن N/A
حرارتي حدونه -40 to +85 °C
بسته 3.6 x 3.8 mm
یادښتونه / ډولونه د تودوخې او فشار سینسر

 

  • د مناسب ولتاژ رسولو ډاډ ترلاسه کړئ: د BMP-180 لپاره 1.8V څخه تر 3.6V.
  • د مستحکم I²C اړیکو لپاره په SDA او SCL کرښو کې د پل-اپ ریزسټرونه وکاروئ.
  • د سیګنال خرابیدو څخه مخنیوي لپاره تارونه لنډ وساتئ.
  • د سکین کولو پرمهال د سم I²C پتې لپاره وګورئ.
  • د تودوخې حد وڅارئ: د BMP-180 لپاره -40 څخه تر +85 °C.

د تارونو لارښوونې

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

د BMP-180 سینسر او LCD نندارې ستاسو Arduino سره د تار کولو لپاره، دا ګامونه تعقیب کړئ:

لومړی، د BMP-180 د Vn پن په Arduino باندې د 5V آوټ پوټ سره وصل کړئ. بیا، د BMP-180 د GND پن د Arduino ځمکې سره وصل کړئ. د BMP-180 د SDA پن باید د Arduino د A4 پن سره وصل شي، پداسې حال کې چې د SCL پن A5 سره وصل کیږي.

د LCD1602 یا LCD2004 لپاره، د VCC پن په Arduino باندې 5V سره او د GND پن هم ځمکې سره وصل کړئ. د LCD د SDA پن باید هم A4 سره وصل شي (د BMP-180 سره شریک)، او د SCL پن باید A5 سره وصل شي.

دا ترتیب دواړو وسیلو ته اجازه ورکوي چې په ورته I²C بس باندې اړیکه ونیسي، چې د پاک او اغیزمن تنظیم ډاډ ورکوي.

د کوډ مثالونه او واک ترو

د I²C پتې سکین کولو لپاره، موږ به یو ساده کوډ برخه وکاروو. لاندې اقتباس د I²C اړیکه پیل کوي او سریال مانیټر چمتو کوي:


#include 

void setup() {
  Wire.begin();
  Serial.begin(9600);
  while (!Serial); // لیونارډو: د سریال مانیټر انتظار
  Serial.println("\nI2C سکینر");
}

دا کوډ د I²C اړیکو لپاره د Wire کتابتون پیل کوي او د آوټ پوټ لپاره سریال مانیټر تنظیموي. دا د ډیبګ کولو او ډاډ ترلاسه کولو لپاره اړین دی چې د I²C وسایل پیژندل شوي.

د لوپ فنکشن په I²C بس باندې د وسیلو لپاره سکین کوي او د دوی پتې چاپوي:


void loop() {
  byte error, address;
  int nDevices = 0;
  Serial.println("سکین کول...");

  for(address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C وسیله په پته 0x");
      Serial.println(address, HEX);
      nDevices++;
    }
  }
  if (nDevices == 0) Serial.println("هیڅ I2C وسیله ونه موندل شوه\n");
  delay(5000); // د راتلونکي سکین لپاره 5 ثانیې انتظار
}

دا لوپ له 1 څخه تر 127 پورې هر پته چیک کوي، د هر موجود وسیلې سره د اړیکو هڅه کوي. که یوه وسیله اړیکه ومني، د هغې پته سریال مانیټر ته چاپ کیږي. دا ستاسو د LCD یا نورو وصل شویو وسیلو د I²C پتې پیژندلو لپاره یو مهم ګام دی.

ننداره / څه تمه وکړو

کله چې د I²C سکینر پرمخ وړل کیږي، تاسو باید په سریال مانیټر کې پیغامونه وګورئ چې ښیي آیا کوم I²C وسایل موندل شوي. که بریالي وي، آوټ پوټ به د وصل شویو وسیلو پتې ښکاره کړي، چې د هیکساډیسیمل ارزښتونو په توګه بڼه شوي (د مثال په توګه، "I2C وسیله په پته 0x27"). که هیڅ وسیله ونه موندل شي، تاسو به اړونده پیغام وګورئ.

دا مهمه ده چې ډاډ ترلاسه کړئ چې ټولې اړیکې خوندي دي او سم ولتاژ کچه چمتو شوې ده ترڅو د وسیلې کشف کولو ستونزو څخه مخنیوی وشي (په ویډیو کې په 05:30).

انځورونه

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
ژبه: 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
}

هغه شیان چې تاسو ورته اړتیا لرئ

سرچینې او حوالې

تر اوسه هیڅ سرچینې نشته.

فایلونه📁

Arduino کتابتونونه (zip)

Fritzing فایل