Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Arduino Nano Clock со светодиодной матрицей 4x64 (новая версия)

Компоненты и расходные материалы

Arduino Nano R3
× 1
Светодиодная матрица
× 1
Фоторезистор
× 1
Макет (общий)
× 1
DS3231
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте


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

Купив по хорошей цене 4-ячеечный дисплей, я поискал на Hackster доступные проекты:их несколько, для Arduino Nano. Если вы хотите видеть часы, минуты и секунды одновременно:только несколько проектов работают, потому что вам нужны цифры меньшего размера, чем широко доступные с 5x7 пикселей на цифру. Можно использовать библиотеку MD_Parola, но размер кода слишком велик для простых часов. Другим протестированным вариантом была библиотека Max72xxPanel, но она слишком старая и вызывает другие библиотеки. Наконец, проект основан на базовой интерфейсной библиотеке MD_MAX722XX, включенной во все остальные.

Замечания с этого сайта заставили меня пересмотреть аппаратные аспекты и код.

- Есть много библиотек под названием DS3231. Я использую вот это:http://www.rinkydinkelectronics.com/library.php?id=73

Поддержка библиотеки Arduino / chipKit для часов реального времени DS3231 I2C Copyright (C) 2015 Rinky-Dink Electronics, Henning Karlsen. Все права защищены

- Первое:светодиодный матричный дисплей. На рынке есть несколько моделей, поэтому очень вероятно, что после загрузки этого кода на дисплее появятся странные вещи. Решение:загрузите этот пример из библиотеки «MD_MAX72xx_lib.h»:«MD_MAX72xx_HW_Mapper.ino» и найдите свою модель оборудования. В моем коде модель была определена:#define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW, но это может не работать, пока вы не установите правильную модель!

- Милые секундочки не появлялись в последнее время? Теперь (v2) шрифты для этих секунд включены в код, поэтому нет необходимости изменять какую-либо другую библиотеку.

- Из-за обновлений Arduino возник длинный список предупреждений при компиляции. Теперь месяцы находятся в двумерном массиве символов и больше не используют указатель. Любые другие предупреждения поступают из библиотеки DS3231.h, но их можно игнорировать.

- Мигающие точки теперь всего 2 точки! Точные секунды показаны с использованием моих шрифтов 3x5 после «чч:мм». Более того, точки столбца ":" мигают почти два раза в секунду, просто чтобы показать, что он жив!

- Ответ на запрос:время отображается в течение 53 секунд каждую минуту, а в течение последних 7 секунд отображаются дата и температура.

- День недели также может быть показан, если вы не закомментируете две строки в цикле (). В этом случае вы можете уменьшить интервал с 53 секунд до 51.

- Если вы предпочитаете 12-часовой формат, см. Один из моих старых ответов.

- Время RTC можно установить в последовательном мониторе Arduino, написав в поле ввода ДД / ММ / ГГГГ чч:мм:сс (не забудьте пробел между ними) и нажав Enter / Отправить. Это можно сделать, когда подключен USB-кабель и работает Serial Monitor (правильный COM и скорость передачи).

В новом коде для переменных используется 13558 байтов (44%) и 372 байта (18%), поэтому он немного короче!

Дата отображается как «дд пн», а комнатная температура в градусах. Цельсия (оценка с использованием внутреннего датчика RTC) отображается на отдельной странице. Яркость регулируется фоторезистором. Однако код работает даже без датчика освещенности.

Спасибо за интерес, проявленный кнопкой "уважение"!

Код

  • СТАРАЯ версия - часы Arduino Nano Dot Matrix
  • Новая версия (v2) - часы Arduino Nano Dot Matrix
СТАРАЯ версия - часы Arduino Nano Dot Matrix Arduino
Поскольку многие библиотеки изменились с момента первого выпуска, этот код устарел. Используйте новую версию Все подключения описаны в коде. Для мелких шрифтов измените несколько строк в MD_MAX72xx_font.cpp, как описано в коде.
 / * ВНИМАНИЕ:исходный код теперь устарел. Используйте новый (версия 2) * Часы Arduino Nano DS3231 со светодиодной матрицей 4x (8x8) SPI * * Логика Arduino Nano 5V - прога 32кБ. пробел * Инструменты:Плата:Arduino Nano; Процессор:ATmega328P (старый загрузчик) !! * LED Matrix 4x (8x8) SPI с разъемом на правой стороне (последний модуль) * https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html? Rmmds =myorder &cur_warehouse =CN * * СОЕДИНЕНИЯ:*>> LCD 4x64 -> Arduino Nano:(с использованием аппаратного SPI):* 5V -> 5V pin * GND -> GND pin * CLK_PIN -> 13 // или SCK * DATA_PIN -> 11 // или MOSI * CS_PIN -> 10 // или SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4 * SCL ( CLK) -> A5 * Вдохновлено:1) часами Arduino от AnthoTRONICS Последнее изменение:22 марта 2019 г. * но без MD_parola из-за его большого размера! Новая функция getdate. * 2) Самые простые цифровые часы UNO от plouc68000:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino от Леонардо Спосина, но здесь без "Max72xxPanel.h" * https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Не используется Max72xxPanel.h, но все равно используются цифры небольшого размера. Небольшой код здесь. * Замените в библиотеке MD_MAX72XX / src / MD_MAX72xx_font.cpp:* 1) #define USE_NEW_FONT 1 * 2) шрифты # 148 ... 158 необходимо заменить шрифтами 3x5:3, 248, 136, 248, / / 48 0 3, 144, 248, 128, // 49 1 3, 200, 168, 184, // 50 2 3, 136, 168, 248, // 51 3 3, 112, 72, 224, // 52 4 3, 184, 168, 232, // 53 5 3, 248, 168, 232, // 54 6 3, 8, 232, 24, // 55 7 3, 248, 168, 248, // 56 8 3 , 184, 168, 248, // 57 9 1, 80, // 58:* * проект:13790 байт (44%); переменные 361 байт (17%) * Автор:MVP https://www.hackster.io/MVP*/#include  #include "DS3231.h" #include "MD_MAX72xx_lib.h" // # include " Font_Data.h "DS3231 rtc (SDA, SCL); // Часы реального времениconst байт LDR_PIN =A2; // Вывод датчика LDR # определить MAX_DEVICES 4 // Определить выводы # определить CLK_PIN 13 // или SCK # определить DATA_PIN 11 // или MOSI # определить CS_PIN 10 // или SS # определить HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW # определить USE_NEW_FONT 1 # определить BUF_SIZE 20 // размер текстового буфера # define CHAR_SPACING 1 // пикселей между символамиchar buf [BUF_SIZE], secs [4]; uint8_t dots; // аппаратный интерфейс SPI // Max72xxPanel matrix =Max72xxPanel (CS_PIN, H_DISPLAYS, V_DISPLAYSX); MD_MAX matrix =MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); const byte WAIT =100; const byte SPACER =1; byte FONT_WIDTH; bool timeset =false; void adjustClock (String data) {byte _day =data.substring (0,2) .toInt (); byte _month =data.substring (3,5) .toInt (); int _year =data.substring (6,10) .toInt (); байт _hour =data.substring (11,13) .toInt (); byte _min =data.substring (14,16) .toInt (); байт _sec =data.substring (17,19) .toInt (); rtc.setTime (_hour, _min, _sec); rtc.setDate (_day, _month, _year); Serial.println (F (">> Дата и время успешно установлено!")); timeset =true;} байт ledintensitySelect (int light) {byte _value =0; если (свет> =0 &&свет <=127) {_value =12; } иначе, если (свет> =128 &&свет <=319) {_value =3; } иначе, если (свет> =320 &&свет <=512) {_value =0; } return _value;}; void printText (uint8_t modStart, uint8_t modEnd, char * pMsg) // Распечатайте текстовую строку в указанные модули светодиодной матрицы. // Область сообщения заполняется пустыми столбцами после печати. ​​{uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf [FONT_WIDTH]; int16_t col =((modEnd + 1) * COL_SIZE) - 1; matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::OFF); do // конечный автомат для печати символов в доступном пространстве {switch (state) {case 0:// Загрузить следующий символ из таблицы шрифтов // если мы достигли конца сообщения, сбросить указатель сообщения if (* pMsg =='\ 0') {showLen =col - (modEnd * COL_SIZE); // символы заполнения state =2; ломать; } // получаем следующий символ из файла шрифта showLen =matrix.getChar (* pMsg ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen =0; состояние ++; // !! намеренно перейти в следующее состояние, чтобы начать отображение case 1:// отображение следующей части матрицы символов. setColumn (col--, cBuf [curLen ++]); // закончили с символом шрифта, теперь отображаем пространство между символами if (curLen ==showLen) {showLen =CHAR_SPACING; состояние =2; } ломать; case 2:// инициализировать состояние для отображения пустых столбцов curLen =0; состояние ++; // не выполняем случай 3:// отображаем межсимвольный интервал или конец сообщения (пустые столбцы) matrix.setColumn (col--, 0); curLen ++; если (curLen ==showLen) состояние =0; ломать; по умолчанию:col =-1; // это определенно завершает цикл do}} while (col> =(modStart * COL_SIZE)); matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::ON);} void setup () {pinMode (LDR_PIN, INPUT_PULLUP); Serial.begin (9600); Serial.println (F (">> Светодиодные матричные часы Arduino 32x8!")); Serial.println (F (">> Используйте формат <дд / мм / гггг чч:мм:сс> для установки даты и часа!")); rtc.begin (); matrix.begin (); matrix.clear (); FONT_WIDTH =5 + ПРОБЕЛ; // Ширина шрифта 5 пикселей matrix.control (MD_MAX72XX ::INTENSITY, 2);; // Используйте значение от 0 до 15 для яркости} void getDate () // Установка даты:Код для чтения даты на часах {char * months [] ={«Янв», «Фев», «Март», «Апрель», «Май», «июнь», «июль», «август», «сен», «октябрь», «ноя», «декабрь»}; Строка dts =rtc.getDateStr (); // Получить dd / mm / yyyy string String dds =dts.substring (0,2); // Извлечь строку даты mms =dts.substring (3,5); // Извлечь месяц int mm =mms.toInt (); // Преобразовать в номер месяца dds.concat (""); dds.concat (String (месяцы [мм-1])); // Восстановить строку даты как "dd Mmm" dds.toCharArray (buf, sizeof (buf)); // буфер возврата} void getHour () // Установка даты:Код для чтения даты на часах {String dts =rtc.getTimeStr (); // Получить hh:mm:ss string String hhs =dts.substring (0,2); // Извлечь час int hh =hhs.toInt (); // Преобразовать в число if (hh <10) dots =7; если (чч> 19 &&чч <24) точек =13; если ((чч> 9 &&чч <20) || (чч ==21)) точки =11; если (чч ==1) точки =5; если (чч ==11) точек =10; // Строка outmsg =dts.substring (0,5); // Извлечь hh:mm (необязательно) String outmsg =String (hh); // Извлекаем h, если h <10 outmsg.concat (":"); // добавляем:outmsg.concat (dts.substring (3,5)); // добавляем мм outmsg.toCharArray (buf, BUF_SIZE);} void showsec () {String dts =rtc.getTimeStr (); // Получить hh:mm:ss string String scs1 =dts.substring (6,7); Строка scs2 =dts.substring (7); char sc1 =148 + scs1.toInt (); // Преобразование в индекс char char sc2 =148 + scs2.toInt (); // Преобразование в индекс char matrix.setChar (6, sc1); matrix.setChar (2, sc2);} void loop () {byte ledIntensity =ledintensitySelect (analogRead (LDR_PIN)); matrix.control (MD_MAX72XX ::INTENSITY, ledIntensity);; // Используйте значение от 0 до 15 для яркости // Показать чч:мм из buf getHour (); printText (0, МАКС_УСТРОЙСТВА-1, buf); задержка (WAIT); // Мигающие две точки:for (uint8_t i =0; i <8; i ++) {matrix.setColumn (MAX_DEVICES * 8 точек, 36); showsec (); задержка (250); matrix.setColumn (MAX_DEVICES * 8 точек, 0); showsec (); задержка (250); } // Выход путем прокрутки вверх:for (uint8_t i =0; i <8; i ++) {matrix.transform (MD_MAX72XX ::TSU); задержка (2 * WAIT); задержка (WAIT); } getDate (); printText (0, МАКС_УСТРОЙСТВА-1, buf); задержка (20 * WAIT); int temp =rtc.getTemp (); temp =temp-1; // Смещение -1 C String outmsg =String (temp); outmsg.concat («C»); outmsg.toCharArray (buf, BUF_SIZE); printText (0, МАКС_УСТРОЙСТВА-1, buf); задержка (20 * WAIT); // Установка времени в RTC:if (Serial.available ()> 0 &×et ==false) {adjustClock (Serial.readString ()); }} 
Новая версия (v2) - Часы Arduino Nano Dot Matrix Arduino
Обновлено в соответствии с новыми библиотеками.
 / * Часы Arduino Nano DS3231 со светодиодной матрицей 4x (8x8) SPI * Версия 2 - обновлено 15/05 / 2-21 * Логика Arduino Nano 5V - 32кБ прог. пробел * Инструменты:Плата:Arduino Nano; Процессор:ATmega328P (старый загрузчик) !! * LED Matrix 4x (8x8) SPI с разъемом на правой стороне (последний модуль) * https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html? Rmmds =myorder &cur_warehouse =CN * * СОЕДИНЕНИЯ:*>> LCD 4x64 -> Arduino Nano:(с использованием аппаратного SPI):* 5V -> 5V pin * GND -> GND pin * CLK_PIN -> 13 // или SCK * DATA_PIN -> 11 // или MOSI * CS_PIN -> 10 // или SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4 * SCL ( CLK) -> A5 * Вдохновлено:1) часами Arduino от AnthoTRONICS Последнее изменение:22 марта 2019 г. * но без MD_parola из-за его большого размера! Новая функция getdate. * 2) Самые простые цифровые часы UNO от plouc68000:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino от Леонардо Спосина, но здесь без "Max72xxPanel.h" * https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Не используется Max72xxPanel.h, но все равно используются цифры небольшого размера. Небольшой код здесь. * * Проект:113558 байт (44%); переменные 372 байта (17%) * Автор:MVP https://www.hackster.io/MVP*/#include  #include "DS3231.h" #include "MD_MAX72xx_lib.h" // # include " Font_Data.h "DS3231 rtc (SDA, SCL); // Часы реального времениconst байт LDR_PIN =A2; // Вывод датчика LDR # определить MAX_DEVICES 4 // Определить выводы # определить CLK_PIN 13 // или SCK # определить DATA_PIN 11 // или MOSI # определить CS_PIN 10 // или SS // Определить под вашей аппаратной моделью светодиодной матрицы:// # определить HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW # определить HARDWARE_TYPE MD_MAX72XX ::FC16_HW # определить USE_NEW_FONT 1 # определить BUF_SIZE 20 // размер текстового буфера # определить CHAR_SPACING 1 // пиксели между символамиchar buf [BUF_SIZE]; ss, dots; // Определение мелких шрифтов:uint8_t Font3x5 [10] [3] ={{248, 136, 248}, // 48 0 {144, 248, 128}, // 49 1 {200, 168 , 184}, // 50 2 {136, 168, 248}, // 51 3 {112, 72, 224}, // 52 4 {184, 168, 232}, // 53 5 {248, 168, 232 }, // 54 6 {8, 232, 24}, // 55 7 {248, 168, 248}, // 56 8 {184, 168, 248}}; // 57 9символов месяцев [12] [4] ={«Янв», «Фев», «Мар», «Апр», «Май», «Июнь», «Июл», «Август», «Сен», « Oct "," Nov "," Dec "}; char * wday; // аппаратный интерфейс SPI // Матрица Max72xxPanel =Max72xxPanel (CS_PIN, H_DISPLAYS, V_DISPLAYS); MD_MAX72XX matrix =MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); =100; const byte SPACER =1; byte FONT_WIDTH; bool timeset =false; void adjustClock (String data) {byte _day =data.substring (0,2) .toInt (); byte _month =data.substring (3,5) .toInt (); int _year =data.substring (6,10) .toInt (); байт _hour =data.substring (11,13) .toInt (); byte _min =data.substring (14,16) .toInt (); байт _sec =data.substring (17,19) .toInt (); rtc.setTime (_hour, _min, _sec); rtc.setDate (_day, _month, _year); Serial.println (F (">> Дата и время успешно установлено!")); timeset =true;} байт ledintensitySelect (int light) {byte _value =0; если (свет> =0 &&свет <=127) {_value =12; } иначе, если (свет> =128 &&свет <=319) {_value =3; } иначе, если (свет> =320 &&свет <=512) {_value =0; } return _value;}; void printText (uint8_t modStart, uint8_t modEnd, char * pMsg) // Распечатайте текстовую строку в указанные модули светодиодной матрицы. // Область сообщения заполняется пустыми столбцами после печати. ​​{uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf [FONT_WIDTH]; int16_t col =((modEnd + 1) * COL_SIZE) - 1; matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::OFF); do // конечный автомат для печати символов в доступном пространстве {switch (state) {case 0:// Загрузить следующий символ из таблицы шрифтов // если мы достигли конца сообщения, сбросить указатель сообщения if (* pMsg =='\ 0') {showLen =col - (modEnd * COL_SIZE); // символы заполнения state =2; ломать; } // получаем следующий символ из файла шрифта showLen =matrix.getChar (* pMsg ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen =0; состояние ++; // !! намеренно перейти в следующее состояние, чтобы начать отображение case 1:// отображение следующей части матрицы символов. setColumn (col--, cBuf [curLen ++]); // закончили с символом шрифта, теперь отображаем пространство между символами if (curLen ==showLen) {showLen =CHAR_SPACING; состояние =2; } ломать; case 2:// инициализировать состояние для отображения пустых столбцов curLen =0; состояние ++; // не выполняем случай 3:// отображаем межсимвольный интервал или конец сообщения (пустые столбцы) matrix.setColumn (col--, 0); curLen ++; если (curLen ==showLen) состояние =0; ломать; по умолчанию:col =-1; // это определенно завершает цикл do}} while (col> =(modStart * COL_SIZE)); matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::ON);} void setup () {pinMode (LDR_PIN, INPUT_PULLUP); Serial.begin (9600); Serial.println (F (">> Светодиодные матричные часы Arduino 32x8!")); Serial.println (F (">> Используйте формат <дд / мм / гггг чч:мм:сс> для установки даты и часа!")); rtc.begin (); matrix.begin (); matrix.clear (); FONT_WIDTH =5 + ПРОБЕЛ; // Ширина шрифта 5 пикселей matrix.control (MD_MAX72XX ::INTENSITY, 2);; // Используйте значение от 0 до 15 для яркости rtc.setDOW (); // Требуется для нового RTC} void getDate () // Установка даты:Код для чтения даты на часах {String dts =rtc.getDateStr (); // Получить dd / mm / yyyy string String dds =dts.substring (0,2); // Извлечь строку даты mms =dts.substring (3,5); // Извлечь месяц int mm =mms.toInt (); // Преобразовать в номер месяца dds.concat (""); dds.concat (String (месяцы [мм-1])); // Восстановить строку даты как "dd Mmm" dds.toCharArray (buf, sizeof (buf)); // буфер возврата wday =rtc.getDOWStr (2);} void getHour () // Установка даты:Код для чтения даты часов {String dts =rtc.getTimeStr (); // Получить hh:mm:ss string String hhs =dts.substring (0,2); // Извлечь часовую строку mms =dts.substring (3,5); // Извлечь минуты hh =hhs.toInt (); // Преобразовать в число mm =mms.toInt (); // Преобразование в число mm ss =(dts.substring (6,8)). ToInt (); // Извлечь секунды как число if (hh> =0 &&hh <10) dots =7; если (чч> 9 &&чч <20) точек =11; если (чч> 19 &&чч <25) точек =13; если (чч% 10 ==1) точки- =2; // Строка outmsg =dts.substring (0,5); // Извлечь hh:mm (необязательно) String outmsg =String (hh); // Извлечь h, если h <10 // outmsg.concat (":"); // добавляем:но на 2 столбца !! outmsg.concat (символ (124)); // добавляем 1 полный столбец между числами outmsg.concat (dts.substring (3,5)); // добавляем mm outmsg.toCharArray (buf, BUF_SIZE);} // Новая версия функции с использованием небольших встроенных шрифтовvoid showsec (uint8_t secs) {uint8_t secs1 =secs% 10; uint8_t secs2 =сек / 10; для (uint8_t k =0; k <3; k ++) {matrix.setColumn (MAX_DEVICES * 8-26-k, Font3x5 [secs2] [k]); matrix.setColumn (MAX_DEVICES * 8-30-k, Font3x5 [secs1] [k]); }} void loop () {byte ledIntensity =ledintensitySelect (analogRead (LDR_PIN)); matrix.control (MD_MAX72XX ::INTENSITY, ledIntensity);; // Используйте значение от 0 до 15 для яркости getHour (); // Считываем время из RTC printText (0, MAX_DEVICES-1, buf); // Показать чч | мм из буфера matrix.setColumn (MAX_DEVICES * 8 точек, 0); // Очистить | беззнаковый длинный inst =millis (); // отмечаем этот момент while (ss <53) {// Первые 53 секунды каждой минуты показываем время while (millis () - inst> 1000) {inst =millis (); ss ++; // Увеличиваем секунды showsec (ss); // Показать секунды для (uint8_t i =0; i <2; i ++) {matrix.setColumn (MAX_DEVICES * 8 точек, 36); // Мигающие две точки:delay (240); matrix.setColumn (MAX_DEVICES * 8 точек, 0); задержка (240); }}} // Затем «время» прокручивается вверх:for (uint8_t i =0; i <8; i ++) {matrix.transform (MD_MAX72XX ::TSU); задержка (3 * WAIT); } // Записываем текущую дату:getDate (); printText (0, МАКС_УСТРОЙСТВА-1, buf); задержка (20 * WAIT); // Записываем день недели (если раскомментировано):// printText (0, MAX_DEVICES-1, wday); // задержка (20 * WAIT); // Записываем расчетную температуру в помещении с датчика RTC int temp =rtc.getTemp (); temp =temp-1; // Смещение -1 C String outmsg =String (temp); outmsg.concat («C»); outmsg.toCharArray (buf, BUF_SIZE); printText (0, МАКС_УСТРОЙСТВА-1, buf); задержка (20 * WAIT); // Установка времени в RTC, если последовательный монитор активирован в Arduino IDE:if (Serial.available ()> 0 &×et ==false) {adjustClock (Serial.readString ()); }} 

Схема

На основе Леонардо Спосины, но #define CS_PIN (Матрица) <--> 10 (Нано)
Схемы ПОЧТИ одинаковы для всех проектов Matrix. Здесь фоторезистор оригинальный. Как указано в коде:#define CS_PIN (Matrix) <--> 10 (Nano) https://github.com/leonardosposina/arduino-led-dot-matrix-clock

Производственный процесс

  1. Часы Arduino с исламским временем молитв
  2. Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
  3. Arduino с Bluetooth для управления светодиодом!
  4. Игра с дисплеем Nextion
  5. Светодиодная матрица + датчик движения дверной дисплей [Arduino Holiday]
  6. Arduino Nano:управление двумя шаговыми двигателями с помощью джойстика
  7. Перекидные часы Arduino с одной светодиодной матрицей
  8. Управление светодиодной матрицей с помощью Arduino Uno
  9. Портативный счетчик Гейгера с Arduino Nano
  10. Умный мультиплексор зарядного устройства с умным дисплеем