Управление шасси по Bluetooth
Железо: акриловое шасси с али (можно вырезать самодельное), ардуино уно, драйвер двигателя L293D, 4 DC мотора колеса, блютуз модуль HC-05/06
Софт: программа с плеймаркета Bluetooth RC
Скетч для ардуино уно под видео
Для отладки мк без драйвера и двигателей к выводам LED1-LED4 цепляем светодиоды с резисторами по 220 Ом.
Питание раздельное для мк и драйвера двигателя по два аккум. 18650 li-ion
// Управление по Bluetooth
#include <SoftwareSerial.h>
// Bluetooth модуль HC-05/06 (пин код 1234) (Arduino pin 2,3)
#define rxPin 2 // Arduino in от tx HC-05 (прием данных от Bluetooth)
#define txPin 3 // Arduino out через делитель на rx HC-05 !!! (передача данных на Bluetooth) в нашем случае этот вывод не задействован
// Arduino - HC05/06
// +3.3 - Vcc
// GND - GND
// 2pinRX - TX
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
char cmnd;
int LED1 = 13; // A motor 1
int LED2 = 12; // B motor 1
int LED3 = 11; // C motor 2
int LED4 = 10; // D motor 2
int speedpinA=5; //enable motor 1
int speedpinB=6; //enable motor 2
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
delay(5000);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(speedpinA,OUTPUT);
pinMode(speedpinB,OUTPUT);
}
void reset_LED()
{
analogWrite(speedpinA,0);
analogWrite(speedpinB,0);
digitalWrite(LED1, LOW); // Мотор 1 стоп
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW); // Мотор 2 стоп
digitalWrite(LED4, LOW);
}
// Вперед
void forward() {
analogWrite(speedpinA,240);
analogWrite(speedpinB,240);
digitalWrite(LED4,LOW); // Мотор 1 вперед
digitalWrite(LED3,HIGH);
digitalWrite(LED2,LOW); // Мотор 2 вперед
digitalWrite(LED1,HIGH);
delay(10);
}
// Назад
void backward() {
analogWrite(speedpinA,240);
analogWrite(speedpinB,240);
digitalWrite(LED4,HIGH); // Мотор 1 назад
digitalWrite(LED3,LOW);
digitalWrite(LED2,HIGH); // Мотор 2 назад
digitalWrite(LED1,LOW);
delay(10);
}
// Влево
void left() {
analogWrite(speedpinA,240);
analogWrite(speedpinB,240);
digitalWrite(LED3,HIGH); // Мотор 1 вперед
digitalWrite(LED4,LOW);
digitalWrite(LED1,LOW); // Мотор 2 назад
digitalWrite(LED2,HIGH);
delay(10);
}
// Вправо
void right() {
analogWrite(speedpinA,240);
analogWrite(speedpinB,240);
digitalWrite(LED3,LOW); // Мотор 1 назад
digitalWrite(LED4,HIGH);
digitalWrite(LED1,HIGH); // Мотор 2 вперед
digitalWrite(LED2,LOW);
delay(10);
}
void loop()
{
if (mySerial.available())
{
cmnd = (char) mySerial.read();
Serial.print(cmnd); // Смотрим что пришло в порт в мониторе
// При команде "F" включаем 1 светодиод
if (cmnd == 'F')
{
forward();
}
// При команде "B" включаем 2 светодиод
if ( cmnd == 'B')
{
backward();
}
// Команда "L" включаем 3 светодиод
if ( cmnd == 'L')
{
left();
}
// При команде "R" включаем 4 светодиод
if (cmnd == 'R')
{
right();
}
// При команде "S" выключаем все
if (cmnd == 'S')
{
reset_LED();
}
}
if (Serial.available())
{
while(Serial.available())
{
mySerial.write(Serial.read());
}
mySerial.println();
}
}