Как подключить матрицу от ноутбука к ардуино

Обновлено: 21.11.2024

Большинство этих прокручиваемых досок объявлений состоят из одного КРАСНОГО светодиода. Однако в настоящее время существуют многоцветные светодиодные платы, а также доступны светодиодные платы RGB. Во всех типах досок светодиоды соединены в структуру ROW-COLUMN, которая называется МАТРИЧНЫМИ светодиодными прокручиваемыми досками сообщений.

В простом табло MATRIX LED с прокручиваемым сообщением есть только один анимационный эффект — сообщение прокручивается справа налево. Но есть много таких досок, которые имеют несколько разных анимационных эффектов, откуда может появиться сообщение:

  • Сверху или снизу
  • Появляется, а затем исчезает
  • Предлагайте эффекты растворения
  • Отскок слева направо и многое другое

Здесь мы представили простой проект, в котором пользователь может ввести информационное сообщение для прокрутки на доске с помощью ноутбука или компьютера. Это сообщение будет постоянно отображаться и прокручиваться. Всякий раз, когда пользователь хочет отобразить новую информацию (имеется в виду новое сообщение), ему или ей нужно будет подключить систему к компьютеру с помощью USB, а затем ввести новое сообщение — и все!

Для этого проекта мы используем готовую доску объявлений Matrix LED с прокруткой, которая состоит из шести блоков светодиодного блока 8×8. Всего 6x8x8 = 384 светодиода.

Вот принципиальная схема с ее описанием и работой…

Принципиальная схема

Описание схемы
Как показано на этом рисунке, в схеме есть только три строительных блока:

<р>1. Прокручивающееся сообщение MATRIX LED board
2. Плата Arduino NANO
3. Ноутбук (или ПК)

  • Для светодиодной платы MATRIX с прокруткой сообщений требуется три провода для сопряжения Vcc, Gnd и последовательного входа. В качестве Vcc требуется источник питания 12 В при 1 А. Итак, на него подается внешнее питание 12 В от адаптера. Его последовательный ввод данных подключен к цифровому выводу D3 платы Arduino.
  • Плата Arduino также получает входное напряжение 12 В от адаптера к выводу Vin. Он связывается с ноутбуком с помощью USB-кабеля, а также получает данные (сообщения) от ноутбука.

Схема работы
Схема работы проста. Когда на схему подается питание 12В, она начнет свою работу. Arduino получает строку (сообщение) от ноутбука и отправляет то же сообщение на светодиодную панель MATRIX с прокручиваемым сообщением. Это прокручивающееся сообщение будет отображаться на этой доске.

  • Изначально на доске отображается сообщение по умолчанию "Привет", которое постоянно прокручивается.
  • Arduino будет постоянно ждать любого сообщения от компьютера. Пользователь может отправить сообщение (строку) последовательному монитору Arduino IDE.
  • Когда пользователь отправляет сообщение с этого последовательного монитора, оно принимается и сохраняется платой Arduino во внутренней оперативной памяти.
  • Когда полное сообщение получено, Arduino последовательно отправит одно и то же сообщение на светодиодную панель MATRIX с прокруткой сообщений. Цифровой вывод D3 от Arduino работает как вывод последовательных данных Tx, который последовательно отправляет сообщение на плату светодиодов MATRIX.
  • Формат для отправки сообщения на плату MATRIX LED: «!_____________________сообщение________________\r»
  • Это означает, что текстовое сообщение, которое нужно прокручивать, должно начинаться с "!" и заканчиваться на "\r"
  • Arduino вставляет начальный и конечный символы в сообщение, полученное от компьютера, а затем отправляет его на плату светодиодов MATRIX.
  • Светодиодная панель MATRIX начнет отображать и непрерывно прокручивать это сообщение, пока не появится новое сообщение.
  • Это означает, что каждый раз, когда пользователь хочет отобразить новое сообщение, ему или ей нужно будет отправить его с компьютера, и сообщение будет постоянно отображаться и прокручиваться на светодиодной панели MATRIX.

Программа

void loop()

while(Serial.available())

msg[i] = Serial.read();
я++;
>
if(msg[i-1]==’\r’)

matrix_LED_serial.print(‘!’);
matrix_LED_serial.print(msg);
matrix_LED_serial.print('\r');
я=0;
>
>

В детстве у меня была книга "Модернизация и ремонт ПК". (Сейчас в 22-м издании.) Это была первая книга, объяснявшая мне архитектуру ПК. Я задумался, как могло быть так мало контактов на разъеме клавиатуры в стиле AT, когда на клавиатуре была 101 клавиша? Именно тогда я впервые узнал о матрице клавиатуры.

Исходное изображение из Deskthority Wiki. (Показано отредактированное изображение.)

Ключевое преимущество (понятно?) матрицы клавиатуры заключается в том, что она уменьшает количество контактов, необходимых для захвата ввода большого количества клавиш. Даже если на клавиатуре ПК 101 клавиша, это не означает, что есть микроконтроллер со 101 контактом. Ему также не нужен кабель с более чем 100 проводами.

Сначала я объясню на простых примерах с четырьмя и девятью кнопками.

Без матрицы

Во-первых, давайте посмотрим, что происходит с четырьмя кнопками. Без массива каждый переключатель получил бы входной контакт. Этот счет, вероятно, звучит неплохо. А что, если бы вы использовали девять кнопок вместо четырех?

Вам потребуется 9 контактов ввода-вывода! Кроме того, учитывайте стоимость проводки многих отдельных кнопок. Если кнопки находятся на плате, отличной от микроконтроллера, или вы подключаете прототип вручную, то это много проводов.

Давайте поместим те же девять кнопок в матрицу 3 x 3. Этот метод сэкономит вам три булавки!

Элементы матрицы клавиатуры

В каждой матрице есть строки и столбцы. Получив доступ к одной строке и одному столбцу, мы можем получить доступ к каждой кнопке по отдельности. Этот метод управляет одной стороной и ощущает другую.

Диоды матрицы клавиатуры

Матрица с блокирующими диодами и без них

На схеме я включил блокировочные диоды. Диод предотвращает состояние, называемое «двоение». В клавиатурной матрице ореолы означают, что вы видите нажатия на несуществующие кнопки.

На изображении выше сравниваются нажатия одних и тех же кнопок с диодами и без них. (Резисторы сопротивлением 1 Ом предотвращают раздражение iCircuit из-за коротких замыканий.) На правой схеме считывание «выбранной» кнопки происходит без дополнительных путей тока.

Код матрицы клавиатуры

Циклы и массивы For() позволяют коду работать. Шаги для сканирования матрицы клавиатуры включают:

  1. Включить столбец
  2. Сканирование каждой строки
  3. Зафиксировать состояние кнопки
  4. Отключить столбец

1. Включить столбец (строка 32)

Столбцы матрицы клавиатуры включаются путем установки вывода в положение OUTPUT, а затем в положение LOW. Этот шаг обеспечивает путь к земле. Остальные выводы колонок удерживаются в состоянии высокого импеданса, что фактически отключает их от матрицы.

2. Сканировать каждую строку (строка 39)

Цикл for() проходит по каждому выводу массива строк. Входной подтягивающий резистор вывода включен, обеспечивая подключение к VCC. Большинство плат Arduino включают резистор с состоянием INPUT_PULLUP функции pinMode().

3. Зафиксировать состояние булавки

В двумерном массиве хранится значение булавки. Подтягивающий резистор вывода отключается, и цикл увеличивается.

Идея состоит в том, чтобы зафиксировать все нажатые кнопки. После сканирования матрицы можно принимать меры. Как и в случае с обычными кнопками, вы также можете создать матрицу «предыдущее состояние», чтобы обнаруживать изменения состояния кнопки.

После считывания состояние вывода возвращается к INPUT, отключая строку путем отключения подтягивающего резистора.

Битовые операторы были бы лучше

Я хотел бы отметить; этот метод очень неэффективен с точки зрения памяти. Проблема в том, что для хранения состояния каждой кнопки используется целый байт или 8 бит. Вам нужен только 1 бит для каждого. Более эффективным методом было бы использование побитовых операторов для отслеживания каждого ключа как бита.

4. Отключить столбец

После проверки каждой строки перевод вывода столбца обратно в состояние INPUT отключает его.

Обработка вновь полученных нажатий кнопок происходит после сканирования всей матрицы. В этом примере кода функция «printMatrix()» печатает содержимое массива. В вашем скетче вы должны выполнить какое-то действие в зависимости от состояния кнопки.

Возможные оптимизации

Как упоминалось ранее, вы можете использовать битовые операторы для хранения каждого нажатия кнопки в виде одного бита, а не байта.

Преобразование кода в конечный автомат с помощью millis() может иметь решающее значение для более медленных микроконтроллеров или кода, очень чувствительного ко времени. Как бы то ни было, большинство матриц будут сканироваться так быстро, что время блокировки не имеет значения. Однако я мог бы представить себе использование микроконтроллера с частотой 1 МГц, где время, необходимое для завершения чтения большой матрицы, может оказаться слишком большим.

Альтернативный код

Доступна библиотека матрицы клавиатуры Arduino. Вы можете установить Keypad из менеджера библиотек.

Это упрощает программирование матрицы . Больше всего усилий приходится на определение ключей.Компромисс со стандартной библиотекой заключается в том, что она не обрабатывает несколько нажатий клавиш. Для этого есть пример кода, но это усложняет задачу.

Заключение

Матрица клавиатуры — отличный способ добавить кнопки, не используя все контакты ввода-вывода. В этом уроке по матрице клавиатуры я показал, как работает 9-кнопочная матрица. Этот же код и схема — то, что я использую для нового проекта. В моем последнем проекте 64 кнопки. Подробнее об этом далее.

Раскрытие существенной связи. Некоторые ссылки в сообщении выше являются «партнерскими ссылками». Это означает, что если вы нажмете на ссылку и купите товар, я получу партнерскую комиссию. Тем не менее, я рекомендую только те продукты или услуги, которыми пользуюсь лично и считаю, что они принесут пользу моим читателям. Я раскрываю это в соответствии с 16 CFR Федеральной торговой комиссии, часть 255: «Руководства по использованию одобрений и отзывов в рекламе».

Длинные комментарии, URL и код, как правило, помечаются модерацией как спам. Повторная отправка не требуется.

ВСЕ комментарии, отправленные с помощью поддельных или одноразовых сервисов, удаляются, независимо от содержания.

Не будь слабаком.

Оставить комментарий Отменить ответ

14 мыслей о «Учебное пособие по коду и оборудованию клавиатуры Arduino»

Я предполагаю, что верхняя кнопка в средней колонке должна считаться открытой. В противном случае строка 1 была бы активной на обоих рисунках, и запись (1,2) как активная была бы правильной. Это также может решить вашу проблему с iCircuit.

Спасибо за это — стало проще отслеживать, как происходит нажатие одной кнопки.
Все еще есть один вопрос, как обнаружить нажатие нескольких кнопок.
Если я пронумерую кнопки 3×3 следующим образом:
123
456
789
Как я узнаю, нажимаются ли кнопки 1, 2 и 4, а не 1 , 2 и 5? Разве обе комбинации не вызовут col1 и col2, а также row1 и row2?
Спасибо.

Проблема, которую вы описываете, называется "привидение". Вот почему нужны диоды.

Не знаю, ответите ли вы, но я пытаюсь преобразовать старую консоль органа в MIDI. Короче говоря, мне нужно использовать мультиплексоры и создать матрицу для клавиатуры, но я не уверен, какие мультиплексоры мне нужны и сколько. Я хочу добиться 16+ полифонии на 61-нотной клавиатуре.

К сожалению, это не та область, в которой у меня большой опыт. Вы можете попробовать опубликовать сообщение на форуме Arduino.cc Project Guidendance.

Не эксперт по электронным музыкальным клавишным, не может ли этот подход (матрица + мультиплексирование) быть потенциально несовместимым с временным откликом, требуемым в музыке, или потенциально ограничивать полифонию, которую может передать ваша клавиатура?

Здравствуйте,
Я попробовал это с 5×5 и кодом… SoMeHoW работает…
Когда я нажимаю среднюю кнопку, вывод
11111
11111
00100 < br />11111
11111
А с инверсией что-то есть?
Или я что-то упустил?

Код должен нормально работать для формата 5×5, если его правильно изменить. Шаблон подсказывает мне, что вы подключили его по-разному.

Спасибо за код и логику. Я купил на распродаже несколько бывших в употреблении клавиатур 4X4 (8 выводов) и с помощью vom вычислил столбцы, строки и землю. Использование функций матричной библиотеки
отлично работало на моем uno, но не работало на моем mini или nano arduinos. Знаете ли вы, есть ли
специальная библиотека для этих версий? Кроме того, можете ли вы порекомендовать какую-либо микросхему, которая упростила бы взаимодействие клавиатуры с Arduino без накладных расходов на вывод, которые используются в вышеуказанных методах? Я думаю, что SN74151 (селектор данных 1 из 8… у меня есть ящики с ними) сократил бы количество контактов ввода-вывода до четырех, но логика, чтобы заставить его работать, была бы довольно сложной.

но не работал на моей мини- или нано-ардуино.

Не знаю, что вы имеете в виду под мини, но у Nano такое же разрешение 328p, как и у Uno. Таким образом, должна быть проблема с проводкой, потому что в коде нет никакой разницы. Это тот же процессор кремния.

Можете ли вы порекомендовать какую-либо микросхему, которая упростила бы взаимодействие клавиатуры с Arduino без накладных расходов на вывод, которые используются в вышеуказанных методах? Я думаю SN74151

На чем-то маленьком, например, 4×4, я не вижу, как мультиплексор и регистр сдвига помогут. Вы сжигаете столько контактов для управления этими чипами, сколько для прямого управления матрицей.

Возможно ли иметь две отдельные матрицы кнопок. У меня есть две кнопки по 28 в сетке 4×7 для многоосевого джойстика и геймпада с использованием библиотеки джойстиков Мэтью Хейронимуса

После входа в систему вы будете перенаправлены обратно к этому руководству и сможете подписаться на него.

Это руководство предназначено для плат в экосистеме ARDUINO. У нас есть другое руководство для Raspberry Pi. Arduino Uno ограничен размером 32 x 16 пикселей с одинарной буферизацией.

Привнесите немного Таймс-сквер в свой дом с нашими светодиодными матричными панелями RGB. Эти панели обычно используются для создания видеостен — здесь, в Нью-Йорке, мы видим их по бокам автобусов и на автобусных остановках — для демонстрации анимации или коротких видеоклипов. Нам показалось, что они выглядят очень круто, поэтому мы взяли несколько коробок с завода. Один имеет 512 ярких светодиодов RGB, расположенных на передней панели в сетке 16x32, другой имеет 1024 светодиода в сетке 32x32. На задней панели находится печатная плата с разъемами IDC (один набор для входа, один для вывода: теоретически вы можете соединить их вместе) и 12 16-битных защелок, которые позволяют управлять дисплеем с соотношением сторон 1:8 (16x32) или 1. Частота сканирования: 16 (32 x 32).

Следующие платы готовы к работе по принципу plug-and-play с RGB Matrix Shield и программным обеспечением, упомянутым в этом руководстве:

  • Адафрут Метро M0
  • Ардуино Ноль
  • Arduino Uno (или совместимые платы ATmega328P) — ограничено матрицей 32x16, без двойной буферизации (необходимо для анимации без мерцания)

Следующее поддерживается программным обеспечением, но для использования RGB Matrix Shield требуется дополнительная проводка или перемычки:

  • Arduino Mega (или совместимые платы ATmega2560)
  • Адафрут Метро M4

Следующее НЕ поддерживается программным обеспечением или экраном:

  • Arduino Leonardo (или совместимые платы ATmega32U4)
  • Netduino и другие подобные Arduino, не упомянутые в приведенных выше списках (но другие библиотеки или шилды могут существовать где-то еще)
  • Teensy (но см. SmartLED Shields и программное обеспечение для Teensy 3.X и 4.X, которые обеспечивают превосходную производительность)
  • Raspberry Pi (но для этого есть разные капоты и шляпы)

Для этих панелей требуется 12 или 13 цифровых контактов (6-битные данные, 6- или 7-битное управление) и хороший источник питания 5 В, по крайней мере, пара ампер на панель. Мы предлагаем наши регулируемые адаптеры 5 В на 2 А (или больше) и либо разъем постоянного тока на клеммной колодке, либо припаяйте разъем из нашего удлинителя постоянного тока. Пожалуйста, прочитайте остальную часть нашего руководства для получения более подробной информации!

Имейте в виду, что эти дисплеи обычно предназначены для работы с ПЛИС или другими высокоскоростными процессорами; у них нет встроенного ШИМ-управления. Вместо этого вы должны перерисовывать экран снова и снова, чтобы «вручную» ШИМ все это сделать. На Arduino с частотой 16 МГц нам удалось сжать 12-битный цвет (4096 цветов), но этот дисплей действительно сиял бы, если бы управлялся FPGA, CPLD, Propeller, XMOS или другим высокоскоростным многопроцессорным контроллером.

Конечно, мы не оставим вас с таблицей данных и "удачи!" У нас есть полные электрические схемы и рабочий код библиотеки Arduino с примерами рисования пикселей, линий, прямоугольников, кругов и текста. Вы получите взрыв цвета в течение часа! На большинстве Arduino-совместимых плат вам потребуется 12 цифровых контактов и около 800 байт ОЗУ для хранения 12-битного цветного изображения (в два раза больше для матрицы 32x32, еще раз в два раза для плавной анимации с двойной буферизацией).

Впервые это руководство было опубликовано 11 декабря 2012 г. Последний раз оно обновлялось 11 декабря 2012 г.

Это список советов и приемов, которые я хотел бы знать, прежде чем тратить дни на программирование аудиометра Arduino.
Я уверен, что если вы быстро прочитаете, вы научитесь и избежите ловушек!

<р>1. Кодер
Кодер также включает в себя кнопку, он использует 3 линии для энкодера и 1 для кнопки:

Технически для энкодера нужно всего 2 линии, третья заземлена. Но для большей универсальности вы можете подключить 3 линии к плате Arduino, а затем установить одну из линий на землю с помощью программного обеспечения. Так что, если в будущем вы захотите поэкспериментировать, эта линия может быть доступна.

  • Объединение: вы помещаете функцию кодировщика в основной цикл, и код проверяет, изменились ли строки. Программа лампы использует его.
  • Прерывание: при изменении энкодера генерируется прерывание и выполняется функция энкодера. Такие коды, как игра со змеями, делают это
  • Плюсы: схема проста и может использоваться практически с любым источником звука: гитара, клавиатура, mp3, ноутбук, линейный уровень и т. д.
  • Минусы: действие потенциометра усиления является "логарифмическим", что означает, что в последней половине действия усиление увеличивается больше.Если вы просто знаете, вы увидите, что все действительно происходит в конце розыгрыша банка. Это небольшая цена за простую схему, которая прекрасно работает.

примечание: вход напрямую подключен к выходу, поэтому вы можете использовать любой разъем в качестве входа или выхода.

<р>3. Светодиодная матрица 8x8:
На рынке можно купить множество светодиодов, большинство из них с похожей распиновкой и квадратом, но разных размеров: 20 мм, 32 мм, 60 мм.
В аудиометре Arduino мы используем 38 мм: это те, которые нам было проще купить и использовать везде, номер детали «1588BS».

Общий анод и общий катод
Снова основные категории, диоды расположены по-разному:

Используемые в этом проекте 1588BS имеют общий анод.
Вы не можете использовать другой (общий катод) и изменить программное обеспечение

<р>4. Драйверы:
Вы можете напрямую подключить 8x8MAtrix к плате Arduino без драйвера, но вам потребуется 16 контактов для каждой матрицы. Если вы хотите подключить 4 матрицы, у вас закончились контакты. Вот почему мы используем MAX7219 для управления четырьмя матрицами. Вам просто нужно 3 линии, чтобы управлять всеми ими!

<р>5. Библиотеки для 8x8Matrix и драйверов:
Вам потребуется библиотека для использования драйверов MAX7219, их много ("LedMatrixDriver", "MD_MAX72XX", "U8g2" и т. д.). Мы перепробовали многие, и лучше всего работает «LedControl.h». Это тот, который мы используем во всех кодах.
Кроме того, мы нашли на форумах Arduino сверхбыстрый вариант «LedControl.h»: forum.arduino.cc/index.php?topic=350313.0

Этот 10-кратный быстрый ledcontrol.h имеет огромное значение, когда вы хотите представить быстрые аудиосигналы или игры, поэтому мы настоятельно рекомендуем его использовать. Эта библиотека находится в той же папке, что и коды, и при ее компиляции программа возьмет ее из той же папки.

<р>6. Советы по программированию
Мой последний, но лучший совет: не изобретайте велосипед.
Как вы увидите, все мои коды основаны на существующих кодах, которые я нашел в Интернете. Существуют сотни хороших кодов, использующих Arduino и матрицы 8x8.
Что я обычно делаю, так это ищу в Google «Arduino 8x8 matrix MAX7219» + «что я хочу сделать, например: «Arduino 8x8 matrix MAX7219 Snake Game», или тетрис, или анализатор спектра. В большинстве случаев коды сделано для одной матрицы или, может быть, для двух.
Моя задача состоит в том, чтобы просто адаптировать рабочий код к матрице 16x16.

В течение нескольких лет светодиоды RGB с каждым днем ​​становятся все более популярными благодаря своему красивому цвету, яркости и привлекательным световым эффектам. Вот почему он используется во многих местах в качестве декоративного элемента, например, дома или в офисе. Кроме того, мы можем использовать RGB-подсветку на кухне, а также в игровой консоли. Они также отлично подходят для детской игровой комнаты или спальни с точки зрения декоративного освещения. Ранее мы использовали светодиоды WS2812B NeoPixel и микроконтроллер ARM для создания визуализатора музыкального спектра, так что проверьте, если это вам интересно.

Вот почему в этом проекте мы собираемся использовать светодиодную матрицу RGB на основе Neopixel, Arduino и приложение Blynk для создания множества увлекательных анимационных эффектов и цветов, которыми мы сможем управлять с помощью приложения Blynk. Итак, приступим.

Adafruit 5X8 NeoPixel Shield для Arduino

Совместимый с Arduino NeoPixel Shield содержит сорок RGB-светодиодов с индивидуальной адресацией, каждый из которых имеет встроенный драйвер WS2812b, который расположен в виде матрицы 5 × 8 для формирования этого NeoPixel Shield. При необходимости несколько экранов NeoPixel Shield могут быть объединены в один экран большего размера. Для управления RGB-светодиодами требуется один контакт Arduino, поэтому в этом руководстве мы решили использовать для этого контакт 6 Arduino.

В нашем случае светодиоды питаются от встроенного в Arduino контакта 5 В, которого достаточно для питания примерно «трети светодиодов» при полной яркости. Если вам нужно запитать больше светодиодов, вы можете отключить встроенную дорожку и использовать внешний источник питания 5 В для питания экрана с помощью внешнего разъема 5 В.

Понимание процесса связи между приложением Blynk и Arduino

Используемая здесь матрица RGB-светодиодов 8*5 содержит сорок индивидуально адресуемых RGB-светодиодов на основе драйвера WS2812B. Он имеет 24-битное управление цветом и 16,8 миллионов цветов на пиксель. Им можно управлять с помощью методики «Управление одним проводом». Это означает, что мы можем управлять всем светодиодным пикселем с помощью одного управляющего вывода.Во время работы со светодиодами я просмотрел техническое описание этих светодиодов, где я обнаружил, что диапазон рабочего напряжения экрана составляет от 4 до 6 В, а потребление тока составляет 50 мА на светодиод при 5 В с красным, зеленым, и синий на полной яркости. Он имеет защиту от обратного напряжения на контактах внешнего питания и кнопку сброса на плате для сброса Arduino. Он также имеет входной контакт внешнего питания для светодиодов, если достаточное количество энергии недоступно через внутреннюю схему.

Как показано на схематической диаграмме выше, нам нужно загрузить и установить приложение Blynk на наш смартфон, где можно управлять такими параметрами, как цвет и яркость. После настройки параметров, если в приложении происходят какие-либо изменения, это происходит в облаке Blynk, где наш компьютер также подключен и готов получать обновленные данные. Arduino Uno подключен к нашему ПК через USB-кабель с открытым коммуникационным портом, с помощью этого коммуникационного порта (COM-порта) можно обмениваться данными между облаком Blynk и Arduino UNO. ПК запрашивает данные из облака Blynk с постоянными интервалами времени, и когда обновленные данные получены, он передает их в Arduino и принимает определяемые пользователем решения, такие как управление яркостью светодиодов RGB и цветами. Светодиодный экран RGB размещается на светодиоде Arduino и подключается через один контакт данных для связи, по умолчанию он подключается через контакт D6 Arduino. Последовательные данные, отправленные с Arduino UNO, отправляются на экран Neopixel, который затем отражается на светодиодной матрице.

Необходимые компоненты

  • Ардуино УНО
  • Матричный экран RGB LED 8*5
  • Кабель USB A/B для Arduino UNO
  • Ноутбук/ПК

Adafruit RGB LED Shield и Arduino — аппаратное подключение

Светодиоды Neopixel WS2812B имеют три контакта, один для данных, а два других для питания, но этот специальный экран Arduino делает аппаратное подключение очень простым, все, что нам нужно сделать, это поместить светодиодную матрицу Neopixel на верхнюю часть Ардуино УНО. В нашем случае светодиод питается от стандартной шины Arduino 5V. После размещения экрана Neopixel Shield установка выглядит следующим образом:

Настройка приложения Blynk

Blynk – это приложение, которое может работать на устройствах Android и IOS для управления любыми устройствами Интернета вещей и устройствами с помощью наших смартфонов. Прежде всего, необходимо создать графический интерфейс пользователя (GUI) для управления светодиодной матрицей RGB. Приложение отправит все выбранные параметры из графического интерфейса в облако Blynk. В секции приемника у нас есть Arduino, подключенная к ПК через кабель последовательной связи. Следовательно, ПК запрашивает данные из облака Blynk, и эти данные отправляются в Arduino для необходимой обработки. Итак, приступим к настройке приложения Blynk.

Перед настройкой загрузите приложение Blynk из магазина Google Play (пользователи iOS могут загрузить его из App Store). После установки зарегистрируйтесь, используя свой адрес электронной почты и пароль.

Создание нового проекта:

После успешной установки откройте приложение, и там мы получим экран с опцией «Новый проект». Нажмите на него, и появится новый экран, где нам нужно установить такие параметры, как имя проекта, плата и тип подключения. В нашем проекте выберите устройство как «Arduino UNO», тип подключения как «USB» и нажмите «Создать».

После успешного создания проекта мы получим идентификатор аутентификации на нашу зарегистрированную почту. Сохраните идентификатор аутентификации для дальнейшего использования.

Создание графического пользовательского интерфейса (GUI):

Откройте проект в Blynk, щелкните знак «+», где мы получим виджеты, которые мы можем использовать в нашем проекте. В нашем случае нам нужна палитра цветов RGB, которая указана как «zeRGBa», как показано ниже.

Настройка виджетов:

После перетаскивания виджетов в наш проект теперь нам нужно установить его параметры, которые используются для отправки значений цвета RGB в Arduino UNO.

Нажмите ZeRGBa, после чего появится экран с названием ZeRGBa settings. Затем установите для параметра «Выход» значение «Объединить» и установите вывод на «V2», как показано на изображении ниже.

Код Arduino для управления светодиодным экраном Adafruit WS2812B RGB

После завершения аппаратного подключения код необходимо загрузить в Arduino. Пошаговое объяснение кода показано ниже.

Во-первых, включите все необходимые библиотеки. Откройте Arduino IDE, затем перейдите на вкладку Sketch и нажмите на опцию Включить библиотеку->Управление библиотеками. Затем найдите Blynk в поле поиска, а затем загрузите и установите пакет Blynk для Arduino UNO.

Здесь библиотека «Adafruit_NeoPixel.h» используется для управления светодиодной матрицей RGB. Чтобы включить его, вы можете скачать библиотеку Adafruit_NeoPixel по указанной ссылке. Получив это, вы можете включить его с помощью параметра «Включить ZIP-библиотеку».

Затем мы определяем количество светодиодов, необходимое для нашей светодиодной матрицы, а также определяем номер вывода, который используется для управления параметрами светодиодов.

Затем нам нужно поместить наш Blink-идентификатор аутентификации в массив auth[], который мы сохранили ранее.

Здесь программные последовательные контакты используются в качестве консоли отладки. Таким образом, контакты Arduino определены как отладочные серийные номера ниже.

Внутри настройки последовательная связь инициализируется с помощью функции Serial.begin, blynk подключается с помощью Blynk.begin и с помощью pixels.begin(), светодиодная матрица инициализируется.

На финальном этапе необходимо получить и обработать параметры, отправленные из приложения Blynk. В этом случае параметры были назначены виртуальному выводу «V2», как обсуждалось ранее в разделе настройки. Функция BLYNK_WRITE — это встроенная функция, которая вызывается всякий раз, когда изменяется состояние/значение соответствующего виртуального контакта. мы можем запускать код внутри этой функции, как и в любой другой функции Arduino.

Здесь написана функция BLYNK_WRITE для проверки входящих данных на виртуальный контакт V2. Как показано в разделе настройки Blink, данные цветных пикселей были объединены и назначены на контакт V2. Таким образом, мы также должны снова разъединиться после декодирования. Потому что для управления пиксельной матрицей светодиодов нам нужны данные всех трех отдельных цветных пикселей, таких как красный, зеленый и синий. Как показано в приведенном ниже коде, три индекса матрицы были прочитаны как param[0].asInt(), чтобы получить значение красного цвета. Точно так же все два других значения были получены и сохранены в 3 отдельных переменных. Затем эти значения присваиваются пиксельной матрице с помощью функции pixels.setPixelColor, как показано в приведенном ниже коде.

Здесь функция pixels.setBrightness() используется для управления яркостью, а функция pixels.show() используется для отображения заданного цвета в матрице.< /p>

Загрузка кода на плату Arduino

Во-первых, нам нужно выбрать ПОРТ Arduino в Arduino IDE, затем нам нужно загрузить код в Arduino UNO. После успешной загрузки запишите номер порта, который будет использоваться для настройки последовательной связи.

После этого найдите папку сценариев библиотеки Blynk на своем ПК. Он устанавливается при установке библиотеки, в которой была моя,

В папке сценария должен быть файл с именем «blynk-ser.bat», который представляет собой пакетный файл, используемый для последовательной связи, который нам нужно отредактировать с помощью блокнота. Откройте файл с помощью блокнота и измените номер порта на номер порта Arduino, который вы записали на последнем шаге.

После редактирования сохраните файл и запустите пакетный файл, дважды щелкнув его. Затем вы должны увидеть окно, как показано ниже:

Примечание: Если вы не видите это окно, показанное выше, и вам предлагается переподключиться, это может быть связано с ошибкой подключения ПК к плате Arduino. В этом случае проверьте соединение Arduino с ПК. После этого проверьте, отображается ли номер COM-порта в Arduino IDE или нет. Если он показывает действительный COM-порт, то он готов продолжить. Вам следует снова запустить пакетный файл.

Финальная демонстрация:

Теперь пришло время протестировать схему и ее функциональность. Откройте приложение Blynk, откройте графический интерфейс и нажмите кнопку «Воспроизвести». После этого вы можете выбрать любой из желаемых цветов, который будет отражаться на светодиодной матрице. Как показано ниже, в моем случае я выбрал красный и синий цвета, они отображаются на матрице.

Точно так же вы можете попытаться создать различные анимации с использованием этих светодиодных матриц, немного изменив кодировку.

Читайте также: