Связь между двумя терминалами Arduino с использованием Xbee
У меня есть 2 платы Arduino, на каждой из которых установлены Xbee Shield и модуль Xbee S1. Одна Arduino устанавливается на шасси автомобиля, а другая подключается к ПК. Наша цель — отправить сигнал с Arduino, подключенного к ПК, и мотор будет управляться Arduino, подключенной к шасси автомобиля. Вот код Arduino, подключенного к ПК:
char msg= "";
void setup(){
Serial.begin(9600);}
void loop(){
msg=Serial.read();
serial.println(msg);
}
Вот код Arduino на шасси автомобиля:
char msg = ' ';
int motorA1 = 2;
int motorA2 = 3;
int motorB1 = 4;
int motorB2 =5;
void setup() {
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
Serial.begin(9600);
}
void loop() {
while(Serial.available()>0){
msg=Serial.read();
switch(msg){
case 'f':Serial.println("Forward");break;
case 'b':Serial.println("Backward");break;
case 'r':Serial.println("Right");break;
case 'l':Serial.println("Left");break;
case 's':Serial.println("Stop");break;
}
if(msg=='f'){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1,HIGH);
digitalWrite(motorB2,LOW);
Serial.println("Running Forward");
}
if(msg=='b'){
digitalWrite(motorA1,LOW);
digitalWrite(motorA2,HIGH);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,HIGH);
}
if(msg=='s'){
digitalWrite(motorA1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,LOW);
}
if(msg=='r'){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,LOW);
}
if(msg=='l'){
digitalWrite(motorA1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,HIGH);
digitalWrite(motorB2,LOW);
}
}
}
Теперь наша следующая цель — отправить обратную связь от автомобиля на терминал Arduino ПК, например, если мы вводим «f» в качестве ввода и получаем ответ «Running Forward» на следующей строке. Какую строку кода мы должны включить для этого?
@Ritam Das, 👍-1
Обсуждение1 ответ
//ваш код выглядит почти нормально. То, что я чувствую неправильно, это то, что arduino находится в конце ПК. Он должен одновременно общаться с ПК и вторым Arduino. Поэтому используйте библиотеку arduino mega или «#include», чтобы использовать дополнительный последовательный порт на этом конце, если вы используете arduin uno. Ваш код будет таким..
char msg= "";
void setup(){
Serial.begin(9600);
Serial1.begin(9600)//<----ошибка
}
void loop(){
msg=Serial.read();
serial1.println(msg);//<- - -ошибка
}
Подскажите, пожалуйста, как добавить дополнительный серийный номер на Arduino на ПК с помощью программной библиотеки серийных номеров, так как у меня UNO. пожалуйста, дайте мне окончательный код, @Ritam Das
- Вопрос о различных способах подключения платы драйвера двигателя L298N к Arduino и двигателям и их питания.
- Как заставить сервопривод вращаться на угол больше 180°
- Почему Adafruit motor shield не крутит моторы?
- Как управлять 4 двигателями постоянного тока с помощью Arduino?
- Привод двигателя работает только в одну сторону
- Как подключить двойной редуктор Tamiya к Arduino Uno?
- Пауза между переключением направления двигателя
- Мой моторный щит сломан?
Разве ваш код не делает это уже в операторе switch?, @mico
Вам нужно два последовательных соединения на ПК Arduino. Тот, который подключается через xbee, и тот, который подключается к монитору ПК/USB. Вам нужно описать, какое оборудование у вас есть, потому что это может быть сложно, если вы используете экран с фиксированным назначением последовательных контактов., @Visual Micro