Найти тему
𝔸𝕣𝕕𝕦𝕚𝕟𝕪𝕔𝕙

Код для машинки на Bluetooth

Подключение компонентов:

Входы драйвера моторов подключаются к пинам 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.

Спасибо, что дочитали = )

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц