//********************Arduino Code for the RC Car********************* dịch - //********************Arduino Code for the RC Car********************* Việt làm thế nào để nói

//********************Arduino Code

//********************Arduino Code for the RC Car********************************
#include //This library is needed for I2C communication (motor shield uses this)
#include //Library for the adafruit motor shield
#include "utility/Adafruit_MS_PWMServoDriver.h" //needed for motor shield, file is found in the library folder of Adafruit_MotorShield.h
#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/

// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// create an object for each motor and assign it to a port on the shield
Adafruit_DCMotor *M1 = AFMS.getMotor(1);
Adafruit_DCMotor *M2 = AFMS.getMotor(2);
Adafruit_DCMotor *M3 = AFMS.getMotor(3);
Adafruit_DCMotor *M4 = AFMS.getMotor(4);

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
//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
RF24 wirelessSPI(pinCE, pinCSN); // Declare object from nRF24 library (Create your wireless SPI)
const uint64_t pAddress = 0xB00B1E5000LL; //Create a pipe addresses for the 2 nodes to communicate over, my address spells boobies :-)
int sCount = 0; //variable to track timer to stop motor, if communication is lost this will shut off motor

void setup() {
AFMS.begin(); //Start motor shield object, create with the default frequency 1.6KHz
wirelessSPI.begin(); //Start the nRF24 module
wirelessSPI.setAutoAck(1); // Ensure autoACK is enabled, this means rec send acknowledge packet to tell xmit that it got the packet with no problems
wirelessSPI.enableAckPayload(); // Allow optional payload or message on ack packet, even though we are not using this
wirelessSPI.setRetries(5,10); // Defines packet retry behavior: first arg is delay between retries at 250us x 5 and max no. of retries
wirelessSPI.openReadingPipe(1,pAddress); //open pipe o for recieving meassages with pipe address
wirelessSPI.startListening(); // Start listening for messages, because we are the reciever
motorStop(); //ensure motor is at stop to start
}

void loop() {
if(wirelessSPI.available()){ //check to see if a data packet is available from transmitter
wirelessSPI.read( bArray, 4 ); //read 4 bytes of data and store it in array
if(verifyPacket) { //verify it is a valid packet to control car
setMotorSpeed(bArray[1], bArray[2]); //get the forward / backward and right / left speeds
sCount = 0; //reset count
}
else {
//do something here if a bad packet was recieved
}
}

delay(1); //short delay before looping again

sCount++; //increment the loop count
if(sCount > 60) { motorStop(); } //if we do not get a packet from the controller
}

//This function makes sure a packet is valid by checking it has the correct start and end byte
//it also checks to see if the forward / backward and right / left speeds are valid
bool verifyPacket() {
if(bArray[0] == 255 & bArray[3] == 254 & bArray[1] < 251 & bArray[2] < 251) return true;
else return false;
}

//This function is used to set the direction and speed based on the two bytes from the controller
//125 means stop, above 125 means right or forward, below 125 means left or backwards
void setMotorSpeed(int upDown, int leftRight) {
int lR = 0; //left and right direction variable, zero is stop
int bF = 0; //forward and backward direction variable, zero is stop

if(leftRight == 125) { //if true no left or right turn (stop)
lR = 0;
}
else if(leftRight > 125) { //if this is true right turn
lR = 1;
leftRight = leftRight - 125; //scale variable from 0 to 125
}
else { //else this is a left
lR = 2;
}

if(upDown == 125) { //if true no forward or back (stop)
bF = 0;
}
else if(upDown > 125) { //if this is true go forward
bF = 1;
upDown = upDown - 125; //scale variable from 0 to 125
}
else { //this is go backwards
bF = 2;
}

//We have direction now set speed
//scale turn and back / forward
if(lR == 0 && bF == 0) { //stop all motors if no forward / backward and right / left direction
motorStop();
}
else if (bF==1) { //Go forward
if(lR == 0) { //go straight forward
goForward(scaleSpeed(upDown)); //Send forward
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Arduino mã cho các RC xe ***#include Thư viện này là cần thiết để giao tiếp I2C (motor shield sử dụng này)#include Thư viện cho lá chắn motor adafruit#include "utility/Adafruit_MS_PWMServoDriver.h" //needed cho motor shield, tập tin được tìm thấy trong thư mục thư viện của Adafruit_MotorShield.h#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/Tạo đối tượng vận động lá chắn với mặc định I2C địa chỉAdafruit_MotorShield AFMS = Adafruit_MotorShield(); tạo một đối tượng cho mỗi động cơ và gán nó vào một cổng trên lá chắn Adafruit_DCMotor * M1 = AFMS.getMotor(1);Adafruit_DCMotor * M2 = AFMS.getMotor(2);Adafruit_DCMotor * M3 = AFMS.getMotor(3);Adafruit_DCMotor * M4 = AFMS.getMotor(4);const 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 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ướngRF24 wirelessSPI (pinCE, pinCSN); Khai báo các đối tượng từ thư viện nRF24 (tạo SPI không dây của bạn) const uint64_t pAddress = 0xB00B1E5000LL; Tạo ra một đường ống địa chỉ cho các nút 2 để giao tiếp trên, địa chỉ của tôi spells boobies :-)int sCount = 0; Tây-Tây Nam và để theo dõi các bộ đếm thời gian để dừng động cơ, nếu thông tin bị mất này sẽ tắt động cơvoid setup() {} AFMS.begin(); Bắt đầu vận động lá chắn đối tượng, tạo ra với tần số mặc định 1.6KHz wirelessSPI.begin(); Bắt đầu các mô-đun nRF24 wirelessSPI.setAutoAck(1); Đảm bảo autoACK được kích hoạt, điều này có nghĩa là thừa nhận rec gửi gói tin nói với xmit rằng nó đã gói không có vấn đề wirelessSPI.enableAckPayload(); Cho phép tùy chọn tải trọng hoặc thư về gói dữ liệu ack, mặc dù chúng tôi không sử dụng điều này wirelessSPI.setRetries(5,10); Xác định gói thử lại hành vi: arg đầu tiên là sự chậm trễ giữa retries tại 250us x 5 và tối đa không. của retries wirelessSPI.openReadingPipe(1,pAddress); mở ống o cho nhận được meassages bằng ống địa chỉ wirelessSPI.startListening(); Bắt đầu nghe cho tin nhắn, bởi vì chúng tôi là reciever motorStop(); đảm bảo cơ là lúc dừng lại để bắt đầu}void loop() {} if(wirelessSPI.Available()) {//check để xem nếu một gói dữ liệu có sẵn từ máy phát wirelessSPI.read (bArray, 4); đọc 4 byte dữ liệu và lưu trữ nó trong mảng if(verifyPacket) {//verify nó là một gói dữ liệu hợp lệ để kiểm soát xe hơi setMotorSpeed (bArray [1], bArray[2]); có được tốc độ chuyển tiếp / lạc hậu và bên phải / trái sCount = 0; thiết lập lại tính } khác {} làm một cái gì đó ở đây nếu nhận được một gói tin xấu } } Delay(1); sự chậm trễ ngắn trước việc lặp lại sCount ++; tăng tính vòng lặp if(sCount > 60) {motorStop();} //if chúng tôi không nhận được một gói dữ liệu từ bộ điều khiển}Chức năng này đảm bảo một gói là hợp lệ bằng cách kiểm tra này có chính xác bắt đầu và kết thúc bytenó cũng kiểm tra xem tốc độ chuyển tiếp / lạc hậu và bên phải / trái có hợp lệbool verifyPacket() {} Nếu (bArray [0] == 255 & bArray [3] == 254 & bArray [1] < 251 & bArray [2] < 251) return true; khác trả về false;}Chức năng này được sử dụng để thiết lập hướng và tốc độ dựa trên hai byte từ bộ điều khiển125 có nghĩa là dừng lại, ở trên có nghĩa là 125 ngay hoặc về phía trước, bên dưới bên trái có nghĩa là 125 hoặc ngược{} void setMotorSpeed (int upDown, trái/phải int) int lR = 0; trái và bên phải hướng biến, zero là dừng lại int bF = 0; hướng về phía trước và lạc hậu biến, zero là dừng lại if(leftRight == 125) {//if thật sự không có rẽ trái hoặc phải (ngừng) lR = 0; } Nếu khác (trái/phải > 125) {//if điều này là thực sự rẽ phải lR = 1; trái/phải = trái/phải - 125; thay đổi quy mô từ 0 đến 125 } khác {//else đây là một trái lR = 2; } if(upDown == 125) {//if đúng không chuyển tiếp hoặc quay trở lại (stop) bF = 0; } khác nếu (upDown > 125) {//if điều này là đúng đi tiếp bF = 1; upDown = upDown - 125; thay đổi quy mô từ 0 đến 125 } khác {//this là đi ngược trở lại bF = 2; } Chúng tôi đã hướng bây giờ thiết lập tốc độ quy mô biến và trở lại / chuyển tiếp Nếu (lR == 0 & & bF == 0) {//stop tất cả động cơ nếu không có hướng chuyển tiếp / lạc hậu và bên phải / trái motorStop(); } Nếu khác (bF == 1) {//Go tiếp if(LR == 0) {//go thẳng về phía trước goForward(scaleSpeed(upDown)); Gửi chuyển tiếp
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
// ******************** Arduino Mã cho xe RC ********************** **********
#include// Thư viện này là cần thiết để giao tiếp I2C (lá chắn động cơ sử dụng này)
#include// Thư viện cho động cơ adafruit khiên
#include "tiện ích / Adafruit_MS_PWMServoDriver.h" // cần thiết cho lá chắn động cơ, tập tin được tìm thấy trong thư mục thư viện của Adafruit_MotorShield.h
#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/ // Tạo đối tượng lá chắn động cơ với các địa chỉ I2C mặc định Adafruit_MotorShield AFMS = Adafruit_MotorShield (); // tạo một đối tượng cho mỗi động cơ và gán nó vào một cổng trên lá chắn Adafruit_DCMotor * M1 = AFMS.getMotor (1); Adafruit_DCMotor * M2 = AFMS.getMotor (2); Adafruit_DCMotor * M3 = AFMS.getMotor (3); Adafruit_DCMotor * M4 = AFMS.getMotor (4); 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 nhắn // 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à hướng gói RF24 wirelessSPI (pinCE, pinCSN); // Khai báo đối tượng từ thư viện nRF24 (Tạo SPI không dây của bạn) const uint64_t pAddress = 0xB00B1E5000LL; // Tạo một địa chỉ đường ống cho 2 nút để giao tiếp trên, địa chỉ của tôi rõ vụng :-) int sCount = 0; // biến để theo dõi đếm thời gian để dừng động cơ, nếu giao tiếp bị mất này sẽ tắt động cơ khoảng trống setup () { AFMS.begin (); // Bắt đối tượng lá chắn động cơ, tạo ra với tần số mặc định 1.6KHz wirelessSPI.begin (); // Bắt đầu module nRF24 wirelessSPI.setAutoAck (1); // Bảo đảm autoACK được kích hoạt, điều này có nghĩa là gửi rec thừa nhận gói tin để nói xmit rằng nó đã nhận được gói tin không có vấn đề wirelessSPI.enableAckPayload (); // Cho phép tải trọng tùy chọn hoặc tin nhắn trên gói ack, mặc dù chúng ta không sử dụng này wirelessSPI.setRetries (5,10); // Định nghĩa hành vi thử lại gói: arg đầu tiên là sự chậm trễ giữa các lần thử lại ở 250us x 5 và tối đa không. các thử lại wirelessSPI.openReadingPipe (1, pAddress); // mở ống o cho recieving meassages với địa chỉ ống wirelessSPI.startListening (); // Bắt đầu nghe thông điệp, bởi vì chúng tôi là người nhận motorStop (); // đảm bảo động cơ khi dừng để bắt đầu } trống loop () { if (wirelessSPI.available ()) {// kiểm tra xem nếu một gói dữ liệu có sẵn từ máy phát wirelessSPI.read (bArray, 4); // đọc 4 byte dữ liệu và lưu trữ nó trong mảng nếu (verifyPacket) {// xác minh nó là một gói tin hợp lệ để điều khiển xe setMotorSpeed ​​(bArray [1], bArray [2]); // có được về phía trước / sau và bên phải / trái tốc độ sCount = 0; // reset count } else { // làm một cái gì đó ở đây, nếu một gói tin xấu đã được nhận được } } chậm trễ (1); // chậm trễ ngắn trước khi đi vòng lại sCount ++; // tăng số lần lặp if (sCount> 60) {motorStop (); } // Nếu chúng tôi không nhận được một gói tin từ bộ điều khiển } // hàm này đảm bảo một gói tin là hợp lệ bằng cách kiểm tra nó có bắt đầu và kết thúc đúng byte // nó cũng kiểm tra xem nếu phía trước / sau và bên phải / trái tốc độ có giá trị bool verifyPacket () { if (bArray [0] == 255 & bArray [3] == 254 & bArray [1] <251 & bArray [2] <251) return true; khác return false; } // chức năng này được sử dụng để thiết lập các hướng và tốc độ dựa trên hai byte từ bộ điều khiển // 125 phương tiện dừng lại, trên 125 nghĩa là đúng hay chuyển tiếp, dưới 125 phương tiện trái hoặc ngược trống setMotorSpeed ​​(int upDown, int leftRight) { int lR = 0; // trái và phải biến hướng, không là dừng int BF = 0; // về phía trước và biến hướng lạc hậu, không có dừng lại nếu (leftRight == 125) {// nếu đúng sự thật không rẽ trái hoặc phải (stop) lR = 0; } else if (leftRight> 125) {// nếu điều này là đúng sự thật đúng biến lR = 1; leftRight = leftRight - 125; // quy mô biến 0-125 } else {// khác này là một trái lR = 2; } if (upDown == 125) {// nếu sự thật không có phía trước hoặc quay trở lại (stop) BF = 0; } else if ( upDown> 125) {// nếu điều này là đúng đi về phía trước BF = 1; upDown = upDown - 125; // quy mô biến 0-125 } else {// này là đi ngược BF = 2; } // Chúng tôi đã hướng bây giờ thiết lập tốc độ // quy mô lần lượt, và trở lại / về phía trước nếu (lR == 0 && BF == 0) {// dừng tất cả các động cơ nếu không phía trước / sau và bên phải / trái hướng motorStop (); } else if (BF == 1) {// Tới phía trước nếu (lR == 0) {// đi thẳng về phía trước goForward (scaleSpeed (lên xuống)); // Gửi về phía trước


























































































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