#include  //Include the Wire.h library so we can communicate with the  dịch - #include  //Include the Wire.h library so we can communicate with the  Việt làm thế nào để nói

#include //Include the Wire.h libr

#include //Include the Wire.h library so we can communicate with the gyro

//Declaring variables
int cal_int;
unsigned long UL_timer;
double gyro_pitch, gyro_roll, gyro_yaw;
double gyro_roll_cal, gyro_pitch_cal, gyro_yaw_cal;
byte highByte, lowByte;

//Setup routine
void setup(){
Wire.begin(); //Start the I2C as master
Serial.begin(9600); //Start the serial connetion @ 9600bps

//The gyro is disabled by default and needs to be started
Wire.beginTransmission(105); //Start communication with the gyro (adress 1101001)
Wire.write(0x20); //We want to write to register 20
Wire.write(0x0F); //Set the register bits as 00001111 (Turn on the gyro and enable all axis)
Wire.endTransmission(); //End the transmission with the gyro
Wire.beginTransmission(105); //Start communication with the gyro (adress 1101001)
Wire.write(0x23); //We want to write to register 23
Wire.write(0x80); //Set the register bits as 10000000 (Block Data Update active)
Wire.endTransmission(); //End the transmission with the gyro


delay(250); //Give the gyro time to start

//Let's take multiple samples so we can determine the average gyro offset
Serial.print("Starting calibration..."); //Print message
for (cal_int = 0; cal_int < 2000 ; cal_int ++){ //Take 2000 readings for calibration
gyro_signalen(); //Read the gyro output
gyro_roll_cal += gyro_roll; //Ad roll value to gyro_roll_cal
gyro_pitch_cal += gyro_pitch; //Ad pitch value to gyro_pitch_cal
gyro_yaw_cal += gyro_yaw; //Ad yaw value to gyro_yaw_cal
if(cal_int%100 == 0)Serial.print("."); //Print a dot every 100 readings
delay(4); //Wait 4 milliseconds before the next loop
}
//Now that we have 2000 measures, we need to devide by 2000 to get the average gyro offset
Serial.println(" done!"); //2000 measures are done!
gyro_roll_cal /= 2000; //Divide the roll total by 2000
gyro_pitch_cal /= 2000; //Divide the pitch total by 2000
gyro_yaw_cal /= 2000; //Divide the yaw total by 2000

}
//Main program
void loop(){
delay(250); //Wait 250 microseconds for every loop
gyro_signalen(); //Read the gyro signals
print_output(); //Print the output
}

void gyro_signalen(){
Wire.beginTransmission(105); //Start communication with the gyro (adress 1101001)
Wire.write(168); //Start reading @ register 28h and auto increment with every read
Wire.endTransmission(); //End the transmission
Wire.requestFrom(105, 6); //Request 6 bytes from the gyro
while(Wire.available() < 6); //Wait until the 6 bytes are received
lowByte = Wire.read(); //First received byte is the low part of the angular data
highByte = Wire.read(); //Second received byte is the high part of the angular data
gyro_roll = ((highByte
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
#include Bao gồm các thư viện Wire.h để chúng tôi có thể giao tiếp với con quay hồi chuyểnKhai báo biếnint cal_int;unsigned dài UL_timer;đôi gyro_pitch, gyro_roll, gyro_yaw;đôi gyro_roll_cal, gyro_pitch_cal, gyro_yaw_cal;byte highByte, lowByte;Thiết lập thói quenvoid setup() {} Wire.Begin(); Bắt đầu I2C như thạc sĩ Serial.Begin(9600); Bắt đầu nối tiếp connetion @ 9600bps Con quay hồi chuyển tắt theo mặc định và cần phải được bắt đầu Wire.beginTransmission(105); Bắt đầu giao tiếp với con quay hồi chuyển (địa chỉ 1101001) Wire.write(0x20); Chúng tôi muốn viết thư cho đăng ký 20 Wire.write(0x0F); Set các bit đăng ký như là 00001111 (rẽ vào con quay hồi chuyển và cho phép tất cả trục) Wire.endTransmission(); Kết thúc việc truyền với con quay hồi chuyển Wire.beginTransmission(105); Bắt đầu giao tiếp với con quay hồi chuyển (địa chỉ 1101001) Wire.write(0x23); Chúng tôi muốn viết thư cho đăng ký 23 Wire.write(0x80); Set các bit đăng ký như 10000000 (khối Cập nhật dữ liệu hoạt động) Wire.endTransmission(); Kết thúc việc truyền với con quay hồi chuyển Delay(250); Cho con quay hồi chuyển có thời gian bắt đầu Hãy tham gia nhiều mẫu nên chúng tôi có thể xác định đối tượng dời hình con quay hồi chuyển trung bình Serial.Print ("bắt đầu hiệu chuẩn..."); In thông báo cho (cal_int = 0 cal_int < 2000; cal_int ++) {//Take 2000 bài đọc cho hiệu chuẩn gyro_signalen(); Đọc đầu ra con quay hồi chuyển gyro_roll_cal = gyro_roll; Quảng cáo lăn giá trị gyro_roll_cal gyro_pitch_cal = gyro_pitch; Quảng cáo giá trị sân gyro_pitch_cal gyro_yaw_cal = gyro_yaw; Giá trị yaw quảng cáo để gyro_yaw_cal Nếu (cal_int % 100 == 0)Serial.print("."); In một dấu chấm hàng đọc 100 Delay(4); Chờ đợi 4 mili giây trước khi vòng lặp tiếp theo } Bây giờ chúng tôi có các biện pháp năm 2000, chúng tôi cần phải devide năm 2000 để bù đắp con quay hồi chuyển trung bình Serial.println ("thực hiện!"); năm 2000 các biện pháp được thực hiện! gyro_roll_cal / = 2000; Chia cho tổng số cuộn 2000 gyro_pitch_cal / = 2000; Chia cho tổng số pitch 2000 gyro_yaw_cal / = 2000; Chia cho tổng số yaw 2000 }Chương trình chínhvoid loop() {} Delay(250); Chờ đợi miligiây 250 cho mỗi vòng lặp gyro_signalen(); Đọc những tín hiệu con quay hồi chuyển print_output(); In ấn đầu ra}void gyro_signalen() {} Wire.beginTransmission(105); Bắt đầu giao tiếp với con quay hồi chuyển (địa chỉ 1101001) Wire.write(168); Bắt đầu đọc @ đăng ký 28h và tự động tăng với mỗi đọc Wire.endTransmission(); Kết thúc việc truyền tải Wire.requestFrom (105, 6); Yêu cầu 6 byte từ con quay hồi chuyển while(wire.Available() < 6); Chờ cho đến khi 6 byte được nhận lowByte = Wire.read(); Byte nhận đầu tiên là phần thấp của các dữ liệu góc highByte = Wire.read(); Byte nhận thứ hai là phần cao của dữ liệu góc gyro_roll = ((highByte << 8) |lowByte); Nhân highByte 256 và quảng cáo lowByte if(cal_int == 2000) gyro_roll-= gyro_roll_cal; Chỉ bồi thường sau khi hiệu chuẩn lowByte = Wire.read(); Byte nhận đầu tiên là phần thấp của các dữ liệu góc highByte = Wire.read(); //Second received byte is the high part of the angular data gyro_pitch = ((highByte<<8)|lowByte); //Multiply highByte by 256 and ad lowByte gyro_pitch *= -1; //Invert axis if(cal_int == 2000)gyro_pitch -= gyro_pitch_cal; //Only compensate after the calibration lowByte = Wire.read(); //First received byte is the low part of the angular data highByte = Wire.read(); //Second received byte is the high part of the angular data gyro_yaw = ((highByte<<8)|lowByte); //Multiply highByte by 256 and ad lowByte gyro_yaw *= -1; //Invert axis if(cal_int == 2000)gyro_yaw -= gyro_yaw_cal; //Only compensate after the calibration}void print_output(){ Serial.print("Pitch:"); if(gyro_pitch >= 0)Serial.print("+"); Serial.print(gyro_pitch/57.14286,0); //Convert to degree per second if(gyro_pitch/57.14286 - 2 > 0)Serial.print(" NoU"); else if(gyro_pitch/
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
#include// Bao gồm thư viện Wire.h vì vậy chúng tôi có thể giao tiếp với các con quay hồi chuyển // Khai báo các biến int cal_int; unsigned long UL_timer; gyro_pitch đôi, gyro_roll, gyro_yaw; gyro_roll_cal đôi, gyro_pitch_cal, gyro_yaw_cal; byte highByte, lowByte; // cài đặt thường xuyên trống setup () { Wire.begin (); // Bắt đầu I2C như là bậc thầy Serial.begin (9600); // Khởi động nối tiếp connetion @ 9600bps // Các con quay hồi chuyển được tắt theo mặc định và cần phải được bắt đầu Wire.beginTransmission (105); // Bắt đầu giao tiếp với con quay hồi chuyển (địa chỉ 1.101.001) Wire.write (0x20); // Chúng tôi muốn viết để đăng ký 20 Wire.write (0x0F); // Thiết lập các bit đăng ký như là 00001111 (Bật gyro và cho phép tất cả các trục) Wire.endTransmission (); // Kết thúc truyền với gyro Wire.beginTransmission (105); // Bắt đầu giao tiếp với con quay hồi chuyển (địa chỉ 1.101.001) Wire.write (0x23); // Chúng tôi muốn viết để đăng ký 23 Wire.write (0x80); // Thiết lập các bit đăng ký như là 10000000 (Block dữ liệu Cập nhật hoạt động) Wire.endTransmission (); // Kết thúc truyền với con quay hồi chuyển chậm (250); // Cho thời gian quay hồi chuyển để bắt đầu // Hãy lấy nhiều mẫu để chúng tôi có thể xác định các con quay hồi chuyển trung bình bù đắp Serial.print ( "Bắt đầu chuẩn ..."); // Nhắn Print cho (cal_int = 0; cal_int <2000; cal_int ++) {// Lấy 2.000 bài đọc chuẩn gyro_signalen (); // Đọc đầu ra gyro gyro_roll_cal + = gyro_roll; // Giá trị cuộn Quảng cáo để gyro_roll_cal gyro_pitch_cal + = gyro_pitch; // Giá trị sân Quảng cáo để gyro_pitch_cal gyro_yaw_cal + = gyro_yaw; // Giá trị yaw Quảng cáo để gyro_yaw_cal if (cal_int% 100 == 0) Serial.print ( "."); // In một dấu chấm 100 bài đọc chậm trễ (4); // Đợi 4 mili giây trước khi các vòng tiếp theo } // Bây giờ chúng ta có biện pháp 2000, chúng ta cần phải chia năm 2000 để có được những con quay hồi chuyển trung bình bù đắp Serial.println ( "done!"); // 2000 các biện pháp được thực hiện! Gyro_roll_cal / = 2000; // Chia tổng cuộn vào năm 2000 gyro_pitch_cal / = 2000; // Chia tổng số sân vào năm 2000 gyro_yaw_cal / = 2000; // Chia tổng yaw năm 2000 } // chương trình chính khoảng trống vòng lặp () { delay (250); // Chờ 250 micro giây cho mỗi vòng lặp gyro_signalen (); // Đọc tín hiệu gyro print_output (); // In ra } trống gyro_signalen () { Wire.beginTransmission (105); // Bắt đầu giao tiếp với con quay hồi chuyển (địa chỉ 1.101.001) Wire.write (168); // Bắt đầu đọc @ đăng ký 28h và tự động tăng với mỗi việc đọc Wire.endTransmission (); // Kết thúc truyền Wire.requestFrom (105, 6); // Yêu cầu 6 byte từ gyro khi (Wire.available () <6); // Chờ cho đến khi 6 byte được nhận lowByte = Wire.read (); // Đầu tiên nhận được byte là phần thấp của dữ liệu góc highByte = Wire.read (); // Thứ hai nhận được byte là phần cao của dữ liệu góc gyro_roll = ((highByte << 8) | lowByte); // Multiply highByte 256 và lowByte quảng cáo nếu (cal_int == 2000) gyro_roll - = gyro_roll_cal; // Chỉ bù sau khi hiệu chỉnh lowByte = Wire.read (); // Đầu tiên nhận được byte là phần thấp của dữ liệu góc highByte = Wire.read (); // Thứ hai nhận được byte là phần cao của dữ liệu góc gyro_pitch = ((highByte << 8) | lowByte); // Multiply highByte 256 và quảng cáo lowByte gyro_pitch * = -1; // Invert trục if (cal_int == 2000) gyro_pitch - = gyro_pitch_cal; // Chỉ bù sau khi hiệu chỉnh lowByte = Wire.read (); // Đầu tiên nhận được byte là phần thấp của dữ liệu góc highByte = Wire.read (); // Thứ hai nhận được byte là phần cao của dữ liệu góc gyro_yaw = ((highByte << 8) | lowByte); // Multiply highByte 256 và quảng cáo lowByte gyro_yaw * = -1; // Invert trục if (cal_int == 2000) gyro_yaw - = gyro_yaw_cal; // Chỉ bù sau khi hiệu chuẩn } trống print_output () { Serial.print ( "Pitch:"); if (gyro_pitch> = 0) Serial.print ( "+"); Serial.print (gyro_pitch / 57.14286,0); // Chuyển đến độ mỗi giây nếu (gyro_pitch / 57,14286-2> 0) Serial.print ( "Nou"); else if (gyro_pitch /













































































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: