ардуино и SM74HC245D

Satsnow
Offline
Зарегистрирован: 19.12.2020

Всем привет . Есть экран бегущая строка из трёх сегментов 16*32 под управлением SM74HC245D . К сегментам идет шина 16 линий . Нашёл распиновку . Подскажите как распиновку на UNO сделать , и какую библиотеку выбрать ?

SLKH
Offline
Зарегистрирован: 17.08.2015

так в той статье на хабре расписано.

Satsnow
Offline
Зарегистрирован: 19.12.2020

Прочитал и посмотрел , спасибо. Хабра это что ?

Satsnow
Offline
Зарегистрирован: 19.12.2020

Библиотеки копирую из его же видео ?

b707
Offline
Зарегистрирован: 26.05.2017

Эта картинка из какой статьи - дайте ссылку.

Судя по распиновке - это обычная DMD светодиодная матрица. Для таких матриц есть куча библиотек. В том числе тут на форуме :)

Satsnow
Offline
Зарегистрирован: 19.12.2020

b707 пишет:

Эта картинка из какой статьи - дайте ссылку.

Судя по распиновке - это обычная DMD светодиодная матрица. Для таких матриц есть куча библиотек. В том числе тут на форуме :)

https://habr.com/ru/post/372215/

b707
Offline
Зарегистрирован: 26.05.2017

Ну я так и думал, обычная DMD

Автор статьи накрутил там сложностей. написал код в ИАРе :) Наверно чтоб никто повторить не смог

Для Уно есть готовые Ардуино библиотеки

https://github.com/freetronics/DMD

https://www.arduino.cc/reference/en/libraries/dmd2/

Для СТМ32 посоветую свою собственную библиотеку, выложенную на нашем форуме:

http://arduino.ru/forum/proekty/dmdstm32-versiya-biblioteki-dmd-dlya-stm32duino

Кстати,  в ветке довольно много информации по таким матрицам вообще, а не только для СТМ32

Satsnow
Offline
Зарегистрирован: 19.12.2020

Спасибо.

Satsnow
Offline
Зарегистрирован: 19.12.2020

Скачал вашу библиотеку . Попробовал запустить пример . Выдал

Arduino: 1.8.13 (Linux), Плата:"Arduino Uno"

dmd_demo:48:19: error: no matching function for call to 'SPIClass::SPIClass(int)'
 SPIClass dmd_spi(2);
                   ^
In file included from /home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/DMD_STM32.h:47:0,
                 from /home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:42:
/snap/arduino/50/hardware/arduino/avr/libraries/SPI/src/SPI.h:156:7: note: candidate: constexpr SPIClass::SPIClass()
 class SPIClass {
       ^~~~~~~~
/snap/arduino/50/hardware/arduino/avr/libraries/SPI/src/SPI.h:156:7: note:   candidate expects 0 arguments, 1 provided
/snap/arduino/50/hardware/arduino/avr/libraries/SPI/src/SPI.h:156:7: note: candidate: constexpr SPIClass::SPIClass(const SPIClass&)
/snap/arduino/50/hardware/arduino/avr/libraries/SPI/src/SPI.h:156:7: note:   no known conversion for argument 1 from 'int' to 'const SPIClass&'
/snap/arduino/50/hardware/arduino/avr/libraries/SPI/src/SPI.h:156:7: note: candidate: constexpr SPIClass::SPIClass(SPIClass&&)
/snap/arduino/50/hardware/arduino/avr/libraries/SPI/src/SPI.h:156:7: note:   no known conversion for argument 1 from 'int' to 'SPIClass&&'
dmd_demo:62:19: error: 'PB11' was not declared in this scope
 #define DMD_PIN_A PB11
                   ^
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:66:9: note: in expansion of macro 'DMD_PIN_A'
 DMD dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, DISPLAYS_ACROSS, DISPLAYS_DOWN, dmd_spi );
         ^~~~~~~~~
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:62:19: note: suggested alternative: 'B11'
 #define DMD_PIN_A PB11
                   ^
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:66:9: note: in expansion of macro 'DMD_PIN_A'
 DMD dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, DISPLAYS_ACROSS, DISPLAYS_DOWN, dmd_spi );
         ^~~~~~~~~
dmd_demo:63:19: error: 'PB12' was not declared in this scope
 #define DMD_PIN_B PB12
                   ^
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:66:20: note: in expansion of macro 'DMD_PIN_B'
 DMD dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, DISPLAYS_ACROSS, DISPLAYS_DOWN, dmd_spi );
                    ^~~~~~~~~
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:63:19: note: suggested alternative: 'PB2'
 #define DMD_PIN_B PB12
                   ^
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:66:20: note: in expansion of macro 'DMD_PIN_B'
 DMD dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, DISPLAYS_ACROSS, DISPLAYS_DOWN, dmd_spi );
                    ^~~~~~~~~
dmd_demo:65:22: error: 'PB10' was not declared in this scope
 #define DMD_PIN_SCLK PB10
                      ^
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:66:44: note: in expansion of macro 'DMD_PIN_SCLK'
 DMD dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, DISPLAYS_ACROSS, DISPLAYS_DOWN, dmd_spi );
                                            ^~~~~~~~~~~~
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:65:22: note: suggested alternative: 'B10'
 #define DMD_PIN_SCLK PB10
                      ^
/home/fedot/snap/arduino/current/Arduino/libraries/DMD_STM32-master/examples/STM32F1/dmd_demo/dmd_demo.ino:66:44: note: in expansion of macro 'DMD_PIN_SCLK'
 DMD dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, DISPLAYS_ACROSS, DISPLAYS_DOWN, dmd_spi );
                                            ^~~~~~~~~~~~
exit status 1
no matching function for call to 'SPIClass::SPIClass(int)'






 

Satsnow
Offline
Зарегистрирован: 19.12.2020

Пример DMD Demo.

Satsnow
Offline
Зарегистрирован: 19.12.2020

Подключил к цифровым пинам ардуино . PB1 к такому же цифровому выводу ардуино , так же все остальные .

b707
Offline
Зарегистрирован: 26.05.2017

Какая ардуина у вас? Для уно там отдельные примеры

Satsnow
Offline
Зарегистрирован: 19.12.2020

У меня уно . Какие примеры подойдут ?

b707
Offline
Зарегистрирован: 26.05.2017

examples\AVR

Satsnow
Offline
Зарегистрирован: 19.12.2020

b707 пишет:
examples\AVR

А где взять это пример ? У себя я этого примера не нашёл .

Satsnow
Offline
Зарегистрирован: 19.12.2020

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

dmd_cyr_uno:12:10: fatal error: TimerOne.h: No such file or directory
 #include <TimerOne.h>

          



 

b707
Offline
Зарегистрирован: 26.05.2017

Satsnow пишет:

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

dmd_cyr_uno:12:10: fatal error: TimerOne.h: No such file or directory
 #include <TimerOne.h>

значит надо скачать и поставить TimerOne.h ... удивительно, правда?

https://github.com/PaulStoffregen/TimerOne

 

Satsnow
Offline
Зарегистрирован: 19.12.2020

TimerOne.h это библиотека ?

Satsnow
Offline
Зарегистрирован: 19.12.2020

Установил вот что полдучилось при запуске.

Arduino: 1.8.13 (Linux), Плата:"Arduino Uno"

/tmp/arduino_modified_sketch_19792/dmd_cyr_uno.ino:17:36: warning: extra tokens at end of #include directive
 #include "st_fonts/UkrRusArial14.h";
                                    ^
Скетч использует 10660 байт (33%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 453 байт (22%) динамической памяти, оставляя 1595 байт для локальных переменных. Максимум: 2048 байт.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
Проблема загрузки в плату. Помощь по загрузке: http://www.arduino.cc/en/Guide/Troubleshooting#upload .



 

b707
Offline
Зарегистрирован: 26.05.2017

Satsnow пишет:

TimerOne.h это библиотека ?

да, одна из стандартных библиотек Ардуино.

Хм... может Вы напишете, что Вы пытаетесь сделать... А то судя по вопросам, это чуть ли не первый Ваш ардуино-проект. Если да - то сложновато для начинающего. Может что-то для начала попроще выбрать. а через несколько месяцев вернуться к матрицам?

b707
Offline
Зарегистрирован: 26.05.2017

Satsnow пишет:

Установил вот что полдучилось при запуске.

эта ошибка к моему коду отношения не имеет - у вас компьютер не имеет связи с платой ардуино. Для проверки попробуйте загрузить в плату любой другой скетч.

Satsnow
Offline
Зарегистрирован: 19.12.2020

Жму информация о плате выдает мне серийник .

Satsnow
Offline
Зарегистрирован: 19.12.2020

Вроде инициализация прошла . Панель мёртвая  . Буду разбираться .