Ви не увійшли.
Здравсвуйте!
Сделал машинку с управлением по Bluetooth со смартфона, с помощью приложения из App inventor. Простая машинка, таких в интернете очень много описывают - Arduino, драйвер моторов, Bluetooth модуль и моторы.
Вопрос такой: как сделать так, чтобы машинка останавливалась. если соединение с Bluetooth пропадает? Сейчас, если, например, нажать на кнопку, чтобы ехать вперёд, и если вдруг в этот момент соединение с Bluetooth упадёт, машина продолжает ехать, пока не врежется в первое препятствие.
Вот скетч. Если понадобятся дополнительные данные, то предоставляю. Объясните, пожалуйста, подробнее, как это сделать. У меня пока весьма базовые знания.
int motorRight1 = 2; // Правый мотор.
int motorRight2 = 4;
int enableRight = 3;
int motorLeft1 = 6; // Левый мотор.
int motorLeft2 = 7;
int enableLeft = 5;
int control; // Управление двигателями.
int motorSpeed; // Управление скоростью.
void setup() {
pinMode (motorRight1, OUTPUT);
pinMode (motorRight2, OUTPUT);
pinMode (enableRight, OUTPUT);
pinMode (motorLeft1, OUTPUT);
pinMode (motorLeft2, OUTPUT);
pinMode (enableLeft, OUTPUT);
Serial.begin (9600);
}
void loop()
{
if (Serial.available()) {
control = Serial.read();
/*********************** Скорость ***********************/
switch (control) {
case '1': motorSpeed = 120; break;
case '2': motorSpeed = 180; break;
case '3': motorSpeed = 250; break;
/*********************** Направление ***********************/
case 'W': rightWheelForward (); leftWheelForward (); break; // Вперёд.
case 'S': rightWheelBack (); leftWheelBack (); break; // Назад.
case 'E': rightWheelStop (); leftWheelForward (); break; // Направо вперёд.
case 'Q': leftWheelStop (); rightWheelForward (); break; // Налево вперёд.
case 'D': rightWheelStop (); leftWheelBack (); break; // Направо назад.
case 'A': leftWheelStop (); rightWheelBack (); break; // Налево назад.
case 'P': rightWheelStop (); leftWheelStop (); break; // Стоп.
}
}
}
/*********************** Функции колёс ***********************/
void rightWheelForward () { // Правое колесо вперёд.
digitalWrite (motorRight1, LOW);
digitalWrite (motorRight2, HIGH);
analogWrite(enableRight, motorSpeed);
}
void leftWheelForward () { // Левое колесо вперёд.
digitalWrite (motorLeft1, LOW);
digitalWrite (motorLeft2, HIGH);
analogWrite(enableLeft, motorSpeed);
}
void rightWheelBack () { // Правое колесо назад.
digitalWrite (motorRight1, HIGH);
digitalWrite (motorRight2, LOW);
analogWrite(enableRight, motorSpeed);
}
void leftWheelBack () { // Левое колесо назад.
digitalWrite (motorLeft1, HIGH);
digitalWrite (motorLeft2, LOW);
analogWrite(enableLeft, motorSpeed);
}
void rightWheelStop () { // Правое колесо остановить.
digitalWrite (motorRight1, LOW);
digitalWrite (motorRight2, LOW);
analogWrite(enableRight, 0);
}
void leftWheelStop () { // Левое колесо остановить.
digitalWrite (motorLeft1, LOW);
digitalWrite (motorLeft2, LOW);
analogWrite(enableLeft, 0);
}
Неактивний
на hc-05 и hc-06 (про другие не знаю) есть выход STATE.
он показывает что соединение установлено.
поиграйтесь с ним.
Беру светодиод, его плюсом соединяю в STATE, его минусом в GND. Как я понимаю, при подключенном Bluetooth светодиод должен стабильно гореть. Но он не горит. Единица на STATE Как будто не приходит.
Неактивний
Похожую проблему, но на радиоуправлении решил с помощью функции "millis",которая при пропадании сигнала больше чем на 500 миллисекунд исполняет команду "motor.write(0)" ,а при появлении сигнала с передатчика продолжает исполнять его команды.Смотри
Форум» Аппаратные вопросы» Радиоуправление на NRF24L01.
Неактивний