د آردوینو کوډ د MPU-6050 سره د LCD1602 I2C ښودونکي لپاره
په دې ټیوټوریل کې به موږ زده کړو چې څنګه د MPU-6050 اکسلرومیټر او ګایروسکوپ د LCD1602 ډسپلې سره د I2C اړیکو په کارولو سره وصل کړو. MPU-6050 به د زاویو اندازهګیرۍ چمتو کړي چې په LCD باندې به ښودل کیږي. دا پروژه به تاسو سره مرسته وکړي چې د MPU-6050 زاویې په ریښتیني وخت کې وګورئ، چې ستاسو پوهه د سینسر ډیټا او ډسپلې اړیکو په اړه زیاتوي.


د دې ټیوټوریل په پای کې به تاسو یو فعال ترتیب ولرئ چې د X، Y، او Z زاویې په LCD سکرین باندې ښیې. دا د سینسر ډیټا او ډسپلې ټیکنالوژۍ سره په Arduino پروژو کې د عملي تجربې ترلاسه کولو لپاره یوه ښه لار ده. د نورو روښانتیا لپاره، ډاډ ترلاسه کړئ چې ویډیو وګورئ (په ویډیو کې په 00:00 کې).
هارډویر تشریح شوی
د دې پروژې اصلي برخې د MPU-6050 سینسر او د LCD1602 ډسپلې ماډل دي. MPU-6050 یو څو اړخیز سینسر دی چې د 3-محوره اکسلرومیټر او 3-محوره ګایروسکوپ سره یوځای کوي، چې د ریښتیني وخت زاویې اندازهګیرۍ چمتو کوي. دا د I2C له لارې اړیکه نیسي، چې د Arduino سره بې ساري ادغام ته اجازه ورکوي.
د LCD1602 ډسپلې هم د I2C پروتوکول کاروي، چې تارونه ساده کوي او د اړیکو لپاره د اړتیا وړ پنونو شمیر کموي. د I2C انٹرفیس اجازه ورکوي چې ډیری وسایل په ورته بس کې وصل شي، چې دا د ډیری سینسرونو یا برخو سره د پروژو لپاره اغیزمن کوي.
ډیټاشیټ تفصیلات
| جوړونکی | InvenSense |
|---|---|
| د برخې شمیره | MPU-6050 |
| د منطق/IO ولتاژ | 3.3 V / 5 V |
| د بریښنا رسولو ولتاژ | 3.3 V څخه تر 5 V |
| د محصول ډیټا کچه | 1 kHz (اعظمي) |
| د ګایروسکوپ حد | ±250، ±500، ±1000، ±2000 °/s |
| د اکسلرومیټر حد | ±2g، ±4g، ±8g، ±16g |
| بسته | QFN |
| یادښتونه / بدلونونه | د ډیجیټل موشن پروسیسر (DMP) شامل دی |
- د I2C پته وګورئ (تلوالیز 0x68 ده).
- د بریښنا رسولو مناسب ولتاژ ډاډمن کړئ (3.3 V یا 5 V).
- د SDA او SCL کرښو لپاره د پل-اپ ریزسټرونه وکاروئ که چیرې په بورډ کې نه وي.
- د ثبات لپاره د بریښنا پنونو ته نږدې د ډیکپلینګ کپیسیټرونو کارول په پام کې ونیسئ.
- د اړیکو ستونزو څخه مخنیوي لپاره د تارونو اړیکې تایید کړئ.
د تارونو لارښوونې

د MPU-6050 او LCD1602 ډسپلې ستاسو Arduino سره د تارونو لپاره، دا اړیکې تعقیب کړئ:
- د MPU-6050 د
VCCپن د Arduino په5Vپن سره وصل کړئ. - د MPU-6050 د
GNDپن د Arduino پهGNDپن سره وصل کړئ. - د MPU-6050 د
SDAپن د Arduino پهA4پن سره وصل کړئ. - د MPU-6050 د
SCLپن د Arduino پهA5پن سره وصل کړئ. - د LCD1602 ډسپلې لپاره، د
VCCپن د Arduino په5Vسره وصل کړئ. - د LCD1602 د
GNDپن د Arduino پهGNDپن سره وصل کړئ. - د LCD1602 د
SDAپن د هغهA4پن سره وصل کړئ چې د MPU-6050 لپاره کارول شوی. - د LCD1602 د
SCLپن د هغهA5پن سره وصل کړئ چې د MPU-6050 لپاره کارول شوی.
ډاډ ترلاسه کړئ چې خپلې اړیکې دوه ځله وګورئ، ځکه چې ناسم تارونه ممکن د وسیلې خرابوالي یا د اړیکو ناکامۍ لامل شي.
د کوډ مثالونه او تشریح
کوډ د MPU-6050 او LCD ډسپلې لپاره د اړتیا وړ کتابتونونو په شاملولو سره پیل کیږي. لاندې اقتباس ښیې چې څنګه MPU-6050 پیل کړو:
MPU6050 mpu6050(Wire);
دلته، موږ د MPU6050 اعتراض جوړوو، چې د سینسر څخه د ډیټا لوستلو لپاره به وکارول شي. بیا، موږ اړتیا لرو چې وسیله په setup() فنکشن کې تنظیم کړو:
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
lcd.begin();
lcd.backlight();
}
دا کوډ د سیریل اړیکه، د I2C بس، او د MPU-6050 سینسر پیل کوي. دا LCD هم پیل کوي او د هغې بیک لایټ چالانوي. لوپ د زاویو د تازه کولو او ښودلو منطق لري:
void loop() {
mpu6050.update();
lcd.clear();
lcdDisplay(0, 0, "X:", 2, 0, mpu6050.getAngleX());
lcdDisplay(13, 0, "Y:", 0, 1, mpu6050.getAngleY());
lcdDisplay(7, 1, "Z:", 9, 1, mpu6050.getAngleZ());
delay(100);
}
په دې لوپ کې، د X، Y، او Z زاویې تازه کیږي او په LCD باندې ښودل کیږي. د lcdDisplay() فنکشن د محصول په سمه توګه بڼه کولو لپاره کارول کیږي. تاسو کولی شئ بشپړ کوډ د مقالې لاندې ومومئ.
ډیمونسټریشن / څه تمه وکړو
کله چې ترتیب بشپړ شي او کوډ اپلوډ شي، تاسو باید د X، Y، او Z زاویې په LCD باندې په ریښتیني وخت کې وګورئ. که هرڅه په سمه توګه تار شوي وي، ډسپلې به هر 100 ملی ثانیه کې تازه شي، چې د MPU-6050 اوسنی سمت ښیې.
عام ستونزې د I2C اړیکو سمتیا او د بریښنا رسولو ثبات ډاډمن کول شامل دي. که MPU-6050 په سمه توګه پیل نه شي، تاسو ممکن په LCD باندې ناسم یا هیڅ ډیټا ونه ګورئ (په ویډیو کې په 01:15 کې).
/*
*
* This code is basic usage of the MPU-6050 accelerometer and gyroscope.
* Running this code, you will get angles only.
* The angles at X, Y, and Z are displayed on the LCD1602-I2C display module.
*
* Library and code have been taken from:
* https://github.com/tockn/MPU6050_tockn
*
* Updated by Ahmad Shamshiri on July 05, 2018 at 22:19 in Ajax, Ontario, Canada
* for Robojax.com
* Get this code from Robojax.com
* Watch video instructions for this code at: https://youtu.be/uIz6WIis4dc
*
* You will need to watch two videos before following the instructions in this video:
* 1-MPU6050 Introduction video and code: https://youtu.be/uhh7ik02aDc
* 2-LCD1602 with I2C module video and code: https://youtu.be/q9YC_GVHy5A
*/
#include <MPU6050_tockn.h>
#include <Wire.h>
MPU6050 mpu6050(Wire);
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
// initialize the LCD,
lcd.begin();
// Turn on the backlight and print a message.
lcd.backlight();
}
void loop() {
mpu6050.update();
Serial.print("angleX : ");
Serial.print(mpu6050.getAngleX());
Serial.print("\tangleY : ");
Serial.print(mpu6050.getAngleY());
Serial.print("\tangleZ : ");
Serial.println(mpu6050.getAngleZ());
lcd.clear();// clearn previous values from screen
lcdDisplay(
// to print X:
0, // character 0
0, // line 0
"X:",
// to print AngleX
2, // character 2
0, // line 0
mpu6050.getAngleX()
);
lcdDisplay(
// to print Y:
13, // character 13
0, // line 0
"Y:",
// to print AngleY
0, // character 0
1, // line 1
mpu6050.getAngleY()
);
lcdDisplay(
// to print Z:
7, // character 7
1, // line 1
"Z:",
// to print AngleZ
9, // character 9
1, // line 0
mpu6050.getAngleZ()
);
delay(100);
}// loop end
/*
* lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
* displays value and title on LCD1602
* How to use:
* If you want to display: "Voltage: 13.56mV" starting from the first character
* on the second row.
* use:
* lcdDisplay(0, 1, "Voltage: ", 13.56)
*
* tc is the character number (0)
* tr is the row number in the LCD (1)
* title is the text ("Voltage:")
* vc is the character number for the value
* vr is the row number for the value
* value is the value (13.56)
*/
void lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
{
// Robojax.com MPU6050 Demo
lcd.setCursor (tc,tr); //
lcd.print(title);
lcd.setCursor (vc,vr); //
lcd.print(value);
}
Things you might need
-
AmazonPurchase LCD1602-I2C from Amazonamzn.to
-
AmazonPurchase MPU-6050 from Amazonamzn.to
-
eBayPurchase LCD1602-I2C from eBayebay.us
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
Resources & references
-
ExternalManufacturer websiteinvensense.com
Files📁
Arduino Libraries (zip)
-
LCD1602 LCD Arduino library from Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB -
Arduino library for MPU9250
robojax-MPU9250-master.zip3.38 MB
Fritzing File
-
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB -
MPU-6050 Board GY-521
MPU-6050 Board GY-521.fzpz0.01 MB
Other files
-
MPU6050_tockn-masterArduino library for the MPU6050 accelerometer and gyroscope module. Provides functions to read acceleration, gyro, and temperature data, with calibration and angle calculation. Designed for easy integration into motion-sensing projects.
robojax-MPU6050_tockn-master.zip