viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Скрипт часов для матрицы max7219

Thu Jan 25, 2018 4:53 pm

Всем привет.
Подскажите у кого есть рабочий скрипт часов для матрицы max7219?
Нашёл вот такие но они почему-то не работают, хотя стандартный работает
https://youtu.be/J_jVooz-uNA

Или скрипт часов написан для старой версии драйвера матрицы max7219 или не хватает каких-то зависимости.

Code: Select all

pi@raspberrypi:~ $ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
Установку делал по этой ссылке
https://max7219.readthedocs.io/en/0.2.3/

vladnt
Posts: 78
Joined: Sun Feb 21, 2016 10:16 am

Re: Скрипт часов для матрицы max7219

Tue Jan 30, 2018 3:10 am

Только часы надо показывать ? или еще дату ?
Может Быстрее на базе рабочего примера написать

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Tue Jan 30, 2018 5:25 am

Вот этот желательно починить
https://github.com/mB-PiBox/max7219-exa ... imedate.py

Я примитивный сделал но не нравится что на экране бегущая строка.
И ещё а в этой матрицы можно регулировать яркость или нет.?
https://youtu.be/zxAP1QcKCI0

vladnt
Posts: 78
Joined: Sun Feb 21, 2016 10:16 am

Re: Скрипт часов для матрицы max7219

Tue Jan 30, 2018 11:56 am

А если в THONNY эту прогу запустить ругается ? и на что ?
сам контроллер по даташиту поддерживает регулировку яркости, но реализовано в библиотеке х.з. )
похоже вот это https://luma-led-matrix.readthedocs.io/en/latest/ продолжение проекта

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Tue Jan 30, 2018 12:07 pm

вот на что

Code: Select all

#!/usr/bin/env python


import os, time, sys
import multiprocessing
import max7219.led as led
from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.legacy import text, show_message
from luma.core.legacy.font import LCD_FONT, proportional

serial = spi(port=0, device=0, gpio=noop())
device = max7219(serial, cascaded=4, block_orientation=-90)

while(True):
	clock = time.strftime("%H%M")
	seconds = int(time.strftime("%S"))
	month = time.strftime(" %m")
	day = time.strftime(" %d")
	year = time.strftime("%Y")
	for n, c in enumerate(clock): 
		device.letter(n, ord(c))
	if seconds == 59 :
		for row in range(8):
			device.scroll_up()
			time.sleep(0.1)
		for n, c in enumerate(month): 
			device.letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			device.scroll_down()
			time.sleep(0.1)
		for n, c in enumerate(day): 
			device.letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			device.scroll_down()
			time.sleep(0.1)
		for n, c in enumerate(year): 
			device.letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			device.scroll_down()
			time.sleep(0.1)
		

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        pass		

Code: Select all

>>> %Run timedate.py
Traceback (most recent call last):
  File "C:\Users\viktor\Downloads\timedate.py", line 6, in <module>
    import max7219.led as led
ModuleNotFoundError: No module named 'max7219'

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Tue Jan 30, 2018 8:27 pm

а если вот так

Code: Select all

#!/usr/bin/env python


import os, time, sys
import multiprocessing




while(True):
	clock = time.strftime("%H%M")
	seconds = int(time.strftime("%S"))
	month = time.strftime(" %m")
	day = time.strftime(" %d")
	year = time.strftime("%Y")
	for n, c in enumerate(clock): 
		letter(n, ord(c))
	if seconds == 59 :
		for row in range(8):
			scroll_up()
			time.sleep(0.1)
		for n, c in enumerate(month): 
			letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			scroll_down()
			time.sleep(0.1)
		for n, c in enumerate(day): 
			letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			scroll_down()
			time.sleep(0.1)
		for n, c in enumerate(year): 
			letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			scroll_down()
			time.sleep(0.1)
		

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        pass		
то ошибка

Code: Select all

>>> %Debug timedate.py
Traceback (most recent call last):
  File "C:\Users\viktor\Downloads\timedate.py", line 17, in <module>
    letter(n, ord(c))
NameError: name 'letter' is not defined
>>> 

vladnt
Posts: 78
Joined: Sun Feb 21, 2016 10:16 am

Re: Скрипт часов для матрицы max7219

Wed Jan 31, 2018 9:46 am

Комменть строку

Code: Select all

import max7219.led as led
это для старой библиотеки

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Wed Jan 31, 2018 2:53 pm

vladnt wrote:
Wed Jan 31, 2018 9:46 am
Комменть строку

Code: Select all

import max7219.led as led
это для старой библиотеки
Не чего не получается

Code: Select all

#!/usr/bin/env python


import os, time, sys
import multiprocessing
from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.legacy import text, show_message
from luma.core.legacy.font import LCD_FONT, proportional

serial = spi(port=0, device=0, gpio=noop())
device = max7219(serial, cascaded=4, block_orientation=-90)

while(True):
	clock = time.strftime("%H%M")
	seconds = int(time.strftime("%S"))
	month = time.strftime(" %m")
	day = time.strftime(" %d")
	year = time.strftime("%Y")
	for n, c in enumerate(clock): 
		device.letter(n, ord(c))
	if seconds == 59 :
		for row in range(8):
			device.scroll_up()
			time.sleep(0.1)
		for n, c in enumerate(month): 
			device.letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			device.scroll_down()
			time.sleep(0.1)
		for n, c in enumerate(day): 
			device.letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			device.scroll_down()
			time.sleep(0.1)
		for n, c in enumerate(year): 
			device.letter(n, ord(c))
		time.sleep(1)
		for row in range(8):
			device.scroll_down()
			time.sleep(0.1)
		

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        pass		

Code: Select all

>>> %Debug timedate.py
Traceback (most recent call last):
  File "C:\Users\viktor\Downloads\timedate.py", line 6, in <module>
    from luma.led_matrix.device import max7219
ModuleNotFoundError: No module named 'luma'
>>> 
в терменале вот что

Code: Select all

pi@raspberrypi:~ $ sudo python test.py
Traceback (most recent call last):
  File "test.py", line 22, in <module>
    device.letter(n, ord(c))
AttributeError: 'max7219' object has no attribute 'letter'
pi@raspberrypi:~ $

vladnt
Posts: 78
Joined: Sun Feb 21, 2016 10:16 am

Re: Скрипт часов для матрицы max7219

Wed Jan 31, 2018 7:24 pm

модуль точно установлен ?
еще бы проверить какой питон при установке и при запуске.
на малине два питона подефолту )
попробуй sudo python3

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Wed Jan 31, 2018 7:27 pm

vladnt wrote:
Wed Jan 31, 2018 7:24 pm
модуль точно установлен ?
еще бы проверить какой питон при установке и при запуске.
на малине два питона подефолту )
Как это все проверить?
при запуске скрипта я полагаю что запускается питон 2

Code: Select all

pi@raspberrypi:~ $ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
Adafruit-BMP (1.5.2)
Adafruit-GPIO (1.0.3)
Adafruit-PureIO (0.2.1)
argcomplete (1.9.3)
asyncio (3.4.3)
attrs (17.4.0)
backports.shutil-get-terminal-size (1.0.0)
callable (0.1.2)
certifi (2018.1.18)
chardet (3.0.4)
cryptography (1.7.1)
decorator (4.2.1)
enum34 (1.1.6)
feedparser (5.2.1)
ffs (0.0.8.2)
idna (2.6)
ipaddress (1.0.17)
ipdb (0.10.3)
ipython (5.5.0)
ipython-genutils (0.2.0)
Jinja2 (2.10)
keyring (10.1)
keyrings.alt (1.3)
letter (0.5)
luma.core (1.3.0)
luma.emulator (1.0.2)
luma.examples (0.0.0, /home/pi/luma.examples)
luma.lcd (1.0.3)
luma.led-matrix (1.0.8, /usr/local/lib/python2.7/dist-packages/luma.led_matrix-1.0.8-py2.7.egg)
luma.oled (2.3.1)
MarkupSafe (1.0)
max7219 (0.2.3)
monotonic (1.4)
numpy (1.14.0)
pathlib2 (2.3.0)
pexpect (4.3.1)
pickleshare (0.7.4)
Pillow (5.0.0)
pip (9.0.1)
prompt-toolkit (1.0.15)
psutil (5.4.3)
ptyprocess (0.5.2)
pusherclient (0.3.0)
pyasn1 (0.1.9)
PyBluez (0.18)
pycrypto (2.6.1)
pygame (1.9.3)
Pygments (2.2.0)
pygobject (3.22.0)
pyxdg (0.25)
requests (2.18.4)
rpi-ws281x (3.0.6)
RPi.GPIO (0.6.3)
scandir (1.6)
SecretStorage (2.3.1)
setuptools (38.4.0)
simplegeneric (0.8.1)
simplejson (3.10.0)
six (1.10.0)
smbus2 (0.2.0)
spidev (3.2)
tendo (0.2.8)
traitlets (4.3.2)
urllib3 (1.22)
wcwidth (0.1.7)
websocket-client (0.46.0)
wheel (0.29.0)
win-unicode-console (0.5)
ws2812 (1.0.0)

Code: Select all

pi@raspberrypi:~ $ pip3 list
-bash: pip3: command not found
pi@raspberrypi:~ $

Code: Select all

pi@raspberrypi:~ $ pip show max7219
Name: max7219
Version: 0.2.3
Summary: A library to drive a MAX7219 LED serializer using hardware spidev
Home-page: https://github.com/rm-hull/max7219
Author: Richard Hull
Author-email: richard.hull@destructuring-bind.org
License: MIT
Location: /usr/local/lib/python2.7/dist-packages
Requires: spidev
pi@raspberrypi:~ $ pip show luma.led-matrix
Name: luma.led-matrix
Version: 1.0.8
Summary: A library to drive a MAX7219 LED serializer (using SPI) and WS2812 NeoPixels (using DMA)
Home-page: https://github.com/rm-hull/luma.led_matrix
Author: Richard Hull
Author-email: richard.hull@destructuring-bind.org
License: MIT
Location: /usr/local/lib/python2.7/dist-packages/luma.led_matrix-1.0.8-py2.7.egg
Requires: luma.core, ws2812, rpi-ws281x
pi@raspberrypi:~ $ pip show luma.core
Name: luma.core
Version: 1.3.0
Summary: A component library to support SBC display drivers
Home-page: https://github.com/rm-hull/luma.core
Author: Richard Hull
Author-email: richard.hull@destructuring-bind.org
License: MIT
Location: /usr/local/lib/python2.7/dist-packages
Requires: pillow, monotonic, smbus2, RPI.GPIO, spidev
pi@raspberrypi:~ $ pip show letter
Name: letter
Version: 0.5
Summary: Send you letters for fun or profit
Home-page: https://github.com/davidmiller/letter
Author: David Miller
Author-email: david@deadpansincerity.com
License: UNKNOWN
Location: /usr/local/lib/python2.7/dist-packages
Requires: jinja2, ffs
pi@raspberrypi:~ $

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Wed Jan 31, 2018 7:45 pm

vladnt wrote:
Wed Jan 31, 2018 7:24 pm

попробуй sudo python3
Все тоже самое

Code: Select all

pi@raspberrypi:~/max7219 $ pip3 list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
cryptography (1.7.1)
idna (2.2)
keyring (10.1)
keyrings.alt (1.3)
luma.core (1.4.0)
luma.led-matrix (1.0.8, /home/pi/max7219)
Pillow (5.0.0)
pip (9.0.1)
pyasn1 (0.1.9)
pycrypto (2.6.1)
pygobject (3.22.0)
python-apt (1.1.0b5)
pyxdg (0.25)
rpi-ws281x (3.0.6)
RPi.GPIO (0.6.3)
SecretStorage (2.3.1)
setuptools (33.1.1)
six (1.10.0)
smbus2 (0.2.0)
spidev (3.2)
wheel (0.29.0)
ws2812 (1.0.0)

Code: Select all

pi@raspberrypi:~ $ sudo python3 test.py
Traceback (most recent call last):
  File "test.py", line 6, in <module>
    from luma.led_matrix.device import max7219
  File "/home/pi/max7219/luma/led_matrix/device.py", line 38, in <module>
    from luma.core.device import device
  File "/usr/local/lib/python3.5/dist-packages/luma/core/device.py", line 7, in <module>
    from luma.core import mixin
  File "/usr/local/lib/python3.5/dist-packages/luma/core/mixin.py", line 5, in <module>
    from PIL import Image
  File "/usr/local/lib/python3.5/dist-packages/PIL/Image.py", line 58, in <module>
    from . import _imaging as core
ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directory
pi@raspberrypi:~ $ 

vladnt
Posts: 78
Joined: Sun Feb 21, 2016 10:16 am

Re: Скрипт часов для матрицы max7219

Thu Feb 01, 2018 10:11 pm

не совсем ))) сейчас на libopenjp2.so.7 ругается. Поищи на малинке вообще такой файл есть ?
Возможно что-то криво встало.

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Fri Feb 02, 2018 9:37 pm

vladnt wrote:
Thu Feb 01, 2018 10:11 pm
не совсем ))) сейчас на libopenjp2.so.7 ругается. Поищи на малинке вообще такой файл есть ?
Возможно что-то криво встало.
Установил пакет

Code: Select all

pi@raspberrypi:~ $ sudo apt-get install libopenjp2-7-dev
Все равно ошибка

Code: Select all

pi@raspberrypi:~ $ sudo python3 test.py
Traceback (most recent call last):
  File "test.py", line 22, in <module>
    device.letter(n, ord(c))
AttributeError: 'max7219' object has no attribute 'letter'
pi@raspberrypi:~ $ 
Как меня достала эта матрица и скрипт

vladnt
Posts: 78
Joined: Sun Feb 21, 2016 10:16 am

Re: Скрипт часов для матрицы max7219

Sat Feb 03, 2018 7:16 pm

А откуда этот test.py ?
Если смотреть код device.py то реально там такого атрибута нет (
Да есть проблемы с доками, все по английски. С мелочами приходиться разбираться долго ((((

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Sat Feb 03, 2018 8:39 pm

vladnt wrote:
Sat Feb 03, 2018 7:16 pm
А откуда этот test.py ?
Если смотреть код device.py то реально там такого атрибута нет (
Да есть проблемы с доками, все по английски. С мелочами приходиться разбираться долго ((((
Скрипт https://github.com/mB-PiBox/max7219-exa ... imedate.py
брал тут https://github.com/mB-PiBox/max7219-examples
Так- как он написан под старую библиотеку, и отказывается работать.
Вот и пытаюсь его адаптировать под новую библиотеку.
Хотя может проще заново написать но знаний нет

vladnt
Posts: 78
Joined: Sun Feb 21, 2016 10:16 am

Re: Скрипт часов для матрицы max7219

Tue Feb 06, 2018 3:27 am

А примеры для текущей версии библиотеки работают ?
https://luma-led-matrix.readthedocs.io/ ... l#examples

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Tue Feb 06, 2018 5:04 am

vladnt wrote:
Tue Feb 06, 2018 3:27 am
А примеры для текущей версии библиотеки работают ?
https://luma-led-matrix.readthedocs.io/ ... l#examples
Да работают
https://youtu.be/J_jVooz-uNA

viktor6
Posts: 24
Joined: Sun Aug 27, 2017 7:10 pm

Re: Скрипт часов для матрицы max7219

Thu Feb 08, 2018 9:43 pm

vladnt wrote:
Tue Feb 06, 2018 3:27 am
А примеры для текущей версии библиотеки работают ?
https://luma-led-matrix.readthedocs.io/ ... l#examples
Не подскажите как сделать чтобы время не двигалось (остановить бегущую строку)

Code: Select all

while(True):
	msg = time.strftime("%H:%M")

        show_message(device, msg, fill="white", font=proportional(LCD_FONT))
        time.sleep(1)

for offset in range(8):
    virtual.set_position((offset, offset))

Return to “Русский”