Подключение компонентов:
Входы драйвера моторов подключаются к пинам 6, 9, 10 и 11 Ардуино. Так же на драйвер идёт питание в 0 В, 12 (или 9 в случае с DRV8833) Вольт, и 5 Вольт (На 8833 это контакт EEP).
Bluetooth модуль HC 05/06/07 подключается по питанию: VCC в 5 Вольт, GND соответственно в GND. По каналам Tx и Rx он подключается к пинам 8 и 7 соответственно.
Настройка направлений и скоростей вращения моторов
В Ардуино надо залить следующий код. Внутри цикла void TEST1() на место нулей в первый analogWrite поставить SPEED. Если при этом будет вращаться ЛЕВЫЙ мотор ВПЕРЁД, тогда с LF всё в порядке. Дефайны LF, LB, RF и RB значат:
LF – left forward (левый вперёд)
LB – left backward (левый назад)
RF – right forward (правый вперёд)
RB – right backward (правый назад)
В analogWrite'ы можно ставить только один SPEED (на самом деле нет, но не рекомендую их пихать везде, может сгореть ардуинка, драйвер и мотор).
Если место, где стоит SPEED в analogWrite не совпадает с направлением вращения и номером мотора, нужно менять значения макросов (дефайнов) LF, LB, RF и RB, т.е. менять местами числа 6, 9, 10 и 11.
Когда всё будет крутиться в нужные стороны (например, когда SPEED стоит в analogWrite(LF) и крутится левый мотор вперёд, и так же все остальные 3 положения), можно приступить к настройке скорости.
Для этого раскомментируйте строку SPEED_TEST(); (уберите два слеша //) и закомментируйте строку TEST1 (поставьте перед ней два слеша //). После этого залейте в Ардуину код и запустите машинку по прямой. Если она будет ехать ровно и прямо, ничего настраивать не нужно. Если же она будет чуть-чуть сворачивать влево, надо понизить скорость правого мотора, т.е. уменьшить значение макроса SPEEDR до необходимого уровня (например, снизить с 255 до 250). Если машинка будет сворачивать вправо, аналогично, надо уменьшить значение макроса SPEEDL.
Сам тестовый код:
#define LF 6 //левый мотор вперёд
#define LB 9 //левый мотор назад
#define RF 10 //правый мотор вперёд
#define RB 11 //правый мотор назад
#define SPEED 255 //скорость для настройки
#define SPEEDL 255 //скорость левого мотора
#define SPEEDR 255 //скорость правого мотора
void setup(){
pinMode(LF, OUTPUT);
pinMode(LB, OUTPUT);
pinMode(RF, OUTPUT);
pinMode(RB, OUTPUT);
//Serial.begin(9600);
}
void loop(){
TEST1();
//SPEED_TEST();
}
void SPEED_TEST(){
analogWrite(LF, SPEEDL);
analogWrite(LB, 0);
analogWrite(RF, SPEEDR);
analogWrite(RB, 0);
}
void TEST1(){
analogWrite(LF, 0);
analogWrite(LB, 0);
analogWrite(RF, 0);
analogWrite(RB, 0);
}
//ДЛЯ РАЗРАБОТЧИКОВ
#include <SoftwareSerial.h>
SoftwareSerial mySerial (7, 8); //Rx, Tx
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
}
void loop(){
if(mySerial.available()){
int s = mySerial.read();
Serial.write(s)
}
}
ОКОНЧАТЕЛЬНЫЙ КОД
После настройки перенесите все значения макросов в код ниже, и загрузите его.
#include <SoftwareSerial.h>
SoftwareSerial mySerial (7, 8); //Rx, Tx
#define LF 6 //левый мотор вперёд
#define LB 9 //левый мотор назад
#define RF 10 //правый мотор вперёд
#define RB 11 //правый мотор назад
#define SPEEDL 255 //скорость левого мотора
#define SPEEDR 255 //скорость правого мотора
void setup(){
pinMode(LF, OUTPUT);
pinMode(LB, OUTPUT);
pinMode(RF, OUTPUT);
pinMode(RB, OUTPUT);
Serial.begin(9600);
mySerial.begin(9600);
}
void loop(){
if(mySerial.available()){
int s = mySerial.read();
//Serial.write(s);
switch(s){
case 'F':
analogWrite(LF, SPEEDL);
analogWrite(LB, 0);
analogWrite(RF, SPEEDR);
analogWrite(RB, 0);
break;
case 'B':
analogWrite(LF, 0);
analogWrite(LB, SPEEDL);
analogWrite(RF, 0);
analogWrite(RB, SPEEDR);
break;
case 'L':
analogWrite(LF, 0);
analogWrite(LB, SPEEDL);
analogWrite(RF, SPEEDR);
analogWrite(RB, 0);
break;
case 'R':
analogWrite(LF, SPEEDL);
analogWrite(LB, 0);
analogWrite(RF, 0);
analogWrite(RB, SPEEDR);
break;
case 'G':
analogWrite(LF, 0);
analogWrite(LB, 0);
analogWrite(RF, SPEEDR);
analogWrite(RB, 0);
break;
case 'I':
analogWrite(LF, SPEEDL);
analogWrite(LB, 0);
analogWrite(RF, 0);
analogWrite(RB, 0);
break;
case 'H':
analogWrite(LF, 0);
analogWrite(LB, SPEEDL);
analogWrite(RF, 0);
analogWrite(RB, 0);
break;
case 'J':
analogWrite(LF, 0);
analogWrite(LB, 0);
analogWrite(RF, 0);
analogWrite(RB, SPEED);
break;
default:
analogWrite(LF, 0);
analogWrite(LB, 0);
analogWrite(RF, 0);
analogWrite(RB, 0);
break;
}
//delay(50); //не нужен в данном случае
}
}
КАК УПРАВЛЯТЬ С ТЕЛЕФОНА
Для этого нужно скачать приложение RC CAR. После включения машинки, нужно включить блютуз на телефоне и зайти в настройки Bluetooth. Там появится устройство с именем HC 06 (или 05 или 07). Нужно ввести пароль 1234 (да, с паролем китайцы не парились). Если напишет, что пароль введён неверно, нужно ввести заново пароль 0000.
После этого нужно зайти в приложение RC CAR, разрешить доступ к блютуз и нажать на шестерёнку. В разделе "Connect to car" выбрать HC ноль-какой-то, и когда в верхнем левом углу загорится зелёный кружок, можно управлять! Если не все функции будут совпадать с реальными, нужно поменять SPEEDL/R внутри соответствующих разделов switch case.