Tải bản đầy đủ
11 Mô phỏng trên Unity 3D

11 Mô phỏng trên Unity 3D

Tải bản đầy đủ

ĐỒ ÁN 3
Trang 23/17

CHƯƠNG 5.

KẾT LUẬN

1.12 Kết luận
1.1.1 Ưu điểm
Mạch chạy tốt, mô phỏng đúng với chuyển động cơ thể, ít bị trôi.
Mạch đơn giản, dễ thực hiện, ứng dụng được trong nhiều lĩnh vực cuộc sống.
1.1.2 Nhược điểm
Chương trình còn khá đơn giản, thô sơ. Chưa điều khiển được nhiều cảm biến bằng
1 Arduino.
1.13 Hướng phát triển
Đây là đề tài khá hay và mới mẻ, trong tương lai có thể phát triển thêm bằng cách
ứng dụng vào điều khiển robot bằng cảm biến gia tốc.

Mô Phỏng Chuyển Động Cánh Tay

SVTH : Nguyễn Nhật Quang

ĐỒ ÁN 3
Trang 24/17

TÀI LIỆU THAM KHẢO
Tiếng Việt:
[1]

http://dientuquangtruong.com/arduino-uno-r3-atmega328.html

[2]

http://blog.bitify.co.uk/2013/11/interfacing-raspberry-pi-and-mpu6050.html

[3]

http://machtudong.vn/sanpham/module-bluetooth-hc05-master-slave.html

[4]

http://machtudong.vn/sanpham/bluetooth-module-3v-55v-ket-noi-serialslave-hc-06.html

[5]

http://machtudong.vn/sanpham/usb-to-ttl-serial-pl2303hx.html

Mô Phỏng Chuyển Động Cánh Tay

SVTH : Nguyễn Nhật Quang

ĐỒ ÁN 3
Trang 25/17

PHỤ LỤC A
Code chương trình :
#include
#include
#include
const int MPU2=0x69, MPU1=0x68;
int16_t AcX1,AcY1,AcZ1,Tmp1,GyX1,GyY1,GyZ1;
int16_t AcX2,AcY2,AcZ2,Tmp2,GyX2,GyY2,GyZ2;
int data;
void setup()
{
// put your setup code here, to run once:
Wire.begin();
Serial.begin(9600);
Wire.beginTransmission(MPU1);
Wire.write(0x6B); //PWR_MDMT_1 register
Wire.write(0); // set to zero (wake up MPU6050)
Wire.endTransmission(true);
Wire.begin();
Wire.beginTransmission(MPU2);
Wire.write(0x6B); //PWR_MGMT_1 register
Wire.write(0); // set to zero (wake up MPU6050)
Wire.endTransmission(true);
}
void loop() {

Mô Phỏng Chuyển Động Cánh Tay

SVTH : Nguyễn Nhật Quang

ĐỒ ÁN 3
Trang 26/17

// put your main code here, to run repeatedly:
// get value for first MPU having address of 0x68
GetMPUvalue1(MPU1);
//get value for second MPU having address of 0x69
GetMPUvalue2(MPU2);
//print data to unity
}
void GetMPUvalue1(const int MPU1)
{
Wire.beginTransmission(MPU1);
Wire.write(0x3B); // starting with register 0x3B
Wire.endTransmission(false);
Wire.requestFrom(MPU1,14,true);
AcX1=Wire.read()<<8| Wire.read();
AcY1=Wire.read()<<8| Wire.read();
AcZ1=Wire.read()<<8| Wire.read();
Tmp1=Wire.read()<<8| Wire.read();
GyX1=Wire.read()<<8| Wire.read();
GyY1=Wire.read()<<8| Wire.read();
GyZ1=Wire.read()<<8| Wire.read();
Serial.print(AcX1);

Serial.print(";");

Serial.print(AcY1);

Serial.print(";");

Serial.print(GyY1);

Serial.print(";");

Serial.print(AcZ1); Serial.print(";");
Serial.print(GyX1);

Serial.print(";");

Serial.print(GyZ1); Serial.println("");
Serial.flush();
}

Mô Phỏng Chuyển Động Cánh Tay

SVTH : Nguyễn Nhật Quang

ĐỒ ÁN 3
Trang 27/17

void GetMPUvalue2(const int MPU2)
{
Wire.beginTransmission(MPU2);
Wire.write(0x3B); // starting with register 0x3B
Wire.endTransmission(false);
Wire.requestFrom(MPU2,14,true);
AcX2=Wire.read()<<8| Wire.read();
AcY2=Wire.read()<<8| Wire.read();
AcZ2=Wire.read()<<8| Wire.read();
Tmp2=Wire.read()<<8| Wire.read();
GyX2=Wire.read()<<8| Wire.read();
GyY2=Wire.read()<<8| Wire.read();
GyZ2=Wire.read()<<8| Wire.read();
Serial.print(AcX2);

Serial.print(";");

Serial.print(AcY2);

Serial.print(";");

Serial.print(GyY2);

Serial.print(";");

Serial.print(AcZ2); Serial.print(";");
Serial.print(GyX2);

Serial.print(";");

Serial.print(GyZ2); Serial.println("");
Serial.flush();
}

Mô Phỏng Chuyển Động Cánh Tay

SVTH : Nguyễn Nhật Quang