Jinsi ya Kuweka Anwani za I²C na Kutumia Skana ya I²C kwa LCD1602 na LCD2004
Katika mafunzo haya, tutachunguza jinsi ya kuweka anwani za I²C na kutumia skana ya I²C kwa maonyesho ya LCD1602 na LCD2004. Kuelewa mawasiliano ya I²C ni muhimu kwa kuunganisha moduli hizi za LCD na miradi yako ya Arduino, ikiruhusu usambazaji wa data na udhibiti kwa ufanisi. Kufikia mwisho wa mwongozo huu, utaweza kutambua kwa ufanisi anwani za I²C za LCD zako na kuhakikisha zinafanya kazi vizuri.


Tutatumia sensor ya BMP-180 kama sehemu ya mradi huu, ambayo hufanya kazi kwa kutumia mawasiliano ya I²C. Sensor hutoa usomaji wa joto na shinikizo, ambayo yanaweza kuonyeshwa kwenye LCD1602 au LCD2004. Mafunzo haya yatajumuisha maagizo ya wiring, sehemu za msimbo, na onyesho la matokeo yanayotarajiwa. Kwa uelewa wa kuona zaidi, hakikisha umeangalia video inayohusiana (katika video saa 00:00).
Vifaa Vimeelezwa
Vipengele kuu vya mradi huu ni pamoja na sensor ya BMP-180, onyesho la LCD1602 au LCD2004, na bodi ya Arduino. BMP-180 ni sensor ya shinikizo ya dijiti inayowasiliana kupitia itifaki ya I²C, inayohitaji mistari miwili tu ya data: SDA (mstari wa data) na SCL (mstari wa saa). Maonyesho ya LCD pia yanaendana na I²C na yanaweza kudhibitiwa kwa urahisi kwa kutumia itifaki hiyo hiyo ya mawasiliano, ikiruhusu usanidi safi na wa ufanisi.
BMP-180 hufanya kazi kwa voltage ya usambazaji kati ya 1.8V na 3.6V, ambayo inamaanisha inaweza kuendeshwa kupitia kidhibiti cha voltage ikiwa unatumia chanzo cha voltage ya juu. Maonyesho ya LCD, kwa upande mwingine, kwa kawaida hufanya kazi kwa 5V, na hivyo kurahisisha kuunganisha na bodi ya Arduino bila vipengele vya ziada.
Maelezo ya Datasheet
| Mtengenezaji | Bosch |
|---|---|
| Nambari ya sehemu | BMP-180 |
| Voltage ya Logic/IO | 1.8 - 3.6 V |
| Voltage ya usambazaji | 1.8 - 3.6 V |
| Mkondo wa pato (kwa kila chaneli) | 3.6 µA |
| Mkondo wa kilele (kwa kila chaneli) | 1 mA |
| Mwongozo wa mzunguko wa PWM | N/A |
| Viwango vya kizingiti cha logic ya kuingiza | N/A |
| Kushuka kwa voltage / RDS(on) / kueneza | N/A |
| Mipaka ya joto | -40 hadi +85 °C |
| Kifurushi | 3.6 x 3.8 mm |
| Vidokezo / lahaja | Sensor ya joto na shinikizo |
- Hakikisha voltage ya usambazaji inafaa: 1.8V hadi 3.6V kwa BMP-180.
- Tumia resistors za pull-up kwenye mistari ya SDA na SCL kwa mawasiliano thabiti ya I²C.
- Weka waya fupi ili kuepuka kuharibika kwa ishara.
- Angalia anwani sahihi ya I²C wakati wa skanning.
- Fuatilia kiwango cha joto: -40 hadi +85 °C kwa BMP-180.
Maagizo ya Wiring

Ili kuunganisha sensor ya BMP-180 na onyesho la LCD kwenye Arduino yako, fuata hatua hizi:

Kwanza, unganisha pini ya Vn ya BMP-180 kwenye pato la 5V kwenye Arduino. Ifuatayo, unganisha pini ya GND ya BMP-180 kwenye ardhi ya Arduino. Pini ya SDA ya BMP-180 inapaswa kuunganishwa kwenye pini ya A4 ya Arduino, wakati pini ya SCL inaunganisha kwenye A5.
Kwa LCD1602 au LCD2004, unganisha pini ya VCC kwenye 5V kwenye Arduino na pini ya GND kwenye ardhi pia. Pini ya SDA ya LCD inapaswa pia kuunganishwa kwenye A4 (inayoshirikiwa na BMP-180), na pini ya SCL inapaswa kuunganishwa kwenye A5.
Usanidi huu unaruhusu vifaa vyote viwili kuwasiliana kwenye basi moja ya I²C, kuhakikisha usanidi safi na wa ufanisi.
Mifano ya Msimbo na Maelekezo
Ili kuchanganua anwani za I²C, tutatumia sehemu rahisi ya msimbo. Sehemu ifuatayo inaanzisha mawasiliano ya I²C na kuandaa monitor ya serial:
#include
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: subiri monitor ya serial
Serial.println("\nI2C Scanner");
}
Msimbo huu unaanzisha maktaba ya Wire kwa mawasiliano ya I²C na kuweka monitor ya serial kwa pato. Ni muhimu kwa debugging na kuhakikisha kwamba vifaa vya I²C vinatambuliwa.
Kazi ya loop inachanganua vifaa kwenye basi ya I²C na kuchapisha anwani zao:
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); // subiri sekunde 5 kwa skanning inayofuata
}
Loop hii inaangalia kila anwani kutoka 1 hadi 127, ikijaribu kuwasiliana na vifaa vilivyopo. Ikiwa kifaa kinakubali mawasiliano, anwani yake inachapishwa kwenye monitor ya serial. Hii ni hatua muhimu katika kutambua anwani ya I²C ya LCD yako au vifaa vingine vilivyounganishwa.
Onyesho / Nini cha Kutarajia
Wakati skana ya I²C inapoendeshwa, unapaswa kuona ujumbe kwenye monitor ya serial unaoonyesha ikiwa vifaa vyovyote vya I²C vilipatikana. Ikiwa imefanikiwa, pato litaonyesha anwani za vifaa vilivyounganishwa, zikiwa katika muundo wa hexadecimal (kwa mfano, "I2C device found at address 0x27"). Ikiwa hakuna vifaa vilivyopatikana, utaona ujumbe unaolingana.
Ni muhimu kuhakikisha kwamba miunganisho yote ni salama na kwamba viwango sahihi vya voltage vinatolewa ili kuepuka matatizo katika kugundua vifaa (katika video saa 05:30).
// --------------------------------------
//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
}
Tänker att du kanske behöver
-
AmazonBuy LCD1602-I2C from Amazonamzn.to
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
-
AliExpressPurchase LCD1602-I2C from AliExpresss.click.aliexpress.com
Resurser och referenser
Inga resurser än.
Filer📁
Arduino-bibliotek (zip)
-
LCD1602 LCD Arduino library from Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB
Fritzing-fil
-
LCD2004-I2C
LCD2004-I2C.fzpz0.02 MB