วิธีใช้ Sensor Arduion 2 ตัวเขียน Code อย่างไรครับ (GY521)..................................------------------

สอบถามครับ
อยากเขียนโปรแกรม
โดยที่มี
    1. GY 521 อยู่ 2 ตัว
    2. Key Pad อยู่ 1 อัน เอาไว้สลับ โหมด
    3. UNO Mircro controller อยู่ 1 ตัว
    4. LCD

จะให้ทำประมาณว่า ใช้ เซ็นวัดมุม Pitch กับ Row ครับ ทั้งสองตัวเลย
ให้โชว์ขึ้น LCD โดยการกดเปลี่ยนโหมด A B C D อ่าครับ

เช่น โหมด A โชว์ค่ามุม Pitch ของ GY 521 ตัวที่ 1
       โหมด B โชว์ค่ามุม Row ของ GY 521 ตัวที่ 1
       โหมด C โชว์ค่ามุม Pitch ของ GY 521 ตัวที่ 2
       โหมด D โชว์ค่ามุม Row ของ GY 521 ตัวที่ 2
ขอบคุณครับ

ปล. ผมสามารถทำได้แค่ใช้ GY 521 แค่ตัวเดียวจากโปรแแกรมข้างล่างนี้ครับ แต่กำลังหาวิธีที่สามารถใช้ ได้ 2 ตัวอยู่

#include <LiquidCrystal_I2C.h>
#include<Wire.h>
const int MPU=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
const float alpha = 0.5;
double fXg = 0;
double fYg = 0;
double fZg = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);     // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
  Serial.begin(9600);
  lcd.begin();
  delay(100);
}
void loop(){
  double pitch, roll, Xg, Yg, Zg;
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,14,true);  // request a total of 14 registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)    
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  fXg = AcX * alpha + (fXg * (1.0 - alpha));
  fYg = AcY * alpha + (fYg * (1.0 - alpha));
  fZg = AcZ * alpha + (fZg * (1.0 - alpha));
  roll  = (atan2(-fYg, fZg)*180.0)/M_PI;
  pitch = (atan2(-fXg, fZg)*180.0)/M_PI;
  Serial.print(pitch);
  Serial.print(":");
  Serial.println(roll);
  lcd.setCursor(0,0);
  lcd.print("X=");
  lcd.print(pitch);
  delay(100);
  lcd.setCursor(0,1);
  lcd.print("Y=");
  lcd.print(roll);
  delay(100);
}

ขอบคุณครับ
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
อ่านกระทู้อื่นที่พูดคุยเกี่ยวกับ  อิเล็กทรอนิกส์ การพัฒนาซอฟต์แวร์
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่