//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 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
đ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: