Keyboard

Тема в разделе "Arduino & Shields", создана пользователем Arduiner001, 21 июл 2015.

  1. Arduiner001

    Arduiner001 Гик

    Открыл стандартный пример "Файл - образцы - USB - Keyboard - KeyboardMessage". При компиляции ошибка "Поддержка клавиатуры только в Arduino Leonardo", хотя у меня есть прошивка для меги8, чтобы мега8 работала на вывод данных как "клавиатура", и я знаю как её туда вшить. Вопрос таков: Как обмануть Arduino IDE и заставить думать, что я подключил к ней leonardo а не uno?
     
  2. Deniss

    Deniss Гик

    При прошивке 8меги, она будет определяться как Leonardo, соответственно обманывать даже ну нужно.
     
  3. Deniss

    Deniss Гик

    Еще можно в arduino-1.6.5-r2\hardware\arduino\avr\boards.txt пошаманить
     
  4. Arduiner001

    Arduiner001 Гик

    Залил прошивку в мегу8, в диспетчере устройств теперь ардуина определяется как "Клавиатура HID"(в принципе так и надо, имхо). В Arduino IDE выбрал инструменты - плата - ардуино леонардо. При заливке прошивки пишет "Не вижу" (да, да, именно "не вижу"!) "плату на порте COM3". Откатил мегу8 назад побыстрее. Как всё-таки обмануть IDE?
     
  5. Deniss

    Deniss Гик

    У меня плата одновременно определяется как Клавиатура Hid и как Arduino Leonardo COM порт
     
  6. Deniss

    Deniss Гик

    Ищи другую прошивку меги8 (чтоб было 2 устройства) или редактируй arduino-1.6.5-r2\hardware\arduino\avr\boards.txt нужно поиграться, чтоб угадать нужные параметры:
    uno.build.board=AVR_UNO меняем на AVR_LEONARDO
    leonardo.build.variant=standard -> leonardo
    и т.д.

    ЗЫ. Если даже подберешь правильные параметры в boards.txt, то будешь мегу8 прошивать в hid - com каждый раз когда заливаешь скетч...

    ЗЫ.ЗЫ. Как вариант шить hex файлы программатором сразу в atmega328
     
  7. Arduiner001

    Arduiner001 Гик

    А зачем нужны эти строки в boards.txt?:
    Код (Text):
    uno.vid.0=0x2341
    uno.pid.0=0x0043
    uno.vid.1=0x2341
    uno.pid.1=0x0001
    uno.vid.2=0x2A03
    uno.pid.2=0x0043
     
  8. Deniss

    Deniss Гик

    По этим цифрам компьютер идентифицирует оборудование
    Примерно так:
    vid.0=0x2341 это самсунг
    uno.pid.0=0x0043 это принтер
    uno.vid.1=0x2341 модель
    В общем по этим данным комп ищет дрова, на устройство.
    Поставь от другого оборудования и будет устройство определяться как, то откуда ты это скопировал...

    ЗЫ. Эти данные по идее в megu8 шьются, а тут, возможно они нужны только для того чтоб ты в принтер случаем скетч не зашил;)
     
  9. Arduiner001

    Arduiner001 Гик

    В общем, всё готово. Проверьте, пожалуйста:
    Код (Text):
    ual.name=Arduino Uno as Arduino Leonardo

    ual.vid.0=0x2341
    ual.pid.0=0x0043
    ual.vid.1=0x2341
    ual.pid.1=0x0001
    ual.vid.2=0x2A03
    ual.pid.2=0x0043

    ual.upload.tool=avrdude
    ual.upload.protocol=arduino
    ual.upload.maximum_size=32256
    ual.upload.maximum_data_size=2048
    ual.upload.speed=115200

    ual.bootloader.tool=avrdude
    ual.bootloader.low_fuses=0xFF
    ual.bootloader.high_fuses=0xDE
    ual.bootloader.extended_fuses=0x05
    ual.bootloader.unlock_bits=0x3F
    ual.bootloader.lock_bits=0x0F
    ual.bootloader.file=optiboot/optiboot_atmega328.hex

    ual.build.mcu=atmega328p
    ual.build.f_cpu=16000000L
    ual.build.board=AVR_LEONARDO
    ual.build.core=arduino
    ual.build.variant=standard
    ual - значит "uno as leonardo"
     
  10. Deniss

    Deniss Гик

    ual.build.variant=standard возможно нужно leonardo
    в общем пробовать, пробовать и пробовать ;)
     
  11. Arduiner001

    Arduiner001 Гик

    Да, Вы правы! В boards.txt есть строчка
    Код (Text):
    leonardo.build.variant=leonardo