//This code is for a remote control car using the nRF24L01 for wireles dịch - //This code is for a remote control car using the nRF24L01 for wireles Việt làm thế nào để nói

//This code is for a remote control

//This code is for a remote control car using the nRF24L01 for wireless communication
//and accel to dictate the cars direction and speed based of hand postion.
//The tutorial on this project can be found on the ForceTronics Youtube channel
//This code is free and open for anybody to use or modify at your own risk

#include //Call SPI library so you can communicate with the nRF24L01+
#include //nRF2401 libarary found at https://github.com/tmrh20/RF24/
#include //nRF2401 libarary found at https://github.com/tmrh20/RF24/
#include "I2Cdev.h" //the MPU6050 Accel uses I2C communication
#include "MPU6050.h"

// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
#include "Wire.h"
#endif

const int pinCE = 9; //This pin is used to set the nRF24 to standby (0) or active mode (1)
const int pinCSN = 10; //This pin is used to tell the nRF24 whether the SPI communication is a command or message to send out
MPU6050 accelgyro; //declare the object to access and cotrol the accel (we don't use the gyro)
RF24 wirelessSPI(pinCE, pinCSN); // Create your nRF24 object or wireless SPI connection
const uint64_t pAddress = 0xB00B1E5000LL; // Radio pipe addresses for the 2 nodes to communicate. The address spells boobies :-)
//The controller sends a "packet" to control the speed and direction of the car. The first and last byte just signal the start and end of the packet
//The second and third bytes represent the speed and direction of the car. The second byte is for forward and backwards
//The third byte is for right and left directions
byte bArray[] = {255, 125, 125, 254}; //This array holds the speed and direction packet

void setup() {
// join I2C bus (I2Cdev library doesn't do this automatically)
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
Wire.begin();
#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
Fastwire::setup(400, true);
#endif
accelgyro.initialize(); //initialize the accel object
wirelessSPI.begin(); //Start the nRF24 module
wirelessSPI.setAutoAck(1); // Ensure autoACK is enabled so rec sends ack packet to let you know it got the transmit packet payload
wirelessSPI.enableAckPayload(); // Allow optional ack payloads (we don't use this)
wirelessSPI.setRetries(5,15); // Sets up retries and timing for packets that were not ack'd, current settings: smallest time between retries, max no. of retries
wirelessSPI.openWritingPipe(pAddress);// pipe address that we will communicate over, must be the same for each nRF24 module (this is a transmitter)
wirelessSPI.stopListening(); //we are the transmitter so don't need to listen
}

void loop() {
int x, y, z; //create variables to hold accel values (we don't use z direction)
accelgyro.getAcceleration(&x, &y, &z); //get accel values, note variables are sent by reference
buildArray(buildXValue(x), buildYValue(y)); //build speed and direction array or packet, this is what we send to the car to control
if (!wirelessSPI.write( bArray, 4 )){ //if the send fails let the user know over serial monitor
//put code here to do something if sending the packet fails
}

delay(5); //delay a before sending the next packet
}

//This function is used to build the forward / backwards direction and speed value
//The X direction of the accel is used for the forward / backwards direction and speed
//Note that the accel value has to be scaled to fit in a byte of data
byte buildXValue(int xV) {
if(xV = -1000) { //This creates a cushion for the stop value so the car is not constantly moving
return 125; //this is the stop value
}
else if (xV > 1000) { //if positive value then car is being directed forward
xV = xV - 1000;
if(xV > 15000) { xV = 15000; } //ceiling value for forward speed
return (scaleSpeed(xV,15000) + 125); //scale speed to send, add 125 since this is forward
}
else { //Negative x value is to tell the car to go backwards
xV = xV * -1; //conver negative value to positive
xV = xV - 1000;
if(xV > 15000) { xV = 15000; } //set ceiling on accel value
return scaleSpeed(xV,15000); //scale to 1 to 125
}
}

//This function is used to build the right and left direction and speed value
//The Y direction of the accel is used for the right and left direction and speed
//Note that the accel value has to be scaled to fit in a byte of data
byte buildYValue(int yV) {
if(yV = -1000) { //This creates a cushion for the stop value so the car is not constantly moving
return 125; //this is the stop value
}
else if (yV > 1000) { //if positive value then car is being directed right
yV = yV - 1000;
if(yV > 11000) { yV = 11000; } //ceiling value for right speed
return scaleSpeed(yV,11000);
}
else { //Negative x value is to tell the car to go backwards
yV = yV * -1;
yV = yV - 1000;
if(yV > 11000) { yV
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Mã này là dành cho một chiếc xe điều khiển từ xa bằng cách sử dụng nRF24L01 cho truyền thông không dây và accel để dictate các xe ô tô hướng và tốc độ dựa trên vị trí bàn tay. Hướng dẫn về dự án này có thể được tìm thấy trên các kênh ForceTronics YoutubeMã này là miễn phí và mở cửa cho bất cứ ai sử dụng hoặc sửa đổi các nguy cơ của riêng bạn#include Gọi thư viện SPI, vì vậy bạn có thể giao tiếp với nRF24L01 +#include nRF2401 libarary tìm thấy tại https://github.com/tmrh20/RF24/#include nRF2401 libarary tìm thấy tại https://github.com/tmrh20/RF24/#include "I2Cdev.h" //the MPU6050 Accel sử dụng giao tiếp I2C#include "MPU6050.h"Thư viện Arduino dây là bắt buộc nếu I2Cdev I2CDEV_ARDUINO_WIRE thực hiệnđược sử dụng trong I2Cdev.h#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h"#endifconst int pinCE = 9; Pin này được sử dụng để thiết lập nRF24 để chế độ chờ (0) hoặc chế độ hoạt động (1)const int pinCSN = 10; Pin này được sử dụng để nói với nRF24 liệu giao tiếp SPI là một lệnh hoặc tin nhắn gửiMPU6050 accelgyro; khai báo đối tượng để truy cập và cotrol accel (chúng tôi không sử dụng con quay hồi chuyển)RF24 wirelessSPI (pinCE, pinCSN); Tạo đối tượng nRF24 hoặc SPI kết nối không dây của bạnconst uint64_t pAddress = 0xB00B1E5000LL; Đài phát thanh địa chỉ đường ống cho các nút 2 để giao tiếp. Địa chỉ phép boobies :-)Bộ điều khiển sẽ gửi một gói tin"" để kiểm soát tốc độ và hướng của xe. Các byte đầu tiên và cuối cùng chỉ báo hiệu sự bắt đầu và kết thúc của các góiCác byte thứ hai và thứ ba đại diện cho tốc độ và hướng của xe. Các byte thứ hai là về phía trước và ngượcCác byte thứ ba là đường bên phải và tráibyte bArray [] = {255, 125, 125, 254}; Mảng này giữ gói dữ liệu tốc độ và hướngvoid setup() {} tham gia I2C xe buýt (I2Cdev thư viện không làm điều này tự động) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.Begin(); #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::Setup (400, true); #endif accelgyro.initialize(); khởi tạo đối tượng accel wirelessSPI.begin(); Bắt đầu các mô-đun nRF24 wirelessSPI.setAutoAck(1); Đảm bảo autoACK được kích hoạt để rec sẽ gửi gói dữ liệu ack để cho bạn biết nó có trọng tải gói dữ liệu truyền wirelessSPI.enableAckPayload(); Cho phép tùy chọn ack dữ liệu (chúng tôi không sử dụng) wirelessSPI.setRetries(5,15); Thiết lập retries và thời gian cho gói tin đã không ack'd, thiết đặt hiện thời: thời gian nhỏ nhất giữa retries, không tối đa. của retries wirelessSPI.openWritingPipe(pAddress); / / ống địa chỉ mà chúng tôi sẽ liên lạc qua, phải giống nhau cho mỗi mô-đun nRF24 (đây là một máy phát) wirelessSPI.stopListening(); chúng tôi đang truyền nên không cần phải lắng nghe}void loop() {} int x, y, z; tạo biến để giữ các giá trị accel (chúng tôi không sử dụng z hướng) accelgyro.getAcceleration (& x, & y, và z); nhận được giá trị accel, lưu ý các biến được gửi bởi các tài liệu tham khảo buildArray(buildXValue(x), buildYValue(y)); xây dựng tốc độ và hướng mảng hoặc gói, điều này là những gì chúng tôi gửi đến xe để điều khiển Nếu (! wirelessSPI.write (bArray, 4)) {//if gửi không thành công cho người sử dụng biết qua giám sát nối tiếp Đặt mã ở đây để làm một cái gì đó nếu gửi gói tin lỗi } Delay(5); sự chậm trễ một trước gửi gói tin tiếp theo}Chức năng này được sử dụng để xây dựng chuyển tiếp / ngược hướng và tốc độ giá trịTheo hướng X accel được sử dụng cho việc chuyển tiếp / ngược hướng và tốc độLưu ý rằng giá trị accel đã được thu nhỏ lại để phù hợp trong một byte dữ liệubyte buildXValue (int xV) {} Nếu (xV < = 1000 & xV > = -1000) {//This tạo ra một đệm cho các giá trị dừng lại vì vậy chiếc xe không phải liên tục di chuyển trở về 125; đây là giá trị stop } Nếu khác (xV > 1000) {//if tích cực giá trị thì chiếc xe là được hướng về phía trước xV = xV - 1000; if(xV > 15000) {xV = 15000;} //ceiling đáng giá tốc độ trở về (scaleSpeed(xV,15000) + 125); quy mô tốc độ gửi, thêm 125 kể từ này là chuyển tiếp } khác {//Negative x giá trị là để cho xe đi ngược trở lại xV = xV * -1; conver phủ định giá trị để tích cực xV = xV - 1000; if(xV > 15000) {xV = 15000;} //set trần trên giá trị accel trở lại scaleSpeed(xV,15000); quy mô 1-125 }}Chức năng này được sử dụng để xây dựng chỉ đạo trái và bên phải và các giá trị tốc độHướng Y accel được sử dụng để chỉ đạo trái và bên phải và tốc độLưu ý rằng giá trị accel đã được thu nhỏ lại để phù hợp trong một byte dữ liệubyte buildYValue (int yV) {} Nếu (yV < = 1000 & yV > = -1000) {//This tạo ra một đệm cho các giá trị dừng lại vì vậy chiếc xe không phải liên tục di chuyển trở về 125; đây là giá trị stop } Nếu khác (yV > 1000) {//if tích cực giá trị thì chiếc xe được đạo diễn ngay yV = yV - 1000; if(yV > 11000) {yV = 11000;} //ceiling giá trị cho đúng tốc độ trở lại scaleSpeed(yV,11000); } khác {//Negative x giá trị là để cho xe đi ngược trở lại yV = yV * -1; yV = yV - 1000; if(yV > 11000) {yV
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
// Mã này là dành cho một chiếc xe điều khiển từ xa bằng cách sử dụng nRF24L01 cho truyền thông không dây
// và tăng tốc phần cứng để dictate hướng xe hơi và tốc độ dựa trên postion tay.
// Các hướng dẫn về dự án này có thể được tìm thấy trên các kênh Youtube ForceTronics
// này đang mở miễn phí cho bất cứ ai sử dụng hoặc sửa đổi có nguy cơ của riêng bạn #include

// Gọi thư viện SPI để bạn có thể giao tiếp với nRF24L01 +
#include// nRF2401 libarary tìm thấy tại https://github.com/tmrh20/RF24/
#include// nRF2401 libarary tìm thấy tại https://github.com/tmrh20/RF24/
#include "I2Cdev.h" // các MPU6050 Accel sử dụng I2C giao
#include "MPU6050.h" thư viện // Arduino dây là cần thiết nếu I2Cdev I2CDEV_ARDUINO_WIRE thực hiện // được sử dụng trong I2Cdev.h # nếu I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif const int pinCE = 9; // Pin này được sử dụng để thiết lập các nRF24 về chế độ chờ (0) hoặc chế độ hoạt động (1) const int pinCSN = 10; // Pin này được sử dụng để báo cho nRF24 liệu truyền thông SPI là một lệnh hoặc tin nhắn để gửi ra MPU6050 accelgyro; // khai báo các đối tượng để truy cập và cotrol sự tăng tốc phần cứng (chúng tôi không sử dụng con quay hồi chuyển) RF24 wirelessSPI (pinCE, pinCSN); // Tạo đối tượng nRF24 của bạn hoặc không dây kết nối SPI const uint64_t pAddress = 0xB00B1E5000LL; // Địa chỉ ống Đài phát thanh cho 2 nút để giao tiếp. Các địa chỉ rõ vụng :-) // Bộ điều khiển sẽ gửi một "gói" để kiểm soát tốc độ và hướng của xe. Các byte đầu tiên và cuối cùng chỉ là khởi đầu và kết thúc của gói // Các byte thứ hai và thứ ba đại diện cho tốc độ và hướng của xe. Các byte thứ hai là cho về phía trước và ngược // byte thứ ba là cho đúng và hướng trái byte bArray [] = {255, 125, 125, 254}; // Mảng này giữ tốc độ và gói hướng trống setup () { // tham gia bus I2C (thư viện I2Cdev không làm điều này tự động) # nếu I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire: : thiết lập (400, true); #endif accelgyro.initialize (); // khởi tạo các đối tượng tăng tốc phần cứng wirelessSPI.begin (); // Bắt đầu module nRF24 wirelessSPI.setAutoAck (1); // Bảo đảm autoACK được kích hoạt để rec gửi gói tin ACK để cho bạn biết nó có trọng tải gói tin truyền wirelessSPI.enableAckPayload (); // Cho phép trọng tải ack tùy chọn (chúng tôi không sử dụng này) wirelessSPI.setRetries (5,15); // Đặt lên thử lại và thời gian cho các gói tin mà không được ack'd, thiết lập hiện thời: thời gian nhỏ nhất giữa các lần thử lại, tối đa không. các thử lại wirelessSPI.openWritingPipe (pAddress); // địa chỉ ống rằng chúng tôi sẽ giao tiếp trên, phải giống nhau cho mỗi mô-đun nRF24 (đây là một transmitter) wirelessSPI.stopListening (); // chúng tôi là máy phát do đó, không cần phải lắng nghe } trống loop () { int x, y, z; // tạo biến để giữ các giá trị tăng tốc phần cứng (chúng tôi không sử dụng hướng z) accelgyro.getAcceleration (& x, & y, & z); // lấy giá trị tăng tốc phần cứng, các biến lưu ý được gửi bằng cách tham khảo buildArray (buildXValue (x), buildYValue (y)); // xây dựng tốc độ và mảng hướng hoặc gói, đây là những gì chúng tôi gửi xe để kiểm soát if (! wirelessSPI.write (bArray, 4)) {// nếu gửi không cho người dùng biết trên màn hình nối tiếp // đặt mã ở đây để làm một cái gì đó nếu gửi các gói tin không } chậm trễ (5); // hoãn trước khi gửi gói tin kế tiếp } // Hàm này được sử dụng để xây dựng về phía trước / ngược hướng và tốc độ giá trị // Các phương X của tăng tốc phần cứng được sử dụng để chuyển tiếp / ngược hướng và tốc độ // Chú ý rằng tăng tốc phần cứng giá trị đã được thu nhỏ để phù hợp với một byte dữ liệu byte buildXValue (int xV) { if (xV <= 1000 & xV> = -1000) {// Điều này tạo ra một đệm cho giá trị dừng để chiếc xe không được liên tục di chuyển trở lại 125; // đây là giá trị dừng } else if (xV> 1000) {// nếu giá trị tích cực sau đó xe đang được hướng về phía trước xV = xV - 1000; if (xV> 15000) {xV = 15000; } // Giá trị trần cho tốc độ về phía trước trở lại (scaleSpeed ​​(xV, 15000) + 125); // tốc độ quy mô để gửi, thêm 125 vì đây là mong } else {// giá trị x âm là để cho các xe đi ngược xV = xV * -1; // conver giá trị âm sang dương xV = xV - 1000; if (xV> 15000) {xV = 15000; } // Đặt trần tăng tốc phần cứng giá trị trở lại scaleSpeed ​​(xV, 15000); // quy mô để 1-125 } } // Hàm này được sử dụng để xây dựng quyền và hướng trái và giá trị tốc độ // Hướng Y của tăng tốc phần cứng được sử dụng cho các quyền và hướng trái và tốc độ // Chú ý rằng giá trị tăng tốc phần cứng đã được thu nhỏ để phù hợp với một byte dữ liệu byte buildYValue (int YV) { if (YV <= 1000 & YV> = -1000) {// Điều này tạo ra một đệm cho giá trị dừng để chiếc xe không được liên tục di chuyển trở lại 125; // đây là giá trị dừng } else if (YV> 1000) {// nếu giá trị tích cực sau đó xe đang được dẫn ngay YV = YV - 1000; if (YV> 11000) {YV = 11000; } // Trần giá trị so với tốc độ ngay trở lại scaleSpeed ​​(YV, 11000); } else {// giá trị x âm là để cho các xe đi ngược YV = YV * -1; YV = YV - 1000; if (YV> 11000 ) {YV















































































đ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 ©2024 I Love Translation. All reserved.

E-mail: