Управление шасси по 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(); } }