Клавиатура не найдена. Убедитесь, что эскиз включен в код. Включите клавиатуру h
Обновлено: 21.11.2024
Если здесь нет ответа на ваш вопрос, задайте его на форуме. PJRC следит за форумом и делает все возможное, чтобы ответить на вопросы клиентов.
Вы должны опубликовать код или сведения, необходимые для воспроизведения проблемы. Пожалуйста, ознакомьтесь с правилами публикации. Всего несколько минут на составление подробного вопроса обычно помогают гораздо лучше.
Краткий справочник Teensy: примеры кода, советы и рекомендации содержит список полезных ресурсов и решений для многих распространенных проектов.
Наиболее распространенные проблемы
Ненадежная связь
Некоторые концентраторы USB имеют проблемы с обработкой быстрой последовательности событий подключения/отключения при программировании Teensy. Большинство концентраторов работают нормально, но некоторые из них могут вызвать очень странные проблемы. Если у вас возникли проблемы, всегда пытайтесь подключить Teensy напрямую с помощью качественного USB-кабеля.
Teensy 3.0 не распознается Teensy Loader
Teensy Loader 1.07 — первая версия, поддерживающая Teensy 3.0. Вы можете проверить версию, используя Help > About. Версия 1.07 является частью установщика Teensyduino. Он автоматически запускается, когда вы нажимаете «Загрузить» или «Проверить» в Arduino.
Совершенно новый Teensy не распознан
- Сначала перезагрузите компьютер и удалите все схемы, подключенные к Teensy.
- Светодиод должен мигать при подключении USB-кабеля. Каждая модель Teensy предварительно запрограммирована на программу мигания светодиода во время тестирования продукта. Для мигания светодиода не требуется никаких драйверов или программного обеспечения на вашем компьютере. Необходимо только питание от кабеля USB. Если светодиод не мигает, проверьте напряжение на плате с помощью вольтметра или попробуйте другой кабель или USB-порт и избегайте любых USB-концентраторов. Если светодиод никогда не мигает, не беспокойтесь о драйверах или программном обеспечении. Если светодиод не мигает, это означает, что на плату не подается питание!
- При нажатии кнопки светодиод должен перестать мигать. Никакое программное обеспечение или драйверы на вашем компьютере не требуются, чтобы кнопка перестала мигать светодиодом. Когда светодиод мигает, а кнопка прекращает мигание, это очень хороший показатель того, что ваше оборудование Teensy работает правильно.
- Когда светодиод перестанет мигать, если программа Teensy Loader запущена, она должна обнаружить плату Teensy. Сообщение «Нажмите кнопку для активации» исчезнет, и изображение покажет, какая плата присутствует. Для этого не нужно устанавливать драйверы на Windows или Mac. В Linux должен быть установлен файл правил udev. Если светодиод мигает, а кнопка перестает мигать, но Teensy Loader так и не обнаруживает вашу плату, а вы выполнили описанные выше действия, проблема почти наверняка связана с неисправным кабелем USB. Многие USB-кабели, предназначенные для зарядки устройств, имеют только провода питания, но не линии передачи данных.
- В Windows установка драйвера необходима только для использования последовательного монитора Arduino, когда Teensy реализует последовательное устройство (из меню «Инструменты» > «Тип USB»), и для автоматического перепрограммирования с помощью «Загрузки», когда Teensy запрограммирован как последовательный. Без драйвера через 5 секунд после того, как вы нажмете «Загрузить», появится сообщение с просьбой нажать кнопку на вашем Teensy. Windows может выдавать вводящие в заблуждение ошибки, указывающие на то, что драйверы должны быть установлены, но НИКАКОЙ ДРАЙВЕР НЕ НУЖЕН в Windows, чтобы просто заставить Teensy Loader распознать ваш Teensy и запрограммировать новый код. Выполните шаги 1–3 выше, прежде чем беспокоиться о драйверах!
Teensy не распознается Teensy Loader
- Физически отключите Teensy.
- Перезагрузите компьютер (лучше полностью отключить питание)
- Убедитесь, что приложение Teensy Loader запущено.
- Удерживайте нажатой кнопку сброса перед подключением USB-кабеля.
- Подключите USB-кабель, продолжая удерживать кнопку.
- После того, как кабель будет полностью вставлен, отпустите кнопку.
В системах Windows иногда сообщается о "странных" проблемах, когда Windows не обнаруживает новые устройства. Не похоже, что это уникально для Тинси. Создание новой учетной записи пользователя иногда решает проблему. Также может помочь подключение кабеля к разным USB-портам. Перезагрузка всегда хорошая идея. Лучше всего попробовать на компьютере с Mac или Linux или на другом компьютере с Windows.
Нет последовательного порта во время программирования
Платы Arduino представляют собой последовательное устройство для всего программирования и связи. Arduino остается подключенным как последовательное устройство во время перезагрузки. Teensy — это родное USB-устройство. Опыт устранения неполадок Arduino не распространяется на Teensy!
Во время программирования Teensy отображается как HID-устройство. Когда Teensy перезагружается, электрически ваш компьютер видит, что Teensy отключен, как если бы кабель был физически отключен. Когда Teensy начинает запускать вашу программу, USB отключается.
Примеры быстрого и медленного мигания светодиода не включают USB-порт.
Когда программы используют USB, тип устройства Teensy зависит от загруженного вами кода.Ваш компьютер увидит подключение нового USB-устройства, когда ваша программа начнет использовать USB-порт. В Arduino тип устройства управляется меню Tools > USB Type. В языке C используемый вами USB-код определяет тип устройства. Программа hid_listen реагирует только на определенные программы C. При устранении неполадок вы должны искать тип устройства, которое реализует ваша программа.
TODO: список кодов C и типов устройств Teensyduino, номера VID/PID для каждого.
Кнопка не сбрасывает приложение
Кнопка позволяет вручную перевести Teensy в режим программирования. С Arduino это происходит автоматически, когда вы нажимаете «Загрузить». Но если ваш код отключает порт USB, отключает прерывания или переходит в режим глубокого сна, который останавливает ЦП, Teensy не сможет ответить на запрос перезагрузки через USB.
Каждый Teensy оснащен физической кнопкой, позволяющей восстановить работу программы, которая не отвечает.
Эта кнопка НЕ перезапускает приложение Teensy. Однако, если Teensy подключен к вашему компьютеру, а загрузчик Teensy запущен и настроен на автоматический режим (по умолчанию при использовании с Arduino), нажатие кнопки войдет в режим программирования. Teensy Loader быстро перепрограммирует и перезапустит ваш Teensy. Этот перезапуск вашего приложения связан с «автоматическим» режимом Teensy Loader, а не только с кнопкой.
Светодиод мигает зеленым или синим
У вас поддельная доска. PJRC никогда не производила Teensy с зеленым или синим светодиодом. Если вы купили с помощью Ebay и Paypal, мы рекомендуем вам немедленно начать спор на веб-сайте Paypal. Не спешите связываться с продавцом. Они уже обманули многих людей бракованными платами, но им просто все равно. Спор на Paypal - единственный способ вернуть свои деньги. Чем раньше вы подадите спор, тем выше ваши шансы на возврат средств. Мы рекомендуем подождать, чтобы оставить отрицательный отзыв, пока Paypal не вернет вам деньги.
Большие программы загадочным образом аварийно завершают работу
В Teensy 2.0 компилятор помещает строковые константы в оперативную память. Если у вас их много, оперативная память может быстро закончиться. В Arduino вы можете использовать F(), чтобы строки, используемые с print(), не использовали оперативную память.
В языке C обычно используется PSTR(), и должны вызываться специальные функции, которые обращаются к флэш-памяти. Часто они имеют суффикс "_P".
Большие таблицы данных или массивы также могут вызывать проблемы. Если данные постоянны, можно использовать PROGMEM и pgm_read_byte(). Подробнее см. в руководстве по avr-libc.
Teensy LC, 3.0, 3.1 не имеют этой проблемы. Переменные, определенные с помощью "const", размещаются только во флэш-памяти, но к ним можно получить обычный доступ. Эти специальные шаги требуются только для старых 8-битных плат на базе AVR, чтобы строки и переменные только для чтения не занимали ограниченное количество оперативной памяти.
Windows: Драйвер последовательного порта установлен, но не используется
В Windows, даже если программа установки последовательного драйвера работает правильно, иногда Windows сохраняет старую информацию в своем реестре и не может загрузить драйвер. Диспетчер устройств покажет "USB Serial" с ошибкой вместо "USB Serial (класс связи, абстрактная модель управления)" с назначенным номером COM-порта.
- Запустите программу серийной установки еще раз или запустите программу установки Teensyduino и используйте опцию обновления драйвера на первом этапе.
- Нажмите кнопку «Обновить драйвер» в диспетчере устройств. Если программа установки драйвера запущена, Windows должна найти драйвер.
- Подключите кабель к другому порту USB. Реестр Windows обрабатывает каждый физический порт с помощью отдельных записей реестра.
- Выполните и/или все вышеперечисленное с подключенным устройством или без него. Иногда Windows будет действовать по-разному, если устройство присутствует или отсутствует.
Если «USB Serial» вообще нет, помните, что Teensy становится последовательным устройством только тогда, когда это запрограммировано. См. «Нет последовательного порта во время программирования» выше.
Windows 7: неизвестное устройство (код 43)
Windows «Код 43» — загадка. Другие устройства, даже Apple iPod, столкнулись с этой проблемой. Решение похоже на полное отключение питания, а если ноутбук, извлеките аккумулятор на несколько минут. Об этом же решении сообщалось несколько раз с успехом.
Эта ошибка с кодом 43 является загадкой. Это может быть связано с тем, что ноутбуки переходят в режим ожидания? Если у вас есть идеи, свяжитесь с нами!
Питер Раутенбах обнаружил случай, когда программирование неправильного HEX-файла (скомпилированного для другого чипа) вызывало ошибку 43.
Windows: окно загрузчика Teensy не появляется
- Windows 7: удерживая клавишу Shift, щелкните правой кнопкой мыши загрузчик Teensy на панели задач.
Windows Vista и XP: щелкните правой кнопкой мыши загрузчик Teensy на панели задач. - Выберите "Переместить".
- Используйте клавиши со стрелками на клавиатуре, чтобы переместить окно, пока оно не появится.
Дополнительная информация от Гилберта Херсшенса:
"Поскольку вы не видите отсутствующее окно, вы не будете знать наверняка, видимо оно или скрыто. Но вы можете увидеть это в контекстном меню. Когда окно отображается на отсутствующем дисплее, пункт меню «Переместить» будет активен, а пункт «Восстановить» будет выделен серым цветом. Когда он скрыт, все будет как раз наоборот. Вы можете перемещать окно только в его видимом состоянии. Чтобы скрыть или показать окно, вы можно щелкнуть значок на панели задач, чтобы изменить его состояние, или использовать соответствующие пункты контекстного меню.
Linux: набор инструментов Gentoo и Arch AVR
Если вы запускаете avr-gcc с make-файлом, загрузите Arduino 1.0.1 и установите $PATH для доступа к набору инструментов в каталоге arduino-1.0.1/hardware/tools/avr/bin.
Linux: большая задержка перед обнаружением последовательного порта USB
В некоторых системах Linux последовательный порт USB обнаруживается очень медленно. Ядро быстро обнаруживает устройство (обычно видно с помощью «tail -f /var/log/messages»), но файлы устройства не появляются очень долго.
Отредактируйте "/lib/udev/rules.d/77-nm-probe-modem-capabilities.rules", добавив эту строку:
Linux: много повторяющихся имен устройств в Ubuntu 9.10
В Ubuntu 9.10 (и, возможно, в других системах) при использовании последовательного типа устройства ядро каждый раз присваивает новый номер, /dev/ttyACM0, /dev/ttyACM1, /dev/ttyACM2 и т. д.
Это вызвано Gnome Modem Manager, который удерживает порт (насколько это касается kerel) в использовании даже после того, как вы перезагрузили Teensy и порт больше не существует. Самое простое решение — удалить Modem Manager и перезапустить сетевой менеджер или просто перезагрузиться.
Вы также можете попробовать удалить /usr/lib/ModemManager/libmm-plugin-generic.so и, конечно же, перезагрузиться. Это может привести к тому, что Modem Manager сможет работать с большинством модемов, но не будет мешать работе Teensy.
Известной ошибкой является неудобная проверка Modem Manager и невозможность настроить исключения для определенного устройства. Надеюсь, это будет исправлено в будущих версиях.
Введение: программируемая кнопочная панель Arduino в качестве клавиатуры
Это довольно простой и увлекательный проект с Arduino, который идеально подходит для вашего первого взаимодействия с Arduino. Вы создадите панель с разными кнопками, каждая из которых будет выполнять действие на вашем компьютере (Mac или ПК), эмулируя сочетания клавиш или команды. В моем случае я использую его с программным обеспечением для кодирования, чтобы иметь простой и забавный ярлык для копирования, вставки, дублирования строки, сохранения, захвата экрана и открытия нескольких приложений.
Вам потребуется:
Это руководство не только проведет вас по проекту, но и познакомит вас с Arduino в целом, начиная с очень простой кнопки в качестве ввода с клавиатуры, и научит вас, как добавлять кнопки и функции на следующих этапах. .
Это будет проще, если у вас уже есть опыт программирования, но я рекомендую вам учиться методом проб и ошибок, если это ваш первый подход.
Шаг 1. Начнем
Если это ваш первый проект Arduino, вы должны знать, что базовая структура скрипта Arduino состоит из двух частей: настройки и цикла. В настройках вы определите переменные и режимы, которые понадобятся в проекте; цикл — это набор инструкций, которые Arduino будет выполнять снова и снова для проверки состояния различных входов и выходов.
Первая вещь, которую следует учитывать: поскольку вы будете эмулировать ввод с клавиатуры, вы должны быть осторожны, чтобы не оставить свободное действие клавиатуры в цикле, повторяющемся снова и снова, потому что вы потеряете контроль над компьютер. На первом этапе вы создадите простое действие для «копирования» при нажатии кнопки.
Код
Программное обеспечение, которое вам понадобится для загрузки скрипта на плату, называется Arduino IDE, вы можете скачать его здесь.
Вы включите библиотеку клавиатуры для эмуляции клавиатуры. Затем вы определите контакт, к которому вы хотите подключить кнопку.
Две другие переменные понадобятся для сохранения текущего состояния (нажата она или нет) кнопки в каждом цикле и предыдущего состояния, чтобы проверить, отличается ли состояние в текущем цикле:
В этом примере я использую контакт 2 в режиме INPUT_PULLUP, что означает, что это вход и будет использоваться встроенный резистор Arduino. Вам нужно сравнить текущее состояние с предыдущим, чтобы заставить Arduino делать вывод только один раз за нажатие, а не повторять и повторять вывод в каждом цикле.
Вы можете найти другое руководство по созданию кнопки на веб-сайте arduino.
В библиотеке клавиатуры есть разные коды для каждой клавиши на клавиатуре. Полный список можно найти здесь.
Вы можете запускать приложения по команде, используя следующее:
В Windows: вы можете открыть диалоговое окно "Выполнить" с помощью клавиши Windows + R, а затем установить задержку, чтобы подождать пару миллисекунд и используйте Keyboard.print для запуска команды и Keyboard.press(KEY_RETURN) для ее запуска.
В Mac: вы можете использовать комбинацию клавиш Command + пробел, чтобы открыть Spotlight, затем установить небольшую задержку, написать название приложения и использовать клавиатуру. Нажмите (KEY_RETURN), чтобы запустить его. .
Всегда помните о задержках между инструкциями и функцией Keyboard.releaseAll() после эмуляции комбинации клавиш. В качестве альтернативы вы можете назначать сочетания клавиш сочетаниям клавиш (Windows), а затем использовать Arduino для эмуляции комбинаций, или вы можете создать макрос, который реагирует на комбинацию клавиш с помощью программного обеспечения.
Вы можете подключить плату Arduino к компьютеру на любом этапе. Первое время, наверное, будут устанавливать какие-то драйвера.
Программное обеспечение Arduino очень простое в использовании. Сначала выберите модель платы Arduino в меню «Инструменты» > «Плата», иначе она не сможет подключить библиотеку клавиатуры. Когда вы решите, что ваш код готов, протестируйте его с помощью кнопки «Проверить», исправьте любую проблему в коде, затем снова проверьте его и нажмите кнопку «Загрузить». В некоторых версиях вам нужно будет нажать кнопку сброса на плате Arduino во время процесса загрузки. Когда процесс загрузки завершится, кнопки сразу же начнут работать. В Mac он обнаружит Arduino как новую клавиатуру и откроет окно, которое поможет вам настроить ее, просто игнорируйте ее.
Если проект большой, я рекомендую вам использовать Atom для кодирования с поддержкой языка arduino.
Теперь давайте настроим оборудование.
Шаг 2. Подключение
Кнопки обычно имеют два или три разъема. Если у вас их два, мы должны подключить один к земле, а другой будет подключен к контакту, как вам нравится. В примере кода мы используем контакт 2. Если у кнопки есть третий разъем, игнорируйте его. Он используется для отправки другого сигнала, когда кнопка не нажата. Мы можем эмулировать такие действия с помощью скрипта.
Вам нужно будет использовать резистор, потому что кнопка может поймать помехи от статического электричества, вызванного компонентами и вашими руками, что приведет к ложному обнаружению нажатия. Arduino имеет встроенный подтягивающий резистор, вы можете включить эту функцию, установив для кнопки pinMode значение INPUT_PULLUP. Если вы хотите использовать внешний резистор, вы должны подключить его между кнопкой и заземлением на плате, а затем установить pinMode просто как INPUT.
В этом видео вы можете узнать больше о подтягивающих резисторах и кнопках.
Шаг 3. Добавление дебаунсера
Некоторые кнопки не очень точны и могут давать ложные сигналы нажатия. Вы заметите эту ошибку, когда вы нажимаете кнопку, и действия вывода запускаются дважды. Это явление называется отказом, а способ его избежать — устранением отказов.
Мы настроим переменную для записи времени в миллисекундах, а затем сравним каждое изменение сигнала нажатия, чтобы узнать, прошло ли между ними более 50 миллисекунд. Если меньше, то это точно ложный push-сигнал, и скрипт должен его игнорировать.
Шаг 4. Масштабирование до нескольких кнопок
Подключение практически такое же, как и при использовании одной кнопки. Сигнальный кабель будет подключен прямо к контакту, а все заземление будет подключено к одному резистору.
Для кода вам нужно будет определить все наши переменные как массивы и создать циклы for для проверки состояния каждого контакта:
Чтобы проводное соединение оставалось прочным, даже когда вам нужно открыть коробку, попробуйте припаять провода к кнопкам оловом. Вы можете найти простые обучающие материалы по этому вопросу на YouTube.
Шаг 5. Выбор оборудования и другие советы
Коробка: это, пожалуй, самая сложная часть проекта. Находим идеальную коробку и делаем отверстия. К сожалению, я не могу рассказать вам о конструкции оборудования, потому что это не моя область знаний. Я просто дам вам несколько советов:
- Сначала протестируйте его с любой картонной коробкой (подойдет любая коробка из-под хлопьев), чтобы определить оптимальный размер и конфигурацию. В моей первой попытке я поместил отверстие для кабеля не с той стороны коробки, и оно было слишком маленьким для больших кнопок.
- Не выбирайте толстые картонные коробки или твердую древесину, так как вам будет сложно сделать отверстия. Учтите, что сверла некоторых размеров сложно найти, и даже с правильным сверлом их можно разорвать.
- Используйте кусок тонкого пластика, кожи или бумаги, чтобы скрыть дефекты сверления. Вы можете использовать отламывающееся лезвие, чтобы сделать в нем отверстия.
- Если вам действительно нужна отличная отделка, лучше купите коробку для лазерной резки подходящего размера.
Кнопки: некоторые слишком твердые, некоторые слишком мягкие, некоторые неточны, протестируйте пару, прежде чем покупать кучу. Я использую классические аркадные кнопки, но есть и светодиодные индикаторы. Этот проект больше интересен, чем полезен, поэтому не забывайте использовать те кнопки, которые кажутся вам более крутыми.
Шаг 6. Мои текущие настройки
Я использую коробку с 8 аркадными кнопками, расположенными в две строки. Я создал разные функции для обнаружения трех разных типов нажатия. Я покажу вам, как это сделать, в другом уроке.
Кнопка [1] Короткое нажатие: «копировать» Длинное нажатие: «копировать» + «поиск» Продолжительное нажатие: «копировать» + поиск проекта в Atom (command + shift + f)
Кнопка [2] Короткое нажатие: «вставить» Длинное нажатие и длительное нажатие: «вставить» + ввод
Кнопка [3] Короткое нажатие: ввод Длинное нажатие и длительное нажатие: дублирование строки (сначала ввод отменяется)
Кнопка [4] Короткое нажатие: сохранить Длинное нажатие: сохранить как… Продолжительное нажатие: сохранить для Интернета в Photoshop
Кнопка [5] Короткое нажатие: снимок экрана (command + shift + ctrl + 3 на Mac) Длительное нажатие и длительное нажатие: снимок экрана + открытие Photoshop (Mac)
Кнопка [6] Короткое нажатие: Новый документ или вкладка Длинное нажатие: Новый документ + ввод (полезно в Photoshop) Длительное нажатие: закрыть текущую вкладку
Кнопка [7] Любое нажатие: переход к концу следующей строки в текстовом процессоре
Вы пытаетесь запустить скетч Arduino, но постоянно сталкиваетесь с ошибкой «Нет такого файла или каталога»? Это довольно распространенная ошибка! Продолжайте смотреть, чтобы узнать больше о двух простых решениях этой ошибки.
Нет такой ошибки файла!
Сообщения об ошибках могут быть очень неприятными, но они должны сообщать нам что-то о допущенной нами ошибке. Давайте посмотрим на тот, что ниже. Если вы посмотрите на нижнюю часть Arduino IDE, где отображается сообщение об ошибке, вы увидите небольшую удобную кнопку с надписью «копировать сообщения об ошибках».
Если вы нажмете на нее, сообщение об ошибке скопируется из маленького окна в буфер обмена на компьютере.
Сейчас вы можете вставить его, например, в Google и выполнить поиск, который поможет вам узнать больше об ошибке. Или вы можете вставить его на форум и сказать: "Эй, у меня есть это сообщение об ошибке, пожалуйста, помогите мне".
Однако для этой ситуации мы скопировали его и вставим в текстовый редактор, чтобы мы могли более подробно рассмотреть, что на самом деле говорит сообщение об ошибке.
Расшифровка ошибки отсутствия такого файла
В первом предложении просто указано, какая версия Arduino используется, какая операционная система работает и какая плата выбрана.
Второе предложение на самом деле немного начинает вызывать ошибку. Первое, что он нам дает, это название программы. Итак, в данном случае название программы было «Кнопка».
Если вы посмотрите на Arduino IDE, цифры слева называются номерами строк программы, и они помогают нам найти, где находятся разные строки кода. «10» после «Knob» — это номер строки (в Arduino IDE), в которой была обнаружена ошибка.
"19" указывает на длину этой строки кода, то есть на количество пробелов или символов в ней.
Затем он сообщает нам фактическую ошибку. Пишет "servo.h: Нет такого файла или каталога". Почему мы получаем эту ошибку?
Ошибка нашего пути
Когда мы проверяем этот код, эта строка говорит компилятору Arduino IDE: «Эй, чтобы эта программа заработала, вам нужно получить этот файл servo.h».
Допустим, у вас есть машина для изготовления этикеток, и вы пытаетесь запустить ее и напечатать несколько этикеток. Чтобы заставить его работать, вы должны вставить рулон этикеток. Если у вас нет этого рулона этикеток, то ваш производитель этикеток не будет работать. Итак, наша программа похожа на производителя этикеток, а файл (сервопривод) — это рулон этикеток.
Итак, сообщение об ошибке выглядит примерно так: «Эй, программист, ты сказал, что мне нужен этот другой файл… но я искал его, а его там нет. Что дает?Давайте разберемся с этим сообщением об ошибке и рассмотрим два разных сценария.
Сценарий 1 – толстые пальцы
Поэтому "servo.h" на самом деле должно быть заглавной "S" или написано как "Servo.h". Теперь в этом примере вы заметите, что слово servo меняет цвет, когда оно правильно пишется с заглавной буквы, и это потому, что имя библиотеки «Servo» распознается как «ключевое слово» в Arduino IDE. Имейте в виду, что это может относиться не ко всем библиотекам, которые вы используете.
Поэтому вы не можете использовать в качестве абсолютного индикатора изменение цвета, но это может быть полезно. Удивительно, как долго вы можете смотреть на строку кода и пропустить что-то вроде орфографической ошибки или ошибки в написании заглавных букв.
Сценарий 2 — файлы отсутствуют
В этом сценарии вы либо загрузили, либо скопировали и вставили код из Интернета и пытаетесь запустить его в первый раз. Теперь вы начинаете получать это сообщение об ошибке. Давайте просто предположим, что первоначальный автор программы правильно написал название библиотеки.
Мы продолжим и пропустим устранение неполадок, связанных со сценарием 1. Следующим шагом будет проверка того, действительно ли у нас есть файл, который вызывает эта программа. Мы также должны убедиться, что файл находится в правильном месте.
Простой способ проверить, есть ли у вас этот файл, — открыть Arduino IDE и перейти в меню «Скетч» > «Включить библиотеку», а затем найти имя этой библиотеки.
Самый простой способ добавить библиотеку — перейти в меню "Эскиз" > "Включить библиотеку" > "Управление библиотеками". Откроется диалоговое окно, и вы сможете выполнить поиск библиотеки. Библиотек так много, что вам определенно захочется их отфильтровать.
Далее мы можем перепроверить, успешно ли он установлен. Перейдите в Sketch > Include Library, и теперь установленная библиотека должна появиться в раскрывающемся списке. Теперь, когда он соответствует, вы больше не должны получать ошибку.
Другие места в библиотеке
Не все библиотеки отображаются в этом удобном всплывающем окне, когда вы переходите к управлению библиотеками. Существует множество способов найти библиотеки Arduino в Интернете. Часто, если вы загружаете или копируете программу из Интернета, просто зайдите на страницу, где вы получили эту программу, и посмотрите, на какую библиотеку они ссылаются. Например, у них есть ссылка на GitHub, где люди хранят множество библиотек кода.
Обычно библиотека входит в пакет ZIP-файлов. После того, как вы загрузили файл .zip, вы можете перейти в среду разработки Arduino IDE и выбрать «Скетч» > «Включить библиотеку» > «Добавить библиотеку .ZIP». Вам просто нужно перейти туда, куда был загружен файл. Он скажет вам «Библиотека добавлена в ваши библиотеки» чуть выше темной области, где появилась исходная ошибка.
Теперь, когда мы выбираем Sketch > Include Library, новая библиотека появится в раскрывающемся списке. Виола! Теперь вы знаете 2 способа добавления новой библиотеки.
Просмотреть
Итак, мы обсудили два возможных сценария, которые могут привести к появлению ошибки «Нет такого файла или каталога» после компиляции эскиза.
Во-первых, если вы написали скетч, просто проверьте правильность написания и написания заглавных букв.
Во-вторых, если вы скопировали чужой код, убедитесь, что у вас установлены правильные библиотеки.
Клавиатуры — отличный способ предоставить пользователям возможность взаимодействовать с вашим проектом. Вы можете использовать их для навигации по меню, ввода паролей и управления играми и роботами.
В этом уроке я покажу вам, как настроить клавиатуру на Arduino. Сначала я объясню, как Arduino определяет нажатия клавиш, а затем покажу вам, как найти распиновку любой клавиатуры. В качестве простого примера я покажу вам, как распечатать нажатия клавиш на последовательном мониторе и ЖК-дисплее. Наконец, я покажу вам, как активировать реле 5 В при правильном вводе пароля.
БОНУС: я составил краткое руководство для этого руководства, которое вы можете загрузить и вернуться к нему позже, если не можете настроить его прямо сейчас. В нем описаны все шаги, диаграммы и код, необходимые для начала работы.
В этой статье я буду использовать матричную мембранную клавиатуру 4X4, но также есть коды и схемы подключения для матричных клавиатур 3X4. Мне нравятся мембранные клавиатуры, потому что они тонкие и имеют клейкую основу, поэтому их можно приклеивать к большинству плоских поверхностей. Вы также можете получить клавиатуры телефонного типа с более толстыми кнопками, если вам больше нравится этот стиль. Даже восстановленные клавиатуры от старых телефонов будут работать с Arduino.
Как работают клавиатуры
Кнопки на клавиатуре расположены рядами и столбцами. Клавиатура 3X4 имеет 4 строки и 3 столбца, а клавиатура 4X4 имеет 4 строки и 4 столбца:
Под каждой клавишей находится мембранный переключатель. Каждый переключатель в ряду соединен с другими переключателями в ряду проводящей дорожкой под контактной площадкой. Каждый переключатель в столбце подключается одинаково — одна сторона переключателя соединяется со всеми остальными переключателями в этом столбце токопроводящей дорожкой. Каждая строка и столбец выведены на один контакт, всего 8 контактов на клавиатуре 4X4:
Нажатие кнопки закрывает переключатель между трассировкой столбца и строки, позволяя току течь между выводом столбца и выводом строки.
Схема клавиатуры 4X4 показывает, как связаны строки и столбцы:
Arduino определяет, какая кнопка нажата, определяя контакт строки и столбца, подключенный к кнопке.
Это происходит в четыре этапа:
<р>1. Во-первых, когда никакие кнопки не нажаты, все контакты столбца удерживаются в ВЫСОКОМ положении, а все контакты строки — в НИЗКОМ:<р>2. Когда кнопка нажата, вывод столбца становится НИЗКИМ, так как ток от ВЫСОКОГО столбца течет к выводу НИЗКОГО ряда:
<р>3. Теперь Arduino знает, в каком столбце находится кнопка, поэтому теперь ему просто нужно найти строку, в которой находится кнопка. Он делает это, переключая каждый из выводов строки в ВЫСОКОЕ состояние и в то же время считывая все выводы столбца в состояние HIGH. определить, какой вывод столбца возвращается в состояние HIGH:
<р>4. Когда вывод столбца снова становится ВЫСОКИМ, Arduino нашла вывод строки, который подключен к кнопке:
Из приведенной выше диаграммы видно, что комбинация строки 2 и столбца 2 может означать только то, что была нажата кнопка с номером 5.
Подключите клавиатуру к Arduino
Раскладка контактов для большинства мембранных клавиатур будет выглядеть следующим образом:
Следуйте схемам ниже, чтобы подключить клавиатуру к Arduino Uno, в зависимости от того, какая у вас клавиатура 3X4 или 4X4:
Как найти распиновку клавиатуры
Если расположение контактов на вашей клавиатуре не соответствует приведенному выше, вы можете проверить контакты, чтобы выяснить это. Вам нужно будет построить тестовую схему, подключив светодиод и токоограничивающий резистор к Arduino (или любому источнику питания 5 В) следующим образом:
Сначала выясните, какие контакты клавиатуры подключены к рядам кнопок. Вставьте заземляющий (черный) провод в первый контакт слева. Нажмите любую кнопку в первом ряду и удерживайте ее. Теперь вставьте положительный (красный) провод в каждый из остальных контактов. Если на одном из контактов загорается светодиод, нажмите и удерживайте другую кнопку в ряду 1, затем снова вставьте положительный провод в каждый из остальных контактов. Если светодиод загорается на другом контакте, это означает, что провод заземления вставлен в контакт 1 ряда. Если ни одна из кнопок в ряду 1 не приводит к включению светодиода, провод заземления не подключен к ряду 1. Теперь переместите провод заземления к следующему контакту, нажмите кнопку в другом ряду и повторяйте описанный выше процесс, пока не мы нашли булавку для каждой строки.
Чтобы выяснить, к каким контактам подключены столбцы, вставьте заземляющий провод в контакт, который, как вы знаете, находится в первом ряду. Теперь нажмите и удерживайте любую кнопку в этом ряду. Теперь вставьте положительный провод в каждый из оставшихся контактов. Контакт, который заставляет светодиод загораться, — это контакт, подключенный к колонке этой кнопки. Теперь нажмите еще одну кнопку в том же ряду и вставьте положительный провод в каждый из остальных контактов. Повторяйте этот процесс для каждого из других столбцов, пока не наметите каждый из них.
Программирование клавиатуры
Для базовой демонстрации того, как настроить клавиатуру, я покажу вам, как распечатывать каждое нажатие клавиши на серийный монитор.
Установить библиотеку
Мы будем использовать библиотеку Keypad от Марка Стэнли и Александра Бревига. Эта библиотека позаботится о настройке выводов и опросе различных столбцов и строк. Чтобы установить библиотеку клавиатуры, перейдите в Sketch > Include Library > Manage Libraries и найдите «keypad». Нажмите на библиотеку, затем нажмите «Установить».
Код для клавиатуры 4X4
После установки библиотеки Keypad вы можете загрузить этот код в Arduino, если вы используете клавиатуру 4X4:
Код для клавиатуры 3X4
Если вы используете клавиатуру 3X4, вы можете использовать этот код:
Строки 3 и 4 в приведенном выше коде задают количество строк и столбцов на клавиатуре.
Строки 6–11 определяют, какие символы печатаются при нажатии определенной кнопки на клавиатуре. Символы расположены так же, как они появляются на клавиатуре. Если ваша клавиатура имеет другую раскладку, вы можете определить, какие символы будут печататься при нажатии кнопки. Например, предположим, что на вашей клавиатуре столбец букв расположен слева, а не справа. Вы бы просто изменили его на это:
После загрузки кода откройте последовательный монитор. При нажатии клавиши значение будет распечатано:
Использование ЖК-дисплея с клавиатурой
Теперь давайте посмотрим, как печатать нажатия клавиш на ЖК-дисплее. Клавиатуры 4X4 используют 8 контактов, а клавиатуры 3X4 используют 7 контактов. Это занимает много контактов, поэтому я собираюсь использовать ЖК-дисплей с поддержкой I2C, потому что для подключения к Arduino требуется всего 4 провода.
Установите библиотеку LiquidCrystal_I2C
Чтобы использовать ЖК-дисплей с поддержкой I2C на Arduino, вам необходимо установить библиотеку LiquidCrystal I2C от Марко Шварца. Эта библиотека хороша тем, что включает в себя большинство функций, доступных в стандартной библиотеке LiquidCrystal. Чтобы установить его, загрузите ZIP-файл ниже, затем выберите «Скетч» > «Включить библиотеку» > «Добавить библиотеку .ZIP»:
Проводная библиотека
Библиотека Wire необходима для добавления поддержки связи I2C. Он поставляется в комплекте с Arduino IDE, поэтому его не нужно устанавливать. Но если по какой-то причине он не установлен в вашей системе, перейдите в Sketch > Include Library > Manage Libraries и найдите «wire», чтобы установить его.
Подключите клавиатуру и ЖК-дисплей
После установки библиотек подключите контакты заземления и Vcc ЖК-дисплея к Arduino, затем подключите контакты SDA и SCL ЖК-дисплея в соответствии с приведенной ниже таблицей для различных плат Arduino:
Затем подключите клавиатуру к Arduino. Это должно выглядеть примерно так (для Arduino Uno):
Код для вывода на ЖК-дисплей
После того, как все будет подключено, загрузите этот код в Arduino:
Вам нужно будет добавить I2C-адрес вашего ЖК-дисплея в строке 20:
LiquidCrystal_I2C LCD (0x21, 16, 2);
I2C-адрес моего ЖК-дисплея — 0x21, но у вас он, вероятно, будет другим. I2C-адрес вашего ЖК-дисплея должен быть указан в техническом описании, но если его нет, вы можете найти его, запустив этот скетч I2C_Scanner.
Использование пароля для активации реле
Одним из наиболее полезных применений клавиатуры является использование ее для ввода с клавиатуры. Вы можете установить пароль и заставить Arduino активировать реле или какой-либо другой модуль, если пароль правильный. Следующий код активирует реле 5 В при правильном вводе пароля:
Вы можете изменить пароль в строке 10, заменив текст 123A456 своим паролем:
Мастер символов[Password_Length] = "123A456";
Длина пароля должна быть установлена в строке 5:
Пароль в приведенном выше примере имеет длину всего 7 символов, но на самом деле длина пароля на единицу больше 7, поскольку в конец строки добавлен нулевой символ. Например, если ваш пароль состоит из 5 символов, введите 6 длины пароля.
Выходной контакт, активирующий реле, определяется в строке 7:
int signalPin = 12;
После подключения всего к Arduino у вас должно получиться что-то вроде этого:
Ну вот и все. Настроить клавиатуру совсем не сложно. Я думаю, что с небольшими пробами и ошибками вы сможете изменить приведенный выше код, чтобы он работал с большинством проектов, для которых вы хотели бы использовать клавиатуру. Но если у вас возникнут проблемы, просто сообщите нам об этом в комментариях, и мы постараемся вам помочь.
Читайте также: