ข้ามไปที่เนื้อหาหลัก

ส่งงานครั้งที่ 9

Gyro Sensor Interfacing

Gyro Sensor คือเซ็นเซอร์ที่มีไว้สำหรับตรวจจับลักษณะการหมุน โดยเป็นการตรวจจับแบบ แกน (3-Axes)


อุปกรณ์

  1. Arduino Uno
  2. MPU-6050
  3. 10K POT
  4. Jumper wire
  5. Breadboard
  6. USB cable
  7. Power supply
Diagram



Code

#include<LiquidCrystal.h> //ประกาศเมื่อใช้จอ
LiquidCrystal lcd(8,9,10,11,12,13); //ขาที่ต่อจอ
#include <Wire.h>
#include <MPU6050.h>

#define period 10000

MPU6050 mpu;

int count=0;
char okFlag=0;

byte degree[8] = {
  0b00000,
  0b00110,
  0b01111,
  0b00110,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};

void setup() 
{
  lcd.begin(16,2);
  lcd.createChar(0, degree);
  Serial.begin(9600);
  Serial.println("Initialize MPU6050");
  while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
  {
    lcd.clear();
    lcd.print("Device not Found");
    Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
    delay(500);
  }
  count=0;

  mpu.calibrateGyro();
  mpu.setThreshold(3);
  
  lcd.clear();
  lcd.print("MPU6050 Interface");
  lcd.setCursor(0,1);
  lcd.print(" Circuit Digest");
  delay(2000);
  lcd.clear();
}

void loop()
{
    lcd.clear();
    lcd.print("Temperature");
    long st=millis();
    Serial.println("Temperature");
    while(millis()<st+period)
    {
      lcd.setCursor(0,1);
      tempShow();
    }
    
    lcd.clear();
    lcd.print("Gyro");
    delay(2000);
    st=millis();
    Serial.println("Gyro");
    while(millis()<st+period)
    {
      lcd.setCursor(0,1);
      gyroShow();
    }

    lcd.clear();
    lcd.print("Accelerometer");
    delay(2000);
    st=millis();
    Serial.println("Accelerometer");
    while(millis()<st+period)
    {
      lcd.setCursor(0,1);
      accelShow();
    }
}

void tempShow()
{
    float temp = mpu.readTemperature();
    Serial.print(" Temp = ");
    Serial.print(temp);
    Serial.println(" *C");
    lcd.clear();
    lcd.print("Temperature");
    lcd.setCursor(0,1);
    lcd.print(temp);
    lcd.write((byte)0);
    lcd.print("C");
    delay(400);
}

void gyroShow()
{
  //lcd.setCursor(0,0); //กำหนดตำแหน่งLCD
  lcd.clear();
  lcd.print(" X     Y     Z");
  Vector rawGyro = mpu.readRawGyro();
  Vector normGyro = mpu.readNormalizeGyro();
  lcd.setCursor(0,1);
  lcd.print(normGyro.XAxis,1);
  lcd.setCursor(6,1);
  lcd.print(normGyro.YAxis,1);
  lcd.setCursor(12,1);
  lcd.print(normGyro.ZAxis,1);
  Serial.print(" Xnorm = ");
  Serial.print(normGyro.XAxis);
  Serial.print(" Ynorm = ");
  Serial.print(normGyro.YAxis);
  Serial.print(" Znorm = ");
  Serial.println(normGyro.ZAxis);
  delay(200);
}

void accelShow()
{
 // lcd.setCursor(0,0); //กำหนดตำแหน่งLCD
  lcd.clear();
  lcd.print(" X     Y     Z");
  Vector rawAccel = mpu.readRawAccel();
  Vector normAccel = mpu.readNormalizeAccel();
  lcd.setCursor(0,1);
  lcd.print(normAccel.XAxis,1);
  lcd.setCursor(6,1);
  lcd.print(normAccel.YAxis,1);
  lcd.setCursor(12,1);
  lcd.print(normAccel.ZAxis,1);
  Serial.print(" Xnorm = ");
  Serial.print(normAccel.XAxis);
  Serial.print(" Ynorm = ");
  Serial.print(normAccel.YAxis);
  Serial.print(" Znorm = ");
  Serial.println(normAccel.ZAxis);
  delay(200);
}

Credit By : https://circuitdigest.com/microcontroller-projects/mpu6050-gyro-sensor-interfacing-with-arduino

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ส่งงานครั้งที่ 16

Smoke Detector Using MQ2 อุปกรณ์ Arduino UNO Smoke Detector Arduino Shield (Self Designed) Power Supply Smoke Sensor (MQ2) Resistors (10K and 1K) Buzzer 16x2 LCD 10k POT LED LM358 Burg strips Diagram Code #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define buzzer 9 #define sensor A0   #define load_Res 10   #define air_factor 9.83                                                   float SmokeCurve[3] ={2.3,0.53,-0.44};    // (x, y, slope) x,y พิกัดของจุดหนึ่งและความลาดชันระหว่างสองจุด                                                                                     ...

ส่งงานครั้งที่ 19

Door Alarm อุปกรณ์ Breadboard Ultrasonic Sensor Buzzer Arduino Mega (any model) Jumper Wires USB cable for Arduino or 12v, 1A adapter. Diagram Code #include <NewPing.h> #define TRIGGER_PIN  12  // กำหนดให้ขา 12 เป็นTRIGGER #define ECHO_PIN     11  // กำหนดให้ขา 11 เป็นECHO #define MAX_DISTANCE 500 // ค่าระยะห่างที่มากที่สุด NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPingตั้งค่าระยะห่าง unsigned int pingSpeed = 50; // ความถี่ในการส่งข้อมูล unsigned long pingTimer; int flag = 0; // รอpingครั้งต่อไป void setup() {   Serial.begin(115200); // เปิด serial monitor ที่ 115200   pingTimer = millis();   pinMode(10, OUTPUT);   // Start now. } void loop() {   if (millis() >= pingTimer) {   // pingSpeed จากครั้งล่าสุดถึงอีก ping     pingTimer += pingSpeed;      // ตั้งเวลาpingครั้งต่อไป     sonar.ping_timer(echoCheck); // ส่งค่าpingออกเรีย...