Код для поиска

8x8 светодиодная матрица с использованием модуля MAX7219 для Arduino

8x8 светодиодная матрица с использованием модуля MAX7219 для Arduino

В этом уроке мы научимся управлять 8x8 светодиодной матрицей с помощью модуля MAX7219 и Arduino. MAX7219 упрощает управление несколькими светодиодами, позволяя нам легко отображать символы и узоры. К концу этого проекта вы сможете отобразить слово "ROBOJAX" на матрице.

Для достижения этой цели мы будем использовать библиотеку LedControl, которая специально разработана для взаимодействия с MAX7219. Эта библиотека позволяет нам отправлять данные на светодиодную матрицу с минимальными усилиями. Если вы хотите лучше понять схему подключения и код, обязательно посмотрите связанное видео (в видео на 0:30).

Объяснение аппаратного обеспечения

Основные компоненты этого проекта включают модуль MAX7219 и матрицу светодиодов 8x8. MAX7219 - это интегральная схема, которая управляет отображением светодиодов, обрабатывая сигналы связи и управления от Arduino. Она использует последовательный интерфейс, что означает, что мы можем управлять многими светодиодами всего с помощью нескольких выводов от Arduino.

8x8 светодиодная матрица состоит из 64 отдельных светодиодов, расположенных в сетке. Каждый светодиод можно включать и выключать, отправляя соответствующие команды через MAX7219. Это позволяет отображать различные символы и графику на матрице.

Технические характеристики

ПроизводительМаксим Интегрейтед
Номер деталиMAX7219
Логическое/входное напряжение3.3В до 5.5В
Напряжение питания4.0В до 5.5В
Выходной ток (на канал)40 мА макс
Пиковый ток (на канал)100 мА макс
Руководство по частоте ШИМ100 Гц
Входные логические пороги2.0В (высокий) / 0.8В (низкий)
Падение напряжения / RДС(включено)/ насыщение0.2В тип.
Термальные пределы150°C
Пакет16-ДИП
Заметки / вариантыОбщая анодная конфигурация
  • Обеспечьте правильное питание (от 4,0 В до 5,5 В).
  • Используйте ограничивающие ток резисторы для каждого светодиода, чтобы предотвратить повреждение.
  • Держите проводку короткой, чтобы избежать помех.
  • Контролируйте рассеивание тепла; при необходимости используйте радиатор.
  • Дважды проверьте соединения пинов, чтобы избежать недопонимания.

Инструкции по проводке

Чтобы подключить MAX7219 к Arduino, соедините следующие контакты:

  • ПодключитеVCCпин MAX7219 к 5В Arduino.
  • ПодключитеGNDподключите к земле Arduino.
  • ПодключитеDINпин (Data In) к пину Arduino 12.
  • Подключите CLKподключите (Часы) к пину Arduino 11.
  • Подключите CSпин (выбор чипа) к пину 10 на Arduino.

Убедитесь, что все соединения надежны, прежде чем включать цепь. Провода проложены просто, но если у вас возникнут проблемы, внимательно проверьте соединения (в видео на 1:45).

Примеры кода и пошаговое руководство

В коде мы начинаем с подключения библиотеки LedControl, которая необходима для связи с MAX7219. Следующий фрагмент инициализирует объект LedControl:

LedControl lc=LedControl(12,11,10,1);

Эта строка устанавливает вывод данных, вывод тактового сигнала, вывод выбора чипа и количество устройств (1 в данном случае). Далее, вsetup()функция, мы активируем MAX7219 и устанавливаем яркость дисплея:

lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);

Это обеспечивает активность дисплея и готовность к отображению символов. Основная функция, которая управляет дисплеем, этоwriteArduinoOnMatrix(), который последовательно подсвечивает ряды матрицы для отображения букв.

Демонстрация / Что ожидать

Как только все будет подключено и код загружен, светодиодная матрица должна отобразить слово "ROBOJAX". Если дисплей не работает, проверьте наличие проблем, таких как плохие соединения или неправильные назначения выводов. Кроме того, убедитесь, что источник питания достаточен (в видео на 2:30).

Главы

  • Введение (0:00)
  • Обзор оборудования (0:30)
  • Инструкции по проводке (1:45)
  • Обзор кода (2:15)
  • Демонстрация (3:00)
4-8x8 LED matrix using a MAX7219 Arduino module
Язык: C++
/*
 * Это видео показывает, как использовать модуль MAX7219 с LED-матрицей 8x8 для отображения текста или любых символов на светодиодах. 
 * Смотрите видео на YouTube: https://youtu.be/AAiDwBKs9uE
 * 
 * Автор: Ахмад Шамшири для Robojax.com
 * 26 февраля 2017 года в Айаксе, Онтарио, Канада
 * Получите этот код и другие коды Arduino на Robojax.com
 * Учите Arduino шаг за шагом в структурированном курсе с полными материалами, схемами подключения и библиотеками
 * всё в одном месте.
 * 
 * Получите ранний доступ к моим видео через Patreon и укажите ваше имя в конце каждого
 * видео, которое я публикую на YouTube здесь: http://robojax.com/L/?id=63 (смотрите до конца этого видео для списка моих спонсоров)
 * 
 * Или сделайте пожертвование с помощью PayPal http://robojax.com/L/?id=64
 * 
 * Этот код предоставляется "КАК ЕСТЬ" без гарантии или обязательств. Может использоваться свободно, если вы сохраняете это уведомление в целости.
 * Этот код был загружен с Robojax.com
 * Эта программа является бесплатным программным обеспечением: вы можете перераспределять её и/или изменять
 * её в соответствии с условиями Общей публичной лицензии GNU, как опубликовано
 * Фондом свободного программного обеспечения, версии 3 Лицензии или
 * (по вашему выбору) любой более поздней версии.
 * 
 * Эта программа распространяется в надежде, что она будет полезной,
 * но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии
 * ТОРГОВОЙ СВОБОДЫ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. См. 
 * Общую публичную лицензию GNU для получения дополнительных сведений.
 * 
 * Вы должны были получить копию Общей публичной лицензии GNU
 * вместе с этой программой. Если нет, смотрите <https://www.gnu.org/licenses/>.
 * /
 * 
 * // Мы всегда должны включать библиотеку
 * // На основе проекта, опубликованного https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Теперь нам нужно устройство LedControl для работы с ним. // Настроено для RoboJax.com 26 февраля 2017 года в Айяксе, Онтарио, Канада. **** Эти номера контактов, вероятно, не будут работать с вашим оборудованием ***** контакт 12 подключен к DataIn контакт 11 подключен к CLK контакт 10 подключен к CS У нас только один MAX72XX.
 */
 LedControl lc=LedControl(12,11,10,1);

/*
 * мы всегда ждем немного между обновлениями дисплея */
 *  беззнаковое длинное время задержки=600;
 * 
 *  функция настройки() {
 *  /*
 *  MAX72XX находится в режиме энергосбережения при запуске,
 *  нам нужно сделать вызов для пробуждения
 */
   lc.shutdown(0,false);
/*
 * Установите яркость на среднее значение */ 
 * lc.setIntensity(0,8); 
 * /* и очистите дисплей
 */
   lc.clearDisplay(0);
 }

/*
 * Этот метод будет отображать символы слова "Arduino" один за другим на матрице. (вам нужно как минимум 5x7 светодиодов, чтобы увидеть все символы)
 */
 void writeArduinoOnMatrix() {
/*
 * здесь данные для символов */ 
 * 
 * // К
 * байт R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100}; 
 * байт O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000}; 
 * байт B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100}; 
 * байт J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000}; 
 * байт A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010}; 
 * байт X[8]={B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001}; 
 * байт love[8]={B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000}; 
 * 
 * /* Буква R
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,R[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // это для пустого
   }
 // ////////////// КОНЕЦ Письма R ///////

/*
 * Буква О */
 *  for (int i=0; i<8; i++){
 *  lc.setRow(0,i,O[i]);
 *  
 *  }
 *  
 *  задержка(delaytime);
 *  for(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// это для пустого
 *  } 
 *  //////////////// КОНЕЦ буквы О ///////
 *  
 *  
 *  /* Буква B
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,B[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // это для пустого
   }
 // //////////////// КОНЕЦ Письма B ///////

/*
 * Буква O */
 *  для (int i=0; i<8; i++){
 *  lc.setRow(0,i,O[i]);
 *  
 *  }
 *  
 *  задержка(delaytime);
 *  для(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// это для пустоты
 *  } 
 *  //////////////// КОНЕЦ буквы O ///////
 *  
 *  /* Буква J
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,J[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // это для пустого
   }
 // ////////////// END of Letter J ///////

/*
 * Буква A */
 *  for (int i=0; i<8; i++){
 *  lc.setRow(0,i,A[i]);
 *  
 *  }
 *  
 *  задержка(delaytime);
 *  for(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// это для пустого экрана
 *  } 
 *  //////////////// КОНЕЦ буквы A ///////
 *  
 *  /* Буква X
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,X[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // это для пустого
   }
 // ////////////// КОНЕЦ Письма X ///////



5-8x8 LED Matrix using a MAX7219 Arduino Module
Язык: C++
/*
 * Это видео показывает, как использовать модуль MAX7219 с матрицей светодиодов 8x8 для отображения текста или любых символов на светодиодах.  
 * Смотрите видео на YouTube: https://youtu.be/AAiDwBKs9uE  
 * 
 * Написано Ахмадом С. для Robojax.com  
 * 26 февраля 2017 года в Ajax, Онтарио, Канада  
 * Разрешение дано на распространение этого кода при условии, что эта запись сохранена вместе с кодом.  
 * Отказ от ответственности: Этот код предоставлен "КАК ЕСТЬ" и исключительно в образовательных целях.  
 * 
 * /
 * 
 * // Мы всегда должны подключать библиотеку  
 * // Основано на проекте, опубликованном на https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Теперь нам нужен объект LedControl для работы с ним. 
 * // Настроено для RoboJax.com 26 февраля 2017 года в Аяксе, Онтарио, Канада. 
 * **** Эти номера пинов, вероятно, не будут работать с вашим оборудованием ***** 
 * пин 1 подключен к DataIn 
 * пин 4 подключен к CLK 
 * пин 53 подключен к CS 
 * У нас только один MAX72XX.
 */
LedControl lc=LedControl(1,4,53,1); // эта строка определяет, может ли этот код работать с Arduino Mega или Arduino UNO

/*
 * мы всегда ждем немного между обновлениями дисплея */
 * unsigned long delaytime=600;
 * 
 * void setup() {
 *  /*
 *  MAX72XX находится в режиме энергосбережения при запуске,
 *  нам нужно выполнить пробуждение
 */
  lc.shutdown(0,false);
/*
 * Установите яркость на среднее значение */
 *  lc.setIntensity(0,8);
 *  /* и очистите дисплей
 */
  lc.clearDisplay(0);
}

/*
 * Этот метод будет отображать символы слова "Arduino" один за другим на матрице. (вам нужно как минимум 5x7 светодиодов, чтобы увидеть все символы)
 */
void writeArduinoOnMatrix() {
/*
 * здесь данные для символов */ 
 * 
 *  // К
 *  байт R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 *  байт O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000}; 
 *  байт B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 *  байт J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 *  байт A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010}; 
 *  байт X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 *  байт love[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000}; 
 * 
 *  /* Буква R
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,R[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // это предназначено для пустоты
  }
 // ///////////////// КОНЕЦ Письма R ///////

/*
 * Буква O */
 *  for (int i=0; i<8; i++){
 *  lc.setRow(0,i,O[i]);
 * 
 *  }
 *  
 *  задержка(delaytime);
 *  for(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// это для пустого
 *  } 
 * /////////////// КОНЕЦ буквы O ///////
 * 
 *  /* Буква B
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,B[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // это предназначено для пустоты
  }
 // ///////////// КОНЕЦ Письма B ///////

/*
 * Буква O */
 *  для (int i=0; i<8; i++){
 *  lc.setRow(0,i,O[i]);
 * 
 *  }
 *  
 *  задержка(delaytime);
 *  для(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// это для пустоты
 *  } 
 * /////////////// КОНЕЦ Буквы O ///////
 * 
 *  /* Буква J
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,J[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // это предназначено для пустоты
  }
 // ///////////// КОНЕЦ Письма J ///////

/*
 * Письмо A */
 *  для (int i=0; i<8; i++){
 *  lc.setRow(0,i,A[i]);
 * 
 *  }
 *  
 *  задержка(delaytime);
 *  для(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// это для пустоты
 *  } 
 * /////////////// КОНЕЦ Письма A ///////
 * 
 *  /* Письмо X
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,X[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // это предназначено для пустоты
  }
 // ///////////// КОНЕЦ Письма X ///////



Файлы📁

Нет доступных файлов.