OpenRobo
Самодельные роботы
Робот
Создать
Редакторы
Схемы и детали

USB устройство своими руками

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

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

Далее нам надо для связи по USB сделать устройство, программу для микроконтроллера AVR и программу для компьютера.

USB управление для своего устройства

Берем кабель USB и с одной стороны срезаем провода, видим 4 провода, которые нам нужны - красный, чёрный, жёлтый (бывает зеленым) и белый. Красный провод - это плюс питания +5V, чёрный провод - это минус питания. Этими проводами запитываем наше устройство. А другие 2 провода - жёлтый D+ и белый D- используются для обмена данными по USB.

Схема USB устройства на микроконтроллере AVR

Схема USB устройства на микроконтроллере AVR
На рисунке показана схема простого самодельного USB устройства. Оно выполнено со всеми требованиями стандарта USB и при корректной сборке отлично работает. Встроенной частоты, на которой может работать USB в микроконтроллере AVR нет, поэтому потребуется установить внешний генератор частоты в 12 МГц, а для сглаживания сигнала от него еще два конденсатора по 20 пФ. По документации на используемый микроконтроллер AVR узнаем куда подключается внешний генератор частоты на том микроконтроллере, который мы используем. В данном случае это линии PA1 и PA0, в других же микроконтроллерах побольше обычно есть линии XTAL, тут их нет, поэтому подключаем куда написано вместо них.
Красным и чёрным проводом запитываем микроконтроллер - эти линии просто подключаются к VCC и GND. Линии с данными USB - это D+ и D- подключаются к линиям микроконтроллера, не к случайным, а к тем что заданы в программе для микроконтроллера, которую позднее будем делать, сразу скажу что это будут линии PD2 и PD4. Просто так нельзя подключать их, надо на пути поставить резистор на 68 Ом по требованию стандарта USB и еще снизить напряжение на данных линиях с 5V до 3.6V. Для резисторов посчитаем их мощность - ток USB задается в программе для микроконтроллера и мы его зададим на уровне 0.05 A, значит мощность резисторов 0.05 A * 5 V = 0.25 Вт. Такие и берем. Напряжение снижается параллельным подключением дидов Зенера 3V6 как показано на рисунке, эти диоды надо воткнуть правильной стороной, напомню что чёрная полоска на диоде с одной стороны должна быть направлена в сторону линий D+ и D-, а обратная сторона к минусу питания. И последнее, чтобы работало устройство USB, надо резистором в 1.5 кОм указать режим его работы, подключаем его к D-, это означает низкоскоростной режим, который нам нужен, поскольку мы не планируем передавать большие объемы данных, а только будем посылать простые сигналы, низкоскоростной режим нам нужен. Чтобы увидить что наше устройство работает, подключим светодиод к линии PB0, длинной плюсовой стороной к линии, а другой стороной к минусу питания.
 
Также воспользуемся вспомогательными инструментами для удобства - это зажим на 20 гнезд, чтобы легко извлекать микроконтроллер для перепрограммирования. И это 2 клеммника, чтобы прикрутить провода USB к макетной плате. Вообщем для сборки устройства нам потребуется сделать такой закуп:

ATtiny2313A купить
70
РУБ.
НЕТ В НАЛИЧИИ
Нужно 1 шт.
Это: Микроконтроллер
Контакты: 20
Программа: 2 Kb
Резистор 68 Ом купить
1
РУБ.
ШТ.
КУПИТЬ
Сопротивление: 68 Ом
Мощность: 0.25 Вт
Диод Зенера 3V6 купить
2
РУБ.
ШТ.
КУПИТЬ
Пропускает: 3.6 В
Тип: Понижающий
Резистор 1.5 кОм купить
1
РУБ.
ШТ.
КУПИТЬ
Сопротивление: 1.5 кОм
Мощность: 0.25 Вт
Кварцевый генератор 12 купить
5
РУБ.
ШТ.
КУПИТЬ
Частота: 12 МГц
Тип: пассивный
 
Конденсатор 20 pF купить
4
РУБ.
ШТ.
КУПИТЬ
Емкость: 20 pF
Тип: Керамический
Макс. напряжение: 50 V
Светодиод купить
3
РУБ.
ШТ.
КУПИТЬ
Цвет: Белый
Напряжение: 3 V
Зажим на 20 гнезд купить
65
РУБ.
ШТ.
КУПИТЬ
Гнезда: 10 x 10
Клеммник купить
15
РУБ.
ШТ.
КУПИТЬ
Контактов: 2
Зажим: прикрутка
Кабель USB купить
50
РУБ.
НЕТ В НАЛИЧИИ
Нужно 1 шт.
Интерфейс: USB 2.0
Длина: 100 см
 
Макетная плата купить
190
РУБ.
ШТ.
КУПИТЬ
Размер: 63 x 2 горизонтальных линий и 4 вертикальные линии
Проводки купить
80
РУБ.
ШТ.
КУПИТЬ
Тип: Навесные
Количество: 40
Набор проводков купить
210
РУБ.
ШТ.
КУПИТЬ
Количество: 140
 
Собранное готовое к работе USB устройство выглядит так:

USB устройство своими руками

USB устройство своими руками

Программа на микроконтроллер AVR для USB связи

1) Скачиваем исходные коды OpenRoboFW и распакуйте архив на диск C:\, я собрал этот архив из файлов проекта V-USB, настроил их на Attiny2313A и тактовую частоту 12 МГц (эти настройки меняются в файле Makefile, если используется другой микроконтроллер), упростил код для внесения изменений. V-USB дает нам исходники программ с идентификаторами VID и PID, которые нужны для распознания USB устройства компьютером. На всякий случай вот ссылка на проект V-USB. После распаковки архива содержимое директории C:\OpenRoboFW выглядит так:
Назначение важных файлов:
main.c - главный файл программы на языке C, она осуществляет обработку информации, пришедшей по USB, и в ней программируется реакция микроконтроллера на USB пакеты с компьютера
Makefile - параметры сборки, тип микроконтроллера (взяли - attiny2313a), частота, информация по фьюзам для других микроконтроллеров, при использовании другого микроконтроллера, в этом файле его нужно прописать в строке DEVICE (например - atmega16a)
usbconfig.h - параметры USB, порт подкючения линии D-, ток

Откройте main.c и обратите внимание на 2 области кода, которые там выделены - программа реакции на USB пакет и настройка портов. В этих областях надо вставлять свой код, остальное можно не трогать. Для примера там уже стоит код, его можно менять. В приходящем пакете USB с компьютера есть 2 параметра - p1 и p2, которые передаются из программы в виде параметров, в зависимости от их значений можно менять состояние линий микроконтроллера (портов) в программе реакции.

2) Скачиваем программу WinAVR и устанавливаем, она нужна для создания HEX-прошивки микроконтроллера AVR, сайт WinAVR

3) Запускаем командную строку Windows, которая находится тут c:\Windows\System32\cmd.exe появляется чёрное окно. В этом окне вводим 2 команды (набираем команду, нажимаем enter):

Это команды для командной строки Windows, которая находится здесь C:\Windows\System32\cmd.exe, команды набираются вручную по одной строке и в конце каждой строки необходимо нажать клавишу EnterКомандная строкаКомментарии
1
2
cd c:\OpenRoboFW  
make hex
Переходим в директорию OpenRoboFW
Запускаем подготовку программы для микроконтроллера

Подготавливаем программу МК

Подготавливаем программу МК

После чего в директории C:\OpenRoboFW забираем файл main.hex и прошиваем его в микроконтроллер. Если в процессе появилась ошибка типа warning unused variable, а также can not set period, или нечто подобное, что не имеет большого значения, ничего страшного, все в порядке, используем полученный файл, он полностью нормальный и рабочий. Главное если файл появляется, значит программа была успешно сделана и может быть использована. Напоминаю Как прошивать.

Также надо прошить fuse-биты настроек микроконтроллера, чтобы изменить его тактовую частоту на совместимую с USB стандартом. Встроенной подходящей частоты нет, поэтому применяется внешний источник тактовой частоты 12 МГц. Для прошивки настроек fuse-битов устройство с программатором надо доработать, подключить к микроконтроллеру внешний кварцевый генератор 12 МГц и 2 конденсатора 20 пФ по схеме как на устройстве USB, т.е. в случае с ATTiny2313A к линиям PA1 и PA0, и также соединить это всё с минусом питания, вообщем как на схеме USB устройства, смотрите на фото ниже как подключено. Это нужно для того, чтобы устройство продолжило работу после установки для него нового источника тактового сигнала, именно этот источник 12 МГц и подключаем. Не забудьте кроме программы также прошить fuse-биты.

Меняем настройки программатором

Доработка программатора для прошивки настроек USB

Программатор USBasp купить
210
РУБ.
ШТ.
КУПИТЬ
Микроконтроллеры: AVR
Кварцевый генератор 12 купить
5
РУБ.
ШТ.
КУПИТЬ
Частота: 12 МГц
Тип: пассивный
Конденсатор 20 pF купить
4
РУБ.
ШТ.
КУПИТЬ
Емкость: 20 pF
Тип: Керамический
Макс. напряжение: 50 V
Мини макетная плата купить
55
РУБ.
ШТ.
КУПИТЬ
Размер: 17 x 2 горизонтальных линий
Зажим на 20 гнезд купить
65
РУБ.
ШТ.
КУПИТЬ
Гнезда: 10 x 10
 
При этом установите такие биты конфигурации:

Для ATtiny2313A (наш случай):
CKSEL0..3=1111   SUT0..1=10   CKOUT=1   CKDIV=1   RSTDISBL=1   BODLEVEL2..0=101   WDTON=1   SPIEN=0   EESAVE=1   DWEN=1

Установите В справочнике эти fuse-биты и прошейте их в микроконтроллер полученной строкой через программу AVR dude, о том Как прошить тут. Также дам на всякий случай fuse-биты для других микроконтроллеров.

Для ATmega8A:
CKSEL0..3=1111   SUT0..1=10   BODEN=0   BODLEVEL=1   BOOTRST=1   BOOTSZ0..1=00   EESAVE=1   CKOPT=0   SPIEN=0   WDTON=1   RSTDISBL=1

Для ATmega16A:
CKSEL3..0=1111   SUT0..1=10   BODEN=0   BODLEVL=1   BOOTRST=1   BOOTSZ0..1=00   EESAVE=1   CKOPT=0   SPIEN=0   JTAGEN=1   OCDEN=1   LB1..2=00   BLB=0000

Теперь когда программа написана и записана в микроконтроллер, можно проверить правильность сборки устройства. Напишите программу на компьютер для USB связи, читайте далее как это сделать и при этом в процессе будет установлен фильтр для возможности опознания устройства. Подключите устройство к USB порту компьютера, установите фильтр как далее будет описано, если все правильно было собрано и установлено, то оно будет обнаружено и опознано как LEDCtlHID. Если этого не произошло, то ищите проблему и ошибки при сборке устройства или при установке программ, еще раз внимательно все сверьте и проверьте, что ничего не пропущено и что все контакты соединены или запаяны как надо. Бывает проблема тут, если пайка была совершена с неконтактами, с не правильными контактами или не всеми контактами, а также что элементы схемы были повреждены высокой температурой паяльника, и устройство поэтому не работает. Важно собирать устройство именно на макетной плате первый раз.

Программа на компьютер для USB связи

Для начала сделаем простую консольную программу, потом будем делать программу с окнами.

1) Скачиваем исходные коды консольной программы OpenRobo, которые собраны из исходников проектов V-USB и LibUSB. Распаковываем архив на диск C:\, после чего содержимое директории C:\OpenRobo должно выглядеть так:
Назначение файлов:
include и lib - это драйверы LibUSB для доступа к USB из программы
set-led.c - это исходник нашей программы

2) Скачиваем программу LibUSB, которая нужна для работы с устройством из программы. Устанавливаем. Сайт разработчика LibUSB. После установки подключите собранное устройство к USB. Запустите через меню Пуск/Программы/LibUSB-Win32/Filter Wizard. В открывшейся программе выберите Install a device filter для установки фильтра на порт, в следующем списке выберите только что подключенное устройство, его можно найти по vid:16c0 pid:05df. Нажмите кнопку Install. Если устройства в списке нет, значит вы либо не правильно собрали устройство и оно не опозналось, либо драйверы уже были установлены. В случае смены порта подключения устройства, надо опять заходить и устанавливать фильтр, иначе программа не сможет распознать устройство. Обязательно подключайте устройство USB к тому же порту USB, что был подключен при установке фильтра!

3) Скачиваем программу MinGW, которая нужна для сборки программы из исходника. Устанавливаем. Сайт разработчика MinGW. После установки зайдите в Панель управления, Система, Дополнительные параметры системы, Дополнительно (вкладка), Переменные среды (кнопка), Системные переменные (список), Переменная Path (найти в списке, выделить, нажать кнопку Изменить). Дописываем в поле Значение переменной в конце ;c:\MinGW\bin\ и нажимаем ОК, надеюсь вы установили MinGW в C:\MinGW, иначе надо путь другой прописать.

Настраиваем системную переменную Path для MinGW

Настраиваем системную переменную Path для MinGW

4) Запускаем командную строку Windows, которая находится тут c:\Windows\System32\cmd.exe
В этом окне вводим 2 команды (набираем команду, нажимаем enter):

Это команды для командной строки Windows, которая находится здесь C:\Windows\System32\cmd.exe, команды набираются вручную по одной строке и в конце каждой строки необходимо нажать клавишу EnterКомандная строкаКомментарии
1
2
cd c:\OpenRobo  
make
Переходим в директорию OpenRobo
Запускаем подготовку программы для компьютера

Если выходит ошибка, что команды make нет, значит вы не установили выше указанную программу WinAVR, сделайте это. Если выходит ошибка, что команды gcc нет, значит не прописан правильно путь в системную переменную Path, сверьте со скриншотами то как прописано у вас, также возможно командная строка была запущена до прописывания пути, надо перезапустить.
 

Подготовка программы ПК

Подготовка программы ПК

5) Теперь смотрим в директорию C:\OpenRobo, там появился готовый файл программы set-led.exe. Не выходим из cmd, здесь же теперь мы можем набрать команды запуска программы и получить результаты:

Это команды для командной строки Windows, которая находится здесь C:\Windows\System32\cmd.exe, команды набираются вручную по одной строке и в конце каждой строки необходимо нажать клавишу EnterКомандная строкаКомментарии
1
2
3
set-led on  
set-led off  
set-led status
Включает светодиод
Отключает светодиод
Показывает включен или отключен светодиод

7) Если все сделано правильно, то при подключении USB устройства и наборе команд в консоле, светодиод будет включаться и выключаться.

Изменяем программы под наши нужды

Берём под контроль все порты, прибавляем свои функции. И так, теперь в C:\OpenRobo размещены исходные коды программы для компьютера, а в C:\OpenRoboFW исходные коды программы для микроконтроллера. Их можно изменять, но после каждого изменения надо их занова пересобирать (и перепрошивать микроконтроллер), делать это теперь вы умеете - см. выше пример - пересобрать обе программы можно 4-мя командами в cmd:

Это команды для командной строки Windows, которая находится здесь C:\Windows\System32\cmd.exe, команды набираются вручную по одной строке и в конце каждой строки необходимо нажать клавишу EnterКомандная строкаКомментарии
1
2
3
4
cd c:\OpenRoboFW  
make hex  
cd c:\OpenRobo  
make
Переходим в директорию OpenRoboFW
Запускаем подготовку программы для микроконтроллера
Переходим в директорию OpenRobo
Запускаем подготовку программы компьютера

Нам нужно подключить к управлению все порты микроконтроллера Attiny2313. Свободных линий портов у нас получается 13 штук, под контролем находится сейчас только 1 линия, светодиод подключен к ней. Возьмём под контроль все 13 линий.

Изменение программы для микроконтроллера

1) Открываем файл C:\OpenRoboFW\main.c, находим там область кода, обозначенную как настройка портов, надо установить все свободные порты на вывод командами DDR, меняем содержимое области на следующий код. Код для main.c:

Это программа для микроконтроллера AVR, которая создана в программе WinAVRПрограмма Комментарии
1
2
3
4
5
6
DDRB = 0b11111111;  
DDRD |= _BV(0);  
DDRD |= _BV(1);  
DDRD |= _BV(3);  
DDRD |= _BV(5);  
DDRD |= _BV(6);
Настроили порт B на вывод записав единицы в DDR
Порт D не весь настраиваем, а по одному биту вбиваем единицы таким образом на биты 0, 1, 3, 5 и 6

Небольшое пояснение этого кода - порт B полностью свободен, все его разряды сразу ставим на вывод, порт A полностью занят, его не трогаем, порт D частично занят, поэтому на вывод ставим только свободные разряды, которые тут и перечисляем - 0, 1, 3, 5, 6.

2) Открываем файл C:\OpenRoboFW\main.c, находим область кода, обозначенную как программа реакции на USB пакет, сделаем, чтобы по команде зажигались светодиоды на всех свободных линиях. Меняем содержимое области на... Код для main.c

Это программа для микроконтроллера AVR, которая создана в программе WinAVRПрограмма Комментарии
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (p1==1) {  
 
PORTB = 0b11111111;  
PORTD |= _BV(0);  
PORTD |= _BV(1);  
PORTD |= _BV(3);  
PORTD |= _BV(5);  
PORTD |= _BV(6);  
 
} else {  
 
PORTB = 0b00000000;  
PORTD &= ~_BV(0);  
PORTD &= ~_BV(1);  
PORTD &= ~_BV(3);  
PORTD &= ~_BV(5);  
PORTD &= ~_BV(6);  
 
}
Если первое число пришло 1
Записываем единицы в порт B и в части порта D
Если первое число пришло другое
Записываем нули в порт B и в части порта D

Пересобираем и перепрошиваем, убеждаемся, что светодиод работает на всех линиях.

К тому же неплохо бы научится вставлять свои функции, которые будут выполняться по вашим командам, пока есть только on, off, status, нужно добавить еще команд, например добавим команду discoteka, по которой будет вызываться какая-нибудь наша функция в микроконтроллере, например - светодиоды горят через один на порте B. Добавим в микроконтроллере обработку дополнительных кодов, пусть это будет код 2, т.к. 1 и 0 уже используются для функций on и off, из программы для компьютера будем посылать потом микроконтроллеру код 2 функцией, вызываемой по команде discoteka. Опять меняем файл C:\OpenRoboFW\main.c, область реакции... Код для main.c

Это программа для микроконтроллера AVR, которая создана в программе WinAVRПрограмма Комментарии
1
2
3
4
5
6
7
8
9
if (p1==1) {  
PORTB = 0b11111111;  
 
} else if (p1==2) {  
PORTB = 0b10101010;  
 
} else {  
PORTB = 0b00000000;  
}
Если пришла единица
Включить весь порт B
Если пришла двойка
Включить биты порта B через один
Если пришло другое
Вылючить весь порт B

Вставляем обработку кодов таким образом, старые коды 1 и 0 как видите сохранили свои функции (зажечь / потушить светодиоды) и появился еще новый код 2, по которому на порте B выставляется состояние, при котором светодиоды через один горят. Таким же образом можно сюда поставить любые другие коды и написать для них необходимые функции.

Изменение программы для компьютера

1) Открываем файл C:\OpenRobo\set-led.c

2) Надо научиться отправлять микроконтроллеру более сложные сообщения, при приеме которых он будет выполнять нужные функции. Сейчас отправляется только 2 сообщения в переменной isOn - 0 = выключить светодиод, 1 = включить светодиод. Научимся отправлять также код 2 = выставить светодиоды через один на порте B (в предыдущем примере мы подготовили микроконтроллер для обработки этого кода, теперь просто пошлём его программой с компьютера).

3) Редактируем файл set-led.c вставляем сверху от строчки

 Программа
1
} else if ((isOn = (strcasecmp(argv[1], "on") == 0)) || strcasecmp(argv[1], "off") == 0) {

следующий код, который добавляет новый код вызова 2 для функции микроконтроллера

 Программа
1
2
3
4
} else if (strcasecmp(argv[1], "discoteka") == 0) {  
fprintf(stderr, "Every body dance now!\n");  
cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 2, 0, buffer, 0, 5000);  
if (cnt < 0) {fprintf(stderr, "USB error: %s\n", usb_strerror());}

Код отправляет команду 2 микроконтроллеру, что вызывает там запуск дискотеки. Пересобираем программу для компьютера и нам становится доступна новая команда - discoteka. Таким образом можно вставить любые другие коды и функции для них. В C++ есть функция Sleep(1000); она задаёт задерку выполнения в милисекундах, например 1000 - это 1 секунда. Она полезна, с ней также можете сделать светодиоды мигающими. В будующем эта функция пригодится.

Обратите внимание на функцию usb_control_msg, в ней можно передать 2 изменяемых параметра (в первом у нас передаётся 2 или переменная isOn, которая равна 1 или 0), следующее число (там стоит 0) может передать еще 1 значение, например, 1 переменная может быть всё также быть изначальной командой на on или off, а второй переменной можно передать, например, номер порта, который следует включить. Получить доступ к этим параметрам в программе для микроконтроллера можно по именам p1 и p2, для этого примера p1=2, p2=0.

Как сделать программу для Windows

Чтобы создать программу для Windows, скачайте бесплатное средство разработки программ для Windows Microsoft Visual C++ 2010 Express. На указанной странице найдите в середине где-то по названию продукт Microsoft Visual C++ 2010 Express и установите его. Но перед этим проверьте, что у вас не установлена программа .NET Framework версии выше 4. Если такая установлена в вашей системе - перед установкой удалите ее. В комплекте будет поставлен фреймворк нужной версии 4 автоматом. Иначе у вас не будут работать проекты, будет возникать ошибка - Microsoft Resource File To COFF Object Conversion не работает при попытке компиляции проекта. Windows update автоматом попытается поставить последнюю версию .NET Framework, нужно такую установку отменить - не перезагружать компьютер с новыми обновлениями, а зайти в Windows Update и снять галочку напротив фреймворка.

1) Заходим на сайт, выбираем русский язык, нажимаем INSTALL NOW.
2) После установки запускаем, нажимаем Создать проект. Для начала создадим простую программу с 1 кнопкой - нажимаем эту кнопку, текст в ней меняется.
3) Выбираем шаблон Приложение Windows Forms, внизу вводим название программы, нажимаем OK.
4) Перетаскиваем справа элемент Button на центральное окно с формой и оставляем его внутри формы.
5) Кликаем на форму и на кнопку, при этом справа внизу есть окно Свойства, его содержимое меняется. В этом окне задаём необходимые свойства элементов - текст кнопки и окна. Редактируем свойство Text, пишем там любой текст, например, Моя кнопка. Текст на кнопке меняется, это видно на форме в центральном окне.
6) Теперь сделаем так, чтобы при нажатии на эту кнопку, ее свойство, которое определяет текст на ней менялось на другое. Так же можно менять любые другие свойства.
7) Делаем двойной клик на кнопке Моя кнопка, которая находится в форме в центральном окне, попадаем в файл кода Form.h (его можно выбрать в любое время слева в меню). В этом файле после двойного клика была создана функций button1_Click (остальной код автоматом был создан по шаблону при создании проекта), курсор находится внутри нее, нажмите Enter, чтобы создать пустую строку, куда и будем писать код.
8) Как можно видеть в этом же файле чуть повыше есть разделы - button1 и form1, там заданы начальные установки для элементов - кнопки и формы. Воспользуемся ими, скопируем внутрь нашей функции клика по кнопке (это место отмечено красной стрелкой) строчку, где устанавливается название кнопки, а именно this->button1->Text = L"Моя кнопка";   Только текст Моя кнопка изменим на Работает!
9) Нажимаем на кнопку с зеленым треугольником, через некоторое время наша программа запустится (если вы не совершили ошибок) и при нажатии на кнопку, текст внутри меняется с Моя кнопка на Работает!
10) Забрать готовую программу (файл .exe) можно в директории текущего пользователя ...Documents\Visual Studio 2010\Projects\Управление роботом\Debug
Весь процесс показан на картинках.

Делаем свою программу для Windows, из которой будем управлять устройством USB

Делаем свою программу для Windows, из которой будем управлять устройством USB

Перенос программы для USB в Windows Forms. Я перенес программу управления из консольного приложения в приложение с окнами Windows и немного улучшил её - сделал управление шаговым двигателем в дополнение к управлению светодиодом, добавил горячие клавиши запуска двигателя в определенном направлении с заданным количеством шагов, управляющие сигналы драйвера шагового двигателя подключены к портам PB7 (шаг), PB6 (направление), PB5 (питание), светодиод подключен к порту PB0. Вы можете просто скачать мой проект для Microsoft Visual C++ 2010 Express Edition (русская версия) и посмотреть как я это сделал.

Тех. поддержка ответит на ваши вопросы по этой статье
phpinbox@yandex.ru
Перейти к следующей теме обучения
Как сделать перемещение инструментов для работы
 
Регистрация
Для новых людей