0
Модель автомобиля, управляемая при помощи мобильного телефона. Часть 2. ПО для микроконтроллера
Malik Zohaib
В первой части мы рассмотрели схему контроллера и декодера DTMF команд, структурный состав устройства, познакомились с назначением основных элементов и узлов.
Исходный код программы микроконтроллера ATmega16 написан на языке Си и скомпилирован с использованием компилятора CodeVisionAVR. Исходный код снабжен подробными комментариями и очень прост.
Изначально в программе мы определяем имена регистров для микроконтроллера Atmega16, определяем имена переменных. Линии порта А микроконтроллера необходимо настроить на вход, а линии порта В – на выход (см. принципиальную схему в первой части статьи). Основной код программы размещается в цикле while(), таким образом в цикле постоянно считываются данные присутствующие на линиях порта А, которые проверяются при помощи оператора switch. Соответствующие принятым данным команды отправляются в порт D.
Для управления моделью пользователю необходимо позвонить на телефон-приемник, установленный на модели, с головного телефона (телефон-передатчик) с поддержкой тонального набора. Установленный на модели телефон должен иметь функцию автоответа, либо должен быть переведен в режим “Hands-Free”. Сигнал с телефона поступает на собранную схему дешифратора команд посредством разъема для подключения наушников на мобильном телефоне. После автоматического ответа пользователь может посылать DTMF команды для управления моделью в соответствии с таблицей, представленной ниже.
Соответствие команд
Цифра
нажатая
пользователем
Выходные данные
с DTMF детектора
Входные данные
(порт A)
микроконтроллера
Выходные данные
(порт D)
микроконтроллера
Команда
2
0x02
00000010
0xFD
11111101
0x89
10001001
Движение вперед
4
0x04
00000100
0xFB
11111011
0x85
10000101
Поворот влево
(правый двигатель - вперед,
левый двигатель - назад)
6
0x06
00000110
0xF9
11111001
0x8A
10001010
Поворот вправо
(правый двигатель - назад,
левый двигатель - вперед)
8
0x08
00001000
0xF7
11110111
0x86
10000110
Движение назад
5
0x05
00000101
0xFA
11111010
0x00
00000000
Стоп
Если пользователь нажал на телефоне-передатчике цифру «2» (двоичный эквивалент 00000010), то получим выходные данные с микроконтроллера в двоичном эквиваленте - 10001001, что соответствует высокому уровню на линиях PD0, PD3 и PD7. Высокий уровень на линии PD7 разрешает работу драйвера двигателя L293D, высокие уровни на PD0 и PD3 указывают на прямое направление вращения двигателей.
Внешний модели автомобиля
![]() По материалам сайта www.rlocman.ru
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости. Популярные статьи по ремонту audio - videoНовые статьи по радиоэлектронике |