Как стать автором
Обновить

Комментарии 17

Спасибо большое за пост, как раз то чего мне не хватало, учитывая что у меня китайский клон и нет площадок на днище, а про хитрость с перемычкой нигде не видел. Но не совсем понял про «Прошиваем загрузчик Arduino, usb контроллер ATmega8U2». Можно немного подробнее, а то в тексте запутался. Если я правильно понял то нужен специальный hex файл с эмуляцией хид устройства, если так, то можно зааттачить к посту этот хекс? И как восстановить оригинальную прошивку для ATmega8U2 если вдруг захочется откатится? если есть оригинал, то можно ли его тоже зааттачить к посту. И с удовольствием бы посмотрел исходник ардуиновского скетча. Заранее спс)

И правильно ли я понял порядок:
1) Пишем обычный скетч в ардуино иде с приминением библиотеки.
2) Через иде заливаем скетч на ардуино
3) переключаем в режим DFU
4) через флип заливаем специальную прошивку для ATmega8U2 чтобы ардуино определялось как юсб устройство?
Доброго времени суток. Это мой первый пост, прошу сильно не «ругать».
В статье есть ссылка на скетч.
1) Пишем обычный скетч в ардуино иде с приминением библиотеки.
2) Через иде заливаем скетч на ардуино
3) переключаем в режим DFU
4) через флип заливаем специальную прошивку для ATmega8U2 чтобы ардуино определялось как юсб устройство?
Вы все правильно поняли, так и нужно делать. Hex файлы я выложил вместе со скетчем. В репозитории находятся 3 файла:
Arduino-HID-Bot-2048.ino — скетч для Arduino UNO для игры в 2048.
Arduino-keyboard.hex — этот hex файл заливаем при помощи FLIP для перевода arduino в режим USB клавиатуры (но сначала нужно залить основной скетч).
Arduino-usbserial-uno.hex — этот hex файл нужен для того чтоб обратно вернуть Arduino UNO. Заливаете через FLIP этот hex файл и ваш Arduino уже как и раньше определяется компьютером.
«Прошиваем загрузчик Arduino, usb контроллер ATmega8U2» — извиняюсь, тут я немного слукавил, я имел в виду тот факт, что главным отличием Arduino UNO является новый контроллер USB Atmel ATmega8U2, который заменяет собой устаревший примитивный чип FTDI, обладает низкими задержками и самое главное, даёт возможность перепрограммировать USB-интерфейс таким образом, чтобы плата Arduino Uno определялась компьютером как MIDI-устройство, клавиатура, мышь (HID-инфтерфейс) и так далее — на что хватит вашей фантазии.
Большое спасибо!!! Теперь я понял. :) кстати попробовал поиграться с перемычкой и проводом. В итоге мне замыкание провода на резистор не понадобилось. Просто поставил перемычку, подключил ардуино к пк и снял перемычку.

Еще у меня в китайском ардуино стоит не 8 мега а 16, так она определилась и так во флипе использовал. :) но под нее подошла прошивка от 8ки. Теперь сделаю троллинг бокс для коллеги :)
А как загрузить другой скетч? Перепрошить обратно на USB-to-serial, залить скетч и перепрошить на HID?
Да, все верно. Прошиваете через FLIP usb-to-serial и заливаете в ардуину скетч) Если у вас 2 ардуинки то можете не мучиться (постоянно перепрошивая ардуинку), на одной ардуинке писать скетчи и заливать в МК потом этот МК ставить в другую ардуинку которая в режиме HID-устройства. Так будет быстрей)
Понятно. Спасибо за ответ :) Я слышал, что есть ардуино с возможностью изменять режим работы USB через скетч. Вы не знаете ничего по этому поводу?
Разнообразие плат на основе ардуино великое множество) особенно тех которые производятся в Китае (там их просто море) с разными дополнениями, расширениями и т.д. Если и есть такая плата которая может изменять режим работы USB-контроллера в самом скетче (такие мне не встречались), то сама реализация работы платы с USB должна быть на том же контроллере где находится основная прошивка (скетч). В Arduino UNO — 2 контроллера один для работы USB, на другом находится скетч и вся переферия. Первое что можно предложить это платы Teensy — их можно прошивать на лету хоть в клавиатуру, мышь или джойстик)) вот статьи по ним:
Боевой HID-эмулятор на Arduino
Using USB Keyboard
Тест скорости передачи данных USB
USB: Keyboard
Цена на Teensy варьируется от 1000-2500 рублей, в зависимости от версии и магазина.
А как Arduino «играет»? Оно как то видит обстановку на игровом поле, или постоянно отправляет нажатия случайных стрелок? Статью следовало бы назвать «Arduino эмулирует клавиатуру», а не так громко. Где брали прошивку для эмуляции клавиатуры?
О том что творится на поле Arduino ничего не знает, а лишь отправляет нажатия клавиш в заданном порядке. В статье я писал что являлось целью:
Цель была достаточно простой: написать скетч для Arduino UNO, который будет эмулировать нажатие клавиш стрелок на клавиатуре. Чтоб при подключении устройства к компьютеру запускался скетч и на мониторе стали передвигаться циферки игры 2048.
Прошивку я нашел на англоязычном форуме, на каком точно уже не помню, т.к. это устройство я собирал еще в начале апреля.
Если интересно, то простейший алгоритм: вверх, вправо, вниз, влево на поле 8x8 работает очень хорошо: у меня он работал несколько суток, набрал 16 654 310 032 очков, потом я нечаянно браузер закрыл, а так бы он еще работал и работал — поле было меньше чем на половину заполнено. Правда, я своего робота просто в консоли в хроме написал на js.

Команда для консоли: window.setInterval(function(){for(var i=0;i<200;i++){GM.move(0);GM.move(1);GM.move(2);GM.move(3);};},10);
ругается, говорит что:
Uncaught ReferenceError: GM is not defined
(anonymous function)
На самом деле, всё ещё проще. Там есть встроенный игровой бот. Он делает ходы в случайном направлении.
Включается так (команды надо набрать в консоли):
Первая команда инициализирует временной интервал для setInterval():

auto_move_time = 10; // 10 миллисекунд можно заменить на своё значение.

Вторая команда:

start_auto_move(); // запускает самоиграйку.
www.csie.ntu.edu.tw/~b01902112/9007199254740992/ — Works on my machine
А можно просто купить Teensy
Не хватает как минимум ссылки на 8 на 8 версию…
Большое спасибо за пост! Как раз по работе нужно было автоматически понажимать кнопки на 50+ компах, теперь я знаю, как это сделать. Уже заказал Uno rev3 (кстати, на офсайте написано, что на rev3 вроде как достаточно поставить перемычку для перевода в режим DFU).
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.