Search Code

د آردوینو کوډ د MPU-6050 سره د LCD1602 I2C ښودونکي لپاره

د آردوینو کوډ د MPU-6050 سره د LCD1602 I2C ښودونکي لپاره

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

LCD1602-I2C display module with 4 wires

د دې ټیوټوریل په پای کې به تاسو یو فعال ترتیب ولرئ چې د 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 کرښو لپاره د پل-اپ ریزسټرونه وکاروئ که چیرې په بورډ کې نه وي.
  • د ثبات لپاره د بریښنا پنونو ته نږدې د ډیکپلینګ کپیسیټرونو کارول په پام کې ونیسئ.
  • د اړیکو ستونزو څخه مخنیوي لپاره د تارونو اړیکې تایید کړئ.

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

Arduino wiring for MPU-6050 with LCD

د 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 کې).

Images

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
MPU-6050-module-1
MPU-6050-module-1
MPU-6050-module-2
MPU-6050-module-2
MPU-6050-module-schematic
MPU-6050-module-schematic
MPU-6050-module-1
MPU-6050-module-1
Arduino wiring for MPU-6050 with LCD
Arduino wiring for MPU-6050 with LCD
118-Arduino code for MPU-6050 accelerometer and gyroscope sensor (all data)
Language: C++
/*
 * 
 * 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

Resources & references

Files📁

Arduino Libraries (zip)

Fritzing File

Other files

  • MPU6050_tockn-master
    Arduino 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