Машинка на arduino и Bluetooth Android | Правильные инструкции

Notice: Undefined index: HTTP_ACCEPT in /home/n/newavtjc/radiocopter.ru/public_html/wp-content/plugins/realbig-media/textEditing.php on line 823
Содержание
  1. ↑ что нам потребуется для сборки машинки?
  2. Преимущества и основные команды gsm/gps модуля
  3. ↑ будем строить машинку с ду!
  4. ↑ достойный образец игрушки
  5. ↑ как я разбираю пакет
  6. ↑ передача пакета данных
  7. ↑ приём пакета данных
  8. ↑ приложение под android для машинки
  9. ↑ программа микроконтроллера
  10. Автоматическое охлаждение и обогрев салона автомобиля
  11. Гоночная машинка на bluetooth управлении.
  12. Драйвер двигателей
  13. Интерфейс управления на планшете android.
  14. Конструкция, шасси и двигатели робота на ардуино
  15. Машинка на ардуино своими руками
  16. Настройки сигнализации в машине через телефон
  17. Освобождаем руки и глаза
  18. Питание робота
  19. Подключаем bluetooth к машинке
  20. Подключаем двигатели и плату
  21. Пример платформы робота-машины на ардуино
  22. Простая bluetooth машинка на arduino
  23. Робот на ардуино своими руками
  24. Системы призрак
  25. Схема подключения
  26. Схема сборки машинки на ардуино
  27. Схема электропитания робота автомобиля
  28. Так мобильный телефон превращается в бортовой компьютер
  29. Управляем arduino-машинкой при помощи g-сенсора со смартфона

↑ что нам потребуется для сборки машинки?

Он управляется как гусеничное транспортное средство, поскольку поворотные колеса отсутствуют. Правая и левая стороны дисков вращаются с одинаковой скоростью для движения вперед и назад. Для выполнения поворота скорость вращения с одной стороны должна быть медленнее или быстрее.

2. Bluetooth–модуль «HC-06» .

Дистанционное управление машиной осуществляется с помощью канала Bluetooth. “HC-06” – это Bluetooth-мост, последовательный интерфейс с двусторонней передачей данных. Для подключения к микроконтроллеру (целевой плате), “RxD” и “TxD” являются сигналами последовательного интерфейса TTL.

В качестве пультов дистанционного управления будут использоваться мобильные телефоны Android. Давайте напишем свою собственную программу!

3. Двухканальный контроллер двигателя TB6612FNG.

Драйвер двухканальный, на левую и правую пару колес. Драйвер имеет логические входы для изменения полярности выхода (направления вращения) и вход ШИМ, можно будет сделать управление скоростью вращения.

Смотрите про коптеры:  Покорители космоса: Звездолеты из фильмов, которые могут стать прототипами кораблей будущего

4. Плата управления MOD-IO (Olimex)

В результате близости к ящику мы выбрали эту плату. Сигналы МК “RxD” и “TxD” будут подключены к дискретным входам и выходам на “HC-06”.

Вообще говоря, продукт Olimex MOD-IO – это излишество. С таким же успехом вы можете использовать обычный

, о чём в продолжении истории!

Управление платой управления шасси по Bluetooth с помощью приложения Android.

Преимущества и основные команды gsm/gps модуля

Кроме того, автомобильная сигнализация G SM оснащена новейшей технологией, которая не позволяет хакерам отключить ее с помощью компьютерных программ или других методов. Поскольку модули GPS/GSM позволяют владельцу в любой момент узнать, где находится его автомобиль и в каком состоянии, системы сигнализации, оснащенные этими модулями, чрезвычайно эффективны.

Эта информация отображается на брелоке или на телефоне. С помощью этой системы можно управлять автомобилем не только через смартфон, на котором установлено специальное приложение, но и через обычный сотовый телефон. Многие сигнализации поставляются со встроенным микрофоном, с помощью которого можно прослушивать происходящее внутри автомобиля.

Еще одним преимуществом является то, что владелец автомобиля может запустить двигатель, не выходя из дома. Более того, двигатель можно запрограммировать на включение через определенные промежутки времени, например, каждый час на 10 минут. Зимой это означает, что “двигатель” вашего автомобиля не будет так сильно остывать, что сэкономит вам много времени утром. Также вы можете выбрать порог температуры, при котором система будет автоматически срабатывать.

Полезно! Следует помнить, что хотя на упаковке указан радиус действия около 1500 метров, на практике это расстояние будет гораздо меньше. Такие измерения проводятся вдали от городов, где они не подвержены помехам.

↑ будем строить машинку с ду!

Радиоуправляемые игрушки обладают широким спектром практических и технических преимуществ. В любом случае, дети 4-6 лет не получат игрушки со “взрослыми” пропорциями. Скорее всего, игрушка будет сломана, а деньги выброшены.

Поэтому они склонны дарить дешевые подарки. “Недорогие” состоят из машин, которые либо слишком быстрые, либо слишком медленные; танков, у которых есть слабые места; и других явных и скрытых недостатков. И, конечно, никакого пропорционального управления.

Через некоторое время одна из машин перестала вращать правое колесо. Разобрав его, я смог проверить двигатель. На плате управления есть три китайские микросхемы, и я не смог найти документацию, которая бы работала. Эта микросхема состоит из радиоприемника с логическими выходами и двух драйверов мостового двигателя. Один из драйверов вышел из строя. Драйверы мостовых двигателей не состоят из дискретных компонентов.

В местном радиомагазине не было ничего подходящего. В результате я отправился в далекий край на поиски чудодейственных микросхем. Мои вещи были упакованы, я набил карманы сухарями, выпил кофе и запустил браузер. Алиэкспресс. Драйвер двигателя, удовлетворяющий параметрам, был найден, и я заказал сразу два.

Следующим моим шагом было выбрать шасси будущего автомобиля на Aliexpress, не откладывая идею моей машины. Для наземных транспортных средств существуют различные типы шасси: гусеничные, колесные, с двумя, тремя или четырьмя колесами и т.д.

↑ достойный образец игрушки

Оба моих ребенка – девочки. Подарки на день рождения для обеих – это игрушки. Как правило, меня не беспокоит то, что получает моя дочь. Это нормально, что мой сын получает всевозможные машинки, танки и другую технику. Из всего этого китайского хлама меня расстраивает только игрушечная бензопила, которую я подарил ему в подарок.

Почему? Скорее всего, эта пила продавалась в магазине инструментов STIHL. STIHL также выпустила игрушечный аналог своего продукта, как я полагаю, с ограниченным рекламным тиражом. В результате получилась вполне вменяемая игрушка, очень похожая на своего старшего брата.

О чем я говорю? О, да, архитектура! Я имею в виду, что вы можете сделать отличную игрушку, если захотите. И здесь есть чем восхищаться.

↑ как я разбираю пакет

Самое интересное заключается в том, как я разбираю пакет. Пакеты могут содержать большие, знаковые данные и данные с плавающей точкой.

Объясню на примере пакета для управления шасси. Кроме стартового и стопового байтов, в своём пакете мне необходимо передавать одну команду, и два значения ШИМ, для левой и правой стороны приводов. Для команды мне достаточно одного байта, а для каждого значения ШИМ, я передаю
int16
 — 16 бит, знаковый тип. То есть, я не передаю флаг (байт/признак) направления. Для смены направления, я передаю положительное или отрицательное значение ШИМ.

Свадебный пакет организуется в виде структуры.

struct RxPacket
{	uint8_t	StartByte;	uint8_t Command;	int16_t Left_PWM;	int16_t Right_PWM;	uint8_t	StopByte;
} RxPacket;

Вызывая функцию RB_read_buffer ((uint8_t*)&RxPacket), в качестве аргумента передаем указатель на структуру приёмного пакета. То есть, при принятом пакете, будет все разложено по своим полочкам в структуре RxPacket. Дальше остается прочитать эти данные из структуры например так:

↑ передача пакета данных

Хотя моя программа еще не использовала передачу данных, в ней реализована такая возможность. Передавать данные проще. Чтобы создать структуру для приема пакетов, сделаем то же самое:

struct TxPacket
{	uint8_t StartByte;	uint8_t Rc5System;	uint8_t Rc5Command;	uint8_t StopByte;
} TxPacket;

В нем есть стартовый и стоповый байт и информационная часть. Инициализация приемника USART уже выполнена. Чтобы инициировать передачу пакета – вызовите функцию

void send_packet()
{	// Запись стартового байта в регистр UDR	UDR = START_BYTE;
}

В данном примере, в этой функции, я записываю только стартовый байт в регистр UDR. Вроде бы немного, но в этой же функции можно реализовать подготовку пакета или еще что-то полезное. И это, на мой взгляд более логично. Логично в плане самодокументирования кода. То есть, если я в коде, просто запишу значение в регистр UDR это может быть воспринято, как передача всего одного байта, а вызывая самоговорящую функцию
send_packet ()
 — я говорю о том, что я отправляю пакет данных.

Когда передатчик USART отправит все байты из регистра UDR – это будет обработано обработчиком прерывания по передаче.

ISR(USART_TXC_vect)
{	unsigned char *Pointer = (unsigned char *)&(TxPacket);	static unsigned char TxIndex = 1;	if ( TxIndex < sizeof(TxPacket) )	{	UDR = *(Pointer TxIndex);	TxIndex ;	}	else TxIndex = 1;
}

Этот обработчик объявляет переменную-указатель и присваивает ей адрес структуры TxPacket. Затем объявляется индекс передаваемого байта – значение статической переменной, которая при объявлении устанавливается в 1. В связи с тем, что мы уже отправили первый байт из структуры, мы начинаем с единицы.

Условие

if ( TxIndex < sizeof(TxPacket) )

Проверяет, не меньше ли индекс, чем размер пакета. Если условие истинно, мы записываем байт в регистр UDR:

UDR = *(Pointer TxIndex);

Инкрементировать TxIndex. USART передает следующий байт, поэтому обработчик получает уведомление, но следующий байт из структуры также будет отправлен. Таким образом, будет передана вся структура. Если TxIndex больше размера структуры – условие не будет истинным, и мы получим следующий результат

else TxIndex = 1;

TxIndex будет инициализирован, но в UDR ничего не будет записано, поэтому обработчик не будет вызван снова, пока не начнется передача следующего пакета. При использовании этого метода весь процесс полностью автоматический, поэтому если структура пакетов изменится, нам не придется переписывать обработчик.

Продолжая описание программы MK, мы теперь обсудим аспект управления водителем. Драйвер управляется тремя сигналами, A1 (B1), A2 (B2) и PWMA (PWMB). В A1 и A2 находятся переключатели, используемые для включения и выключения драйвера и для изменения полярности выхода соответственно. Подавая ШИМ-сигнал от МК на вход PWMA, можно управлять скоростью. Для генерации ШИМ-сигнала использовались два аппаратных ШИМ-таймера.

#define _WGM13 0
#define _WGM12 1
#define _WGM11 0
#define _WGM10 1
// Timer 1 init
TCCR1A = ( 1 << COM1A1 ) | ( 0 << COM1A0 ) | ( 1 << COM1B1 ) | ( 0 << COM1B0 ) | ( _WGM11 << WGM11 ) | ( _WGM10 << WGM10 );
TCCR1B = ( 0 << CS12 ) | ( 0 << CS11 ) | ( 1 << CS10 ) | ( _WGM13 << WGM13 ) | ( _WGM12 << WGM12 );	TCNT1 =0x0000;	OCR1A = 0;	OCR1B = 0;

Начнем с того, что это происходит из программы Android. Эти грабли вызывают у меня проблемы, потому что в Java нет беззнаковых типов. Кроме того, мне пришлось бы извращаться, чтобы передать число от 0 до 255. В моем случае я решил вместо этого передать 16-битное знаковое число. 16 бит знакового типа, от -32786 до 32768, более чем достаточно.

Во-вторых, на мой взгляд, он более прозрачен – скорость и направление вращения описываются всего одной переменной.

И в-третьих, как бы вы на это ни посмотрели, для наших целей мы не можем уместить это менее чем в три байта. Мы пожертвуем лишним байтом, но и так все понятно: положительное значение ШИМ – вращение вперед, отрицательное – вращение назад.

Для управления приводами я написал функцию привода (int leftPWM, int rightPWM).

void drive(int leftPWM, int rightPWM)
{	// Движение ВПЕРЁД левое колесо	if ( leftPWM > 0 ){	ClearBit( A2_PORT, A2_PIN );	SetBit( A1_PORT, A1_PIN );	}	// Движение НАЗАД левое колесо	if ( leftPWM < 0 ){	ClearBit( A1_PORT, A1_PIN );	SetBit( A2_PORT, A2_PIN );	}	// Движение ВПЕРЁД правое колесо	if ( rightPWM > 0 ){	ClearBit( B2_PORT, B2_PIN );	SetBit( B1_PORT, B1_PIN );	}	// Движение НАЗАД правое колесо	if ( rightPWM < 0 ){	ClearBit( B1_PORT, B1_PIN );	SetBit( B2_PORT, B2_PIN );	}	// Остановка	if ( leftPWM == 0 ){	ClearBit( A1_PORT, A1_PIN );	ClearBit( A2_PORT, A2_PIN );	}	// Остановка	if ( rightPWM == 0 ){	ClearBit( B1_PORT, B1_PIN );	ClearBit( B2_PORT, B2_PIN );	}	set_PWM( (uint8_t)(abs(leftPWM)), (uint8_t)(abs(rightPWM)) );
}

В соответствии со значением ШИМ, осуществляется управление сигналами A1 (B1), A2 (B2) и устанавливается значение ШИМ вызовом функции
set_PWM (leftPWM, rightPWM)

Измотанный… Давайте подведем итоги: Получил пакет, разделил его, отправил значение ШИМ в функцию запуска.

↑ приём пакета данных

Наша функция обработчика прерывания USART требует только поместить полученный байт в кольцевой буфер. Разбор пакета будет выполнен позже.

ISR(USART_RXC_vect)
{	uint8_t Data = UDR;	RB_push_char( Data );	// Складываем принятый байт в кольцевой буфер
}

Нет, я пока что не проверял рамы.

Теперь мы должны регулярно проверять наш буфер. Для этого я запустил таймер, в котором установил флаг, разрешающий проверку кольцевого буфера

ISR(TIMER0_OVF_vect)
{	TCNT0 = 0x64;	ReadRingBuffer = 1;
}

В главном цикле добавьте условие для управления индикатором.

if ( ReadRingBuffer )
{
if ( RB_read_buffer((uint8_t*)&RxPacket) == 1 ) Чтение буфера	{ // Разбираем пакет, делаем что-нибудь	}	ReadRingBuffer = 0;	}

Если стартовый и стоповый байты находятся на своих местах, функция RB_read_buffer прочитала кольцевой буфер, и пакет считается действительным, поэтому возвращается 1. В качестве аргумента функция принимает указатель на местоположение полученного пакета.

↑ приложение под android для машинки

Так подробно разбирать программу МК я не буду. Я новичок в разработке программ для Android и не смогу рассказать достаточно грамотно и глубоко.

В этой программе данные передаются на модуль HC-06 через Bluetooth. Программа имеет несложный интерфейс.

Вы выбираете модуль из выпадающего списка Bluetooth-устройств в верхней части. Изначально я не включал список, но в конце решил сделать это вручную, потому что не каждый человек может понять исходный код.

Далее включите “Off” – включение/выключение связи с “HC-06”. Ниже слева направо: передаваемое значение ШИМ левого канала, тип датчика, значение правого канала. Ползунок внизу регулирует скорость и чувствительность вращения.

Он реализует два типа управления машиной. Коснитесь надписи названия датчика: “Tilt” или “Shuffle”, чтобы изменить тип датчика.

1. Управление машиной осуществляется путем наклона телефона. Нулевое положение телефона – горизонтальное. Когда вы наклоняете телефон вперед, значение ШИМ увеличивается от 0 до 255 пропорционально вашему наклону. При наклоне назад значение ШИМ от 0 до -255 падает пропорционально наклону.

Чтобы повернуть влево или вправо, нужно одновременно наклонить телефон назад или вперед влево или вправо. Правда, автомобиль, работающий на бензине, не поворачивает, пока не дашь газу.

2. Сенсорное управление. Название этого элемента управления – “shuffle”.

Его можно рассматривать как сенсорную панель. При нажатии на серый квадрат значение ШИМ увеличивается/уменьшается в зависимости от места нажатия: чем ниже или выше центр, тем больше/меньше значение.

Нет никаких “прелестей” или уловок. Это практически все.

↑ программа микроконтроллера

Модуль Bluetooth способен передавать команды программе МК через последовательный интерфейс.

Следуйте командам и управляйте левым и правым приводами соответственно. Для управления скоростью и реверсом используется ШИМ.

Код достаточно хорошо прокомментирован. Отдельно я хочу рассказать о своей реализации обмена данными на кольцевом буфере. Существует множество реализаций этой концепции, и она не нова.

Я поместил функции кольцевого буфера в отдельную библиотеку, состоящую из: заголовочного файла ring_buffer.h и файла реализации функций ring_buffer.c Для использования библиотеки она должна быть включена в main.c

#include "ring_buffer.h"

Далее необходимо настроить заголовочный файл. Всего нужно настроить четыре директивы:

#define RX_PACKET_SIZE	7	// Размер RxD пакета
#define BUFFER_SIZE	16
// Размер приёмного буфера. Должен быть в два раза больше RX_PACKET_SIZE
#define START_BYTE	's' // Стартовый байт
#define STOP_BYTE	'e' // Стоповый байт

Ничего другого делать не нужно.

U SART микроконтроллера конфигурируется в файле main.c.

USART_Init(MYUBRR);
#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD-1
void USART_Init( unsigned int ubrr )
{	/* Set baud rate */	UBRRH = (unsigned char)( ubrr >> 8 );	UBRRL = (unsigned char)ubrr;	/* Enable receiver and transmitter */	UCSRB = (1 << TXCIE) | (1 << RXCIE)| (1 << TXEN) | (1 << RXEN);	/* Set frame format: 8data, 2stop bit */	UCSRC = (1 << URSEL) | (0 << USBS) | (3 << UCSZ0);
}

Автоматическое охлаждение и обогрев салона автомобиля

Автоматическое поддержание температурного режима в салоне также является функцией дистанционного управления автомобилем с помощью терминалов GPS или ГЛОНАСС. Вы можете установить порог включения/выключения кондиционера и отопления салона, когда показания различных датчиков температуры и влажности превышают этот порог.

Этого можно избежать, если самостоятельно настроить алгоритм Easy Logic на отключение отопления и кондиционирования, когда значения находятся в пределах нормы. Пример того, как будет выглядеть алгоритм после завершения работы:

Давайте проанализируем это подробнее. Предположим, что аналоговый датчик температуры подключен к клемме – вход 0 – и аналоговый датчик влажности подключен к входу 1. Реле включения/выключения отопления и кондиционирования подключены к выходам 0 и 1.

После команды “Запустить устройство” инициализируются три переменные для расчета нижнего и верхнего порогов температуры и верхнего порога влажности. Мы устанавливаем значения для выходов датчиков. Temp_Low устанавливается на 4000 мВ, а Temp_High – на 8000 мВ. Вы должны установить напряжение только для верхнего предела (Humidity) – 3000 мВ.

Затем терминал начинает проверку условий для последовательного включения отопления или охлаждения. Сначала проверяется температура ниже нормальной – если условие соблюдено, включается нагрев, а через 15 секунд начинается другая проверка, которая продолжается до тех пор, пока температура не поднимется выше этого уровня.

Если показания датчика не опускаются ниже нормы, проверяется верхний предел. Если температура выше, включается кондиционер, аналогично отоплению. Когда обе проверки температуры не показывают отклонений от нормы, проверяется уровень влажности по показаниям второго датчика.

Также можно добавлять условия и действия для создания наиболее комфортных температурных условий в соответствии с требованиями заказчика.

Гоночная машинка на bluetooth управлении.

Всем привет. Цель этой статьи в блоге – познакомить вас с обзором детских машинок, управляемых по bluetooth через телефон или планшет.

В связи с тем, что продавец предложил мне скидку после того, как я отправила ему ссылку на обзор конструктора, я использовала страницу 18. Так как доставка заняла много времени, я подумала, что она потерялась или я привыкла, что почта в последнее время работает хорошо. Даже при доставке коробка не помялась, поэтому ее можно подарить. Как и любая упаковка для игрушек из Китая, эта коробка также служит в качестве витрины. Изображение всех опций для этой машины появляется на каждой стороне коробки. QR-код со ссылкой для загрузки приложения для Android и iOS отображается на одной стороне карточки.

Машинка на arduino и Bluetooth Android | Правильные инструкции

Что может предложить производитель?

● Масштаб 1:20
● Два ведущих колеса
● Управление через блютуз
● Голосовое управление
● Программируемое движение

Когда вы открываете коробку, вы видите саму машину на картонной подставке, под которой находятся некоторые аксессуары. Это отвертка и зарядное устройство, в коробке также есть небольшое руководство. Зарядное устройство нагревается при работе, не слишком сильно, но некоторое тепло есть.

Машинка на arduino и Bluetooth Android | Правильные инструкции

Начнем с рассмотрения самой машины. Яркие цвета и гоночный вид делают машину достаточно интересной для маленького ребенка. Поскольку корпус машины пластиковый и не защищает от влаги, эта версия предназначена для квартир или сухого климата.

Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции

Аккумуляторные отсеки расположены на дне машины. Четыре элемента NiCd AA расположены в отсеке для аккумуляторов емкостью 700 мАч 4,8 В. Кроме того, на днище есть регулятор для поворота машины, когда она едет не прямо, и кнопка для включения.

Машинка на arduino и Bluetooth Android | Правильные инструкции

У него резиновые шины, которые можно заменить, хотя никто не будет их менять. Несмотря на наличие независимых подвесок спереди и сзади, рессоры в основном декоративные, а не функциональные.

Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции

Накладки держатся вместе тремя штифтами, их можно легко снять и при необходимости заменить на другие. Электроника находится в корпусе под ними.

Машинка на arduino и Bluetooth Android | Правильные инструкции

Я неправильно выразился, но если снять верхнюю половину корпуса, которая держится на шести винтах, то вы обнаружите простую, пластиковую плату управления с чипом Bluetooth, к которой подключены провода и мотор управления поворотом. Сервопривода нет.

Машинка на arduino и Bluetooth Android | Правильные инструкции

Сфотографировав микросхему управления двигателем, которая представляет собой микросхему Bluetooth, мы видим на ней изношенную маркировку. В корпусе заднего моста находится коллекторный двигатель с редуктором. На шестернях имеется смазка.

Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции

Для того, чтобы протестировать аппарат, я скачал QR-код приложения. Про приложение, понятно, что оно написано на стенде, но оно работает, хоть и не очень часто, но бывают сбои. Помимо управления на экране, есть еще и голосовое управление, но это для извращенцев). Команды такие же простые, как бежать, влево, стоп. Однако, похоже, что мое произношение хромает, так как я командовал через пень. Вы также можете добавлять фрагменты к маршруту, например, 2 секунды прямо направо, и машина поедет туда. Мне это подошло больше, чем голосовое управление. Ниже приведены несколько скриншотов из приложения.

Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции
Машинка на arduino и Bluetooth Android | Правильные инструкции

На главном экране в верхней части видны значки органов управления. Слева находится индикатор, показывающий заряд батареи; однако, похоже, что он просто нарисован, поскольку, когда автомобиль не ехал, он все равно показывал 100% заряд). Использование голосового управления описано в меню настроек. Кроме того, там есть кнопки для включения голосового управления, изменения управления, запуска музыкальных треков, под которые катится машина, включения программы построения маршрутов и изменения фона рабочего стола. Чтобы подключиться к машине, необходимо нажать крайнюю правую кнопку.

Скидка в пять долларов сделает ее хорошей игрушкой для ребенка, при условии, что я купил ее, когда она стоила $16. Помимо ковра, машина одинаково хорошо ведет себя на асфальте, особенно если асфальт ровный. Пороги в квартире преодолимы. Если вам удобно без телефона, то можно просто заниматься своими делами. Примерно 20 минут составляет время работы аккумулятора. Хозяин машины планировал сразу отдать моему маленькому племяннику, но сын решил сначала сам окатить). Мы понимаем, что это не гоночный автомобиль для заядлых любителей RC, а просто интересная игрушка для вашего ребенка. Теперь, когда вспомнил, на видео видно, как она катается. Если опять будут скидки, то ребенок может поехать. Всем спасибо за прочтение.

Магазин предоставил товар для обзора. Отзыв опубликован в соответствии с пунктом 18 Правил сайта.

Драйвер двигателей

Драйвер двигателя L298N
Драйвер двигателя L298N

Это несколько хрупкое устройство, которое имеет проблемы с нагрузками высокого тока. В сочетании с “жестокими” мощными двигателями проблем не избежать. Для того чтобы это работало, нам необходимо включить компонент, который управляет двигателями, подавая и отключая их ток.

В данном случае мы имеем в виду микросхему или готовый модуль, называемый драйвером двигателя. На нашем сайте есть статьи, описывающие драйверы на основе схемы H-моста. Подумайте об установке подходящего драйвера на любое шасси, которое вы приобретаете готовым.

Интерфейс управления на планшете android.

В статье Arduino tank with bluetooth control подробно описаны инструкции по созданию интерфейса управления на базе HmiKaskada android. Ссылка кликабельна.

Программа HmiKaskada (ссылка на ЯндексДиске) доступна для устройств Android. Изначально она разрабатывалась как альтернатива дорогостоящим промышленным HMI-панелям. Однако пытливые умы быстро догадались, что она может управлять чем угодно.

Программа доступна в платной и бесплатной версиях. Обе, но я сделал проект в основном в бесплатной версии. Это было сделано для того, чтобы показать вам и подчеркнуть, что в бесплатной версии это действительно абсолютно работоспособно. Основное различие между бесплатной и PRO версиями заключается в том, что бесплатная версия позволяет осуществлять сопряжение только через Bluetooth.

https://www.youtube.com/watch?v=WyJQ7y7ito0

На форуме FLProg есть большая тема для обсуждения, а разработчик активен и общителен. Скриншот панели управления есть в видео, поэтому я не понимаю, зачем его выкладывать здесь.

Конструкция, шасси и двигатели робота на ардуино

Единственный способ для чего-либо двигаться или перемещаться – это оснастить его колесами, гусеницами или манипуляторами. Вы можете выбирать из списка любых комбинаций и сочетаний платформ, который совершенно неограничен. Как правило, в качестве начального варианта мы предпочитаем использовать готовые платформы с AliExpress.

Двигатель шасси ардуино
Двигатель, шасси и колеса машинки на ардуино

Даже если вы не хотите работать со стандартными наборами, вы можете создать платформу самостоятельно. Удалите все шестеренки, включая шестеренки от игрушечных радиоуправляемых машинок. Колеса вы также можете создать сами, что также является увлекательным занятием.

Машинка на ардуино своими руками

Для реализации проекта требуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • Motor Control Shield L293D;
  • Bluetooth модуль HC-05/06;
  • два мотора с редукторами и колесами;
  • аккумулятор 9 Вольт (крона);
  • 2 резистора и 2 светодиода;
  • корпус и колеса от старой машинки;
  • паяльник, термопистолет, провода, припой и т.д.
Детали для робота - машинки на Ардуино
Детали для робота — машинки на Ардуино УНО

Настройки сигнализации в машине через телефон

С помощью телефона мы получаем полный контроль над всеми настройками системы сигнализации. Управление запуском двигателя, центральным замком и открытием багажника можно осуществлять с главной страницы.

Изображение автомобиля динамически отображает его состояние. Например, когда работают аварийные огни или поворотники, они также будут мигать на изображении. А когда работает двигатель, контур обводится голубым свечением.

Ползунки, как показано выше, отображают текущую скорость, напряжение электрической системы и температуру. В главное меню можно попасть, нажав на значок меню в левом верхнем углу.

Вы можете выбрать следующие настройки сигнала тревоги:

  • Звуковые сигналы — можно отключить работу сирены для оповещения о постановке или снятии машины с охраны
  • Световая индикация — тоже самое, касательно включения поворотных сигналов при открытии центрального замка, срабатывании датчиков удара и прочих событиях. Здесь же можно активировать «вежливую подсветку», когда фары горят в течение некоторого времени после перехода в режим охраны для того, чтобы подсветить водителю дорогу к дому.
  • Чувствительность датчиков — настройка уровня беспокойства для срабатывания сигнализации
  • Управление охраной — детальные параметры конфигурации сигнализацией автомобиля.
    Самое интересное в данном разделе то, что можно активировать подключенный смартфон в качестве иммобилайзера и охранной метки. При включении данной функции двигатель будет заводиться только при наличии в салоне привязанного телефона с включенным Bluetooth. Также можно выставить дальность приема сигнала. При появлении смартфона в его зоне автоматически будет срабатывать постановка на охрану или открываться центральный замок автомобиля
  • Команды — меню настройки дополнительных команд сигнализации для быстрого к ним доступа с кнопко пульта

Освобождаем руки и глаза

Не зря существуют штрафы за разговоры по телефону за рулем. Это отвлекает водителя не меньше, чем выбор музыкального трека или отправка СМС. Однако избежать общения с телефоном во время вождения невозможно, и единственный способ повысить безопасность – использовать голосовое управление.

Siri на iPhone 4S отлично справляется с этими задачами. Кроме того, Siri можно вызывать с помощью голосовых команд (инструкции здесь). Если у вас нет Siri на iPhone, вы можете воспользоваться приложением Vokul, которое предназначено для использования в автомобиле.

Смартфоны с Android 4.1 также имеют хорошие возможности голосового управления, но если вам нужен настоящий помощник, как Siri, вам потребуются дополнительные приложения, например, Voice Actions для Android; Vlingo; Edwin.

Надеемся, что наши советы помогут вам успешно совместить автомобиль и смартфон. Всегда помните о безопасности вождения и не подвергайте себя и других участников дорожного движения излишнему риску.

Питание робота

Многие начинающие энтузиасты Arduino упускают из виду важность наличия правильной схемы питания. Между тем, многие проблемы, возникающие при работе интеллектуальных устройств на Arduino, обусловлены неправильным выбором схемы питания.

Для того чтобы собрать Arduino-машину, необходимо подать питание на контроллер, двигатели, драйвер и датчики. Все они имеют уникальные ограничения и нюансы работы. Чтобы учесть все эти ограничения, необходимо создать оптимальный баланс веса и сложности.

Питание робота
Питание робота на Ардуино

При создании автономного роботизированного устройства необходимо учитывать, можно ли быстро заправлять устройство или быстро менять батареи. Решения обычно выбираются из следующих вариантов:

  • Обычные батарейки типа АА. Обратите внимание, что платы Arduino Uno, Nano и большинство двигателей, используемых в роботах Arduino, требуют напряжения в диапазоне 6-9 вольт. Поэтому необходимо последовательно соединить не менее 4 батарей 1,5 В, а сами батареи должны быть хорошего качества и обеспечивать достаточную мощность для работы. Например, большинство батарей для соленой воды не соответствуют этим критериям. Батарейки AAA почти никогда не используются для машин Arduino из-за их меньшей емкости (хотя они могут использоваться в миниатюрных моделях, где размер имеет большое значение).
  • Батарея AA. Здесь существуют еще большие ограничения по напряжению и току. Большинство батарей выдают 1,2 вольта, поэтому для “сбора урожая” необходимых 6-9 вольт требуется больше. Несомненным преимуществом является то, что их можно перезаряжать.
  • Литиевые аккумуляторы 18650. Это уже “серьезная артиллерия”, обеспечивающая длительное время автономной работы, возможность перезарядки и приемлемые характеристики тока и напряжения. Рабочее напряжение таких батарей составляет 3,7 В, что позволяет построить полную цепь питания всего из двух элементов.
  • Другие источники питания. Они могут варьироваться от более мощных и громоздких никель-металлгидридных и кадмиевых батарей до многочисленных “плоских” литий-ионных вариантов, используемых в дронах, смартфонах и других портативных цифровых устройствах.

Каким бы ни был источник питания, нужно обеспечить его надежное крепление, удобное расположение, защиту от воздействия недружелюбной окружающей среды. Если вы подключаете к одному источнику и контролер, и двигатели, и датчики, то нужно позаботиться о правильной схеме, включающей, например, надежную связь “по земле” всех устройств.

Подключаем bluetooth к машинке

Модуль Bluetooth будет использоваться через SoftwareSerial (библиотека SoftwareSerial.h), поэтому модуль Bluetooth будет подключен к контактам 3 и 4 на Arduino. RX к D3, TX к D4

Схема ардуино робота машинки 5
Схема подключения Bluetooth к ардуино машинке

Платформа робота готова! Теперь осталось загрузить прошивку для контроллера Arduino и приложение для смартфона RC CAR. На нашем сайте вы можете найти обзор приложений для Android, которые работают с Arduino.

Подключаем двигатели и плату

С питанием платформы мы закончили; теперь давайте подключим оставшиеся компоненты. Наш первый шаг – припаять провода к моторам, затем покрыть их клейкой лентой, чтобы впоследствии не порвать контакты. В конце концов, для двух моторов нужно всего два провода, а не четыре. Это немного упростит процесс установки и освободит немного места на платформе.

Расположите драйвер двигателя так, чтобы радиатор находился в передней части платформы. В противном случае необходимо будет переписать программу для микроконтроллера.

Ардуино робот драйвер
Драйвер двигателя для Ардуино робота

После размещения платы BMC и держателя можно приступать к работе. Оставьте спереди свободное место для будущего монтажа датчика. То же самое относится и к модулю зарядного устройства аккумулятора. Модуль зарядки аккумулятора выполняет ту же функцию.

Питание будет взято от драйвера двигателя для Arduino и других электронных компонентов.

Пример платформы робота-машины на ардуино

В следующих шагах мы объясним, как можно создать универсальную платформу, которую затем можно использовать для самых разных проектов, независимо от типа используемого контроллера или шасси. Как показано на видео, вы можете использовать стандартные варианты с Aliexpress, можете оснастить машину гусеницами для создания вездехода, а можете придумать идею, не похожую ни на что, что вы видели раньше.

Робот на Ардуино
Робот на Ардуино

Для проекта нам требуются:

  • Контроллер Arduino (в нашем случае Arduino Nano).
  • Контроллер двигателя L298N.
  • Двигатели с редуктором.
  • Корпус и рама для установки колес и оборудования
  • Корпус для аккумуляторов 18650 с выключателем.
  • Замена кабеля.

Чтобы создать полноценный проект, нам понадобятся:

  • Датчик расстояния и привод, на котором он установлен.
  • Инфракрасные линейные датчики.
  • Индикатор и лампочки “красоты”.
  • Пьезоэлектрический динамик – пищалка.
  • Модуль Bluetooth (если вы собираетесь управлять машиной дистанционно).
  • Экранирование датчика (облегчает переключение).
  • Зарядка аккумулятора и зарядный модуль.
  • Сами батареи.
Схема ардуино-робота машинки 1
Общая схема машинки на Ардуино

Простая bluetooth машинка на arduino

Широкая доступность и низкая стоимость платформы Arduino и различных роботизированных платформ сделали возможным для любителей создавать радиоуправляемые автомобили всех форм и размеров. Широкое распространение смартфонов позволило использовать их в качестве контроллеров для этих машин. Самой большой проблемой для многих энтузиастов Arduino является отсутствие опыта программирования под Android. Сегодня я расскажу, как вы можете легко решить эту проблему с помощью App Inventor 2, визуальной среды для создания андроид-приложений.

Постройку любой машинки надо начинать с «железа», поэтому вкратце опишу, что использовал для своей машинки:
arduino nano
bluetooth module HC-05
Z-Mini Motor Sensor Shield L293D
2WD Motor Chassis
Конфигурация «железа» не играет большой роли в этом проекте, поэтому шасси, шилд и саму ардуино можно заменить на любые аналоги.

Следующий шаг – создание приложения для Android. App Inventor, разработанный через браузер, представляет собой визуальную среду разработки приложений для Android. Просто войдите в свой аккаунт Google и нажмите “создать”, чтобы создать новый проект. Создайте в новом проекте четыре кнопки для выбора направления движения и одну для подключения к модулю Bluetooth, используя метод drag-and-drop. Примерно так:

image

Чтобы создать логику нашего приложения для Android, нажмите на кнопку “Блоки” в правом верхнем углу, а также перетащите мышью следующие элементы:

image

Приложение необходимо скомпилировать, нажав на кнопку “Build”.

У любителей Arduino не должно возникнуть проблем с написанием скетча, и я бы только посоветовал выбирать из готовых скетчей. Машина управляется компьютером через последовательный порт. Я использовал следующее

скетч

Значение

int IN1 = 4;

int IN2 = 7;

int EN1 = 6;

int EN2 = 5;

void setup()
{
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(EN2, OUTPUT);

}
void loop()
{
if (Serial.available())
{
val = Serial.read();

// Задаём движение вперёд
if (val == ‘W’) // При нажатии клавиши «W»
{
// Выводы конфигурируются согласно работе Motor Shield’а
// Моторы крутятся вперед
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
}

// Задаём движение назад
if ( val == ‘S’)
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}

// Задаём движение вправо
if ( val == ‘D’)
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
}

// Задаём движение влево
if ( val == ‘A’)
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
}

// Стоп режим
// При отпускании клавиш в программе в порт шлется «T»
if ( val == ‘T’) // При нажатии клавиши «T»
{
// Выводы ENABLE притянуты к минусу, моторы не работают
digitalWrite(EN1, LOW);
digitalWrite(EN2, LOW);
}
}
}

Вот так я получил машину:

Машинка на arduino и Bluetooth Android | Правильные инструкции

Для тех, кому нравится такой дизайн, его можно немного изменить. Разобраться, как это сделать самостоятельно, несложно; я не буду подробно описывать, как это сделать. Вам нужно использовать файлы .png вместо .jpeg, которые не поддерживают прозрачные фоны. Неподготовленный человек может легко сделать такой дизайн за полчаса или час:

image

P.S. Для тех, кто не знаком с App Inventor 2, есть подробное руководство по разработке приложений (на YouTube), созданное мною.

https://www.youtube.com/watch?v=y2jAJ05s2EQ

P.P.S. Сборник из более 100 обучающих материалов по ардуино для начинающих и профи тут.
Онлайн курс по ардуино на гиктаймс здесь.
UPD 1.02.2023: выложил приложение на play market.
Аналогичные проекты с другими шилдами здесь.

Робот на ардуино своими руками

Проект Arduino Car немного отличается от других типов проектов, поскольку он требует понимания и освоения сразу множества важных компонентов, поэтому не стоит начинать работу, если вы мало знаете об Arduino.

Робот машина на Ардуино
Робот машина на Ардуино

Ниже приведены основные элементы проекта.

Системы призрак

В зависимости от модификации этих устройств будут доступны определенные модули и аксессуары. Например, автомобили Ghost, оснащенные иммобилайзером, будут иметь сигнализацию с номером от 510 до 540. Для интересующих нас GSM-сигнализаций подсказкой будет первая цифра – 8 (например, 810, 820, 830 и 840). Среди этих модификаций есть следующие характеристики:

  • CAN-контроллеры, благодаря которым возможна надежная интеграция с системами автомобиля.
  • Функция “PIN to drive”, которая выступает в качестве дополнительной защиты, rjulf помимо использования специального электронного ключа, владелец автомобиля должен ввести специальный код.
  • Датчики внешних воздействий (наклон, удар, смещение и многие другие).

Он также оснащен всеми стандартными “фишками”, включая пульт дистанционного управления, микрофоны, а также функцию автозапуска.

Если мы посмотрим на цену этих систем безопасности, оснащенных GPS:

  • Prizrak 810 стоит 15 000 рублей. Только учтите, что эта модификация не оснащена специальной RFID-системой “DDI 2.4 GHz”, которая не только помогает защитить автомобиль от угона, но и исключает возможность ложного отключения двигателя. В этой системе также нет специального реле, которое отключает двигатель.
  • Prizrak 820 стоит немного дороже – 18 000 рублей. Эта система также не оснащена радиометкой, но в нее включено мини-реле для отключения двигателя.
  • Prizrak 830 стоит 17 500 рублей. Система оснащена RFID, но реле отсутствует. Модель
  • Prizrak 840 стоимостью 21 800 рублей оснащена всеми необходимыми “наворотами” и обеспечит самую надежную защиту вашего автомобиля.

Схема подключения

Используя порт VIN на Arduino, аккумулятор питает Arduino, а драйвер двигателя использует порт 12 В. 3,3 В используется Arduino для питания модуля Bluetooth. Для стабилизации напряжения параллельно портам питания этого модуля подключен конденсатор. Без него соединение Bluetooth может быть потеряно, и устройство может отключиться. Кроме того, порт 5 В микроконтроллера обеспечивает питание серводвигателя. Он управляет рулевыми колесами.

В идеале, перемычка Enable на драйвере двигателя должна быть удалена. Для управления скоростью двигателя требуется этот порт. Вы должны подключить его к порту PWM, который на Arduino обозначен ~. На схеме выше это порт 3. Управление двигателями осуществляется через порты 2 и 4 Arduino, которые подключены к портам Input 3 и Input 4 драйвера двигателя.

Если после сборки вы нажимаете кнопку вперед на пульте дистанционного управления, а автомобиль едет назад, поменяйте местами провода на портах Out3 и Out4.

Если двигатели вращаются в противоположных направлениях, поменяйте их провода местами.

На Arduino контакты RX и TX модуля Bluetooth подключены к портам TX и RX. и наоборот. К сожалению, поскольку RemoteXY.h несовместим с SoftwareSerial.h, другие порты Arduino не могут быть запрограммированы для передачи последовательных данных. Поэтому при каждой прошивке микроконтроллера необходимо отключать питание модуля Bluetooth.

Управление серводвигателем осуществляется через порт 5 Arduino и реализацию библиотеки Servo.h.

Схема сборки машинки на ардуино

Мы будем использовать arduino, чтобы сделать автомобиль своими руками, если у вас есть все необходимые детали (в проекте не нужны светодиоды и резисторы). Сначала необходимо припаять провода к контактам двигателя, а затем закрепить их скотчем, чтобы контакты не оторвались. Необходимо подключить провода к клеммам M1 и M2 на моторном щите (полярность можно изменить позже).

Схема сборки машинки с Блютуз управлением
Схема сборки машинки с Блютуз управлением

Наш проект не требует сервоприводов, так как модуль Bluetooth получает питание от контактов сервопривода. Мы будем использовать стабилизированный источник питания напряжением 5 вольт. Было бы удобнее, если бы порты TX и RX были припаяны к мужским разъемам, а контакты (BLS) – к портам Pin0 и Pin1 на Motor shield. Если вам нужно загрузить скетч, вы можете легко отключить модуль Bluetooth от Arduino.

Управление светодиодом происходит через порт “Pin2”. Провод может быть припаян непосредственно к порту. Если вы планируете управлять несколькими машинами с помощью Bluetooth одновременно, необходимо сделать обновление прошивки на модуле HC-05. После прошивки модуля вы больше никогда не перепутаете машины, так как каждая из них будет иметь свое уникальное имя в Android.

Схема электропитания робота автомобиля

Организация правильного стабильного питания – одна из важнейших задач в любом проекте. В разработанной нами модели используется рекомендуемая нами схема питания, основанная на литий-ионных аккумуляторах формата 18650 и их защите от переразряда и перезаряда.

Теперь рассмотрим самый простой способ питания электродвигателей. При пайке проводов к электродвигателям лучше сделать это до сборки.

Схема ардуино робота машинки 2
Схема питания и подключения двигателей в ардуино автомобиле

Это довольно стандартное решение, и в Интернете можно найти десятки подобных примеров. Однако у такой схемы есть один существенный недостаток – батареи становятся бесполезными, если они полностью разряжены.

Машинка на Ардуино
Машинка на Ардуино

Для добавления контроллера разряда в схему необходимо внести следующие изменения:

Схема ардуино робота машинки 3
Схема питания с контролем разряда аккумулятора

Теперь аккумуляторы будут защищены, но их нельзя будет заряжать.

Питание ардуино
Питание робота Ардуино

Модуль повышения напряжения можно использовать от 5 В до желаемого уровня зарядки, в зависимости от количества используемых серий батарей. Он имеет гнездо типа micro USB, которое может сломаться при частом использовании, поэтому мы рекомендуем добавить гнездо для пятивольтового источника питания для последующей зарядки. Если вы хотите зарядить два литий-ионных аккумулятора, необходимо установить выходное напряжение на 8,4 вольта.

Схема питания ардуино робота машинки
Схема питания с модулем зарядки для ардуино робота машинки

Так мобильный телефон превращается в бортовой компьютер

Машинка на arduino и Bluetooth Android | Правильные инструкции
Smart Control Lite
Чтобы получить возможность использовать мобильный телефон в качестве бортового компьютера и диагностического прибора, вы должны подключить его через Bluetooth или WLAN к разъему OBD-2.

Используя соответствующее приложение, вы можете следить за расходом топлива, а также температурой, крутящим моментом, ускорением и многим другим с помощью телефона.

При езде и гонках по пересеченной местности будет полезно знать остановочные расстояния, время прохождения круга и углы наклона тела.

Кроме того, вы можете получить информацию о кодах ошибок, присутствующих в системе, чтобы предотвратить возможные сбои и вовремя вмешаться.

В iOS с iPhone совместимы только модули OBD-2 с поддержкой WLAN из-за ограничений протокола Bluetooth.

Управляем arduino-машинкой при помощи g-сенсора со смартфона

///////////////////////////////////////////// 

//        RemoteXY include library         // 

///////////////////////////////////////////// 

/* определение режима соединения и подключение библиотеки RemoteXY */ 

#define REMOTEXY_MODE__SOFTWARESERIAL 

#include <SoftwareSerial.h> 

#include <RemoteXY.h> 

/* настройки соединения */ 

#define REMOTEXY_SERIAL_RX 2 

#define REMOTEXY_SERIAL_TX 3 

#define REMOTEXY_SERIAL_SPEED 9600 

/* конфигурация интерфейса  */ 

unsigned char RemoteXY_CONF[] = 

{ 3,0,23,0,1,5,5,15,41,11

,43,43,1,2,0,6,5,27,11,5

,79,78,0,79,70,70,0 }; 

/* структура определяет все переменные вашего интерфейса управления */ 

struct { 

    /* input variable */

signed char joystick_1_x; /* =-100..100 координата x положения джойстика */

signed char joystick_1_y; /* =-100..100 координата y положения джойстика */

unsigned char switch_1; /* =1 если переключатель включен и =0 если отключен */

    /* other variable */

unsigned char connect_flag;  /* =1 if wire connected, else =0 */

} RemoteXY; 

///////////////////////////////////////////// 

//           END RemoteXY include          // 

///////////////////////////////////////////// 

/* определяем пины управления правым мотором */

#define PIN_MOTOR_RIGHT_UP 7

#define PIN_MOTOR_RIGHT_DN 6

#define PIN_MOTOR_RIGHT_SPEED 10

/* определяем пины управления левым мотором */

#define PIN_MOTOR_LEFT_UP 5

#define PIN_MOTOR_LEFT_DN 4

#define PIN_MOTOR_LEFT_SPEED 9

/* определяем пин управления светодиодом */

#define PIN_LED 13

/* определяем два массива с перечислением пинов для каждого мотора */

unsigned char RightMotor[3] = 

{PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED};

unsigned char LeftMotor[3] = 

{PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED};

/*

управление скоростью мотора

motor – ссылка на массив пинов

v – скорость мотора, может принимать значения от -100 до 100

*/

void Wheel (unsigned char * motor, int v)

{

if (v>100) v=100;

if (v<-100) v=-100;

if (v>0) {

digitalWrite(motor[0], HIGH);

digitalWrite(motor[1], LOW);

analogWrite(motor[2], v*2.55);

}

else if (v<0) {

digitalWrite(motor[0], LOW);

digitalWrite(motor[1], HIGH);

analogWrite(motor[2], (-v)*2.55);

}

else {

digitalWrite(motor[0], LOW);

digitalWrite(motor[1], LOW);

analogWrite(motor[2], 0);

}

}

void setup()

{

/* инициализация пинов */

pinMode (PIN_MOTOR_RIGHT_UP, OUTPUT);

pinMode (PIN_MOTOR_RIGHT_DN, OUTPUT);

pinMode (PIN_MOTOR_LEFT_UP, OUTPUT);

pinMode (PIN_MOTOR_LEFT_DN, OUTPUT);

pinMode (PIN_LED, OUTPUT);

  /* инициализация модуля RemoteXY */

RemoteXY_Init ();

}

void loop()

{

/* обработчик событий модуля RemoteXY */

RemoteXY_Handler ();

  /* управляем пином светодиода */

digitalWrite (PIN_LED, (RemoteXY.switch_1==0)?LOW:HIGH);

  /* управляем правым мотором */

Wheel (RightMotor, RemoteXY.joystick_1_y – RemoteXY.joystick_1_x);

/* управляем левым мотором */

Wheel (LeftMotor, RemoteXY.joystick_1_y   RemoteXY.joystick_1_x);

}

Оцените статью
Радиокоптер.ру
Добавить комментарий