Светодиодная иллюминация с помощью WndLpt

Резюме

Полезные ссылки:

 

Техническое описание программы WndLpt

Подключенние 12 (или 8) светодиодов к LPT порту

ringa.png (11065 bytes)

 

Введение

Если вы подключили несколько светодиодов к выводам LPT порта и ищете наиболее удобный способ управлять ими (мигать по заранее заданному алгоритму) — эта статья для вас.

 

Итак, WndLpt заставит работать светодиодную иллюминацию так как вам надо (по ранее заданному алгоритму, например, «бегущие огни»).

Что делать?

1. Скачать программу WndLpt

2. Подсчитать количество подключенных светодиодов (12, 8 или меньше?).

3. Запустить WndLpt.exe

4. Убедиться что светодиоды мигают

5. Читать дальше

Пишем сценарий (скрипт) для «Бегущих огней»

 

Предположим, светодиоды выстроены в линейку и требуется запрограммировать эффект «Бегущие огни». Создаём текстовый файл и в него помещаем следующий текст:

 

START:

100000000000
010000000000
001000000000
000100000000
000010000000
000001000000
000000100000
000000010000
000000001000
000000000100
000000000010
000000000001
goto START

 

Сохраняем файл, затем перетаскиваем его мышкой на окно программы WndLpt. В результате, на экране увидим примерно следующее:

 

WndLpt cycla_1.txt

 

При этом иллюминация будет работать следующим образом:

WndLpt: Бегущий огонь

WndLpt: Бегущий огонь

Если в вашем устройстве не 12, а меньше светодиодов - просто удалите лишние строчки из файла.

 

Писать сценарии описанным выше методом легко и понятно, но неудобно. Намного «логичнее» представить программу следующим образом:

 

cmd count 12 ; Установка кол-ва светодиодов в схеме
100000000000 ; Установка первоначального состояния *
CYCLE: ; Определили метку CYCLE
rol ; Команда сдвигает состояние светодиодов влево *
goto CYCLE ; Переход к метке CYCLE

 

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

WndLpt: Бегущие огни

WndLpt: Бегущие огни

в сценарии необходимо сделать лишь одно изменение (выделено цветом):

 

cmd count 12 ; Установка кол-ва светодиодов в схеме
100010001000 ; Установка первоначального состояния *
CYCLE: ; Определили метку CYCLE
rol ; Команда сдвигает состояние светодиодов влево *
goto CYCLE ; Переход к метке CYCLE

 

При обычном подходе пришлось бы писать новый сценарий:

 

START:

100010001000
010001000100
001000100010
000100010001
goto START

 

«Маятник»

Рассмотрим более сложный пример «Маятник»:

WndLpt: Маятник

WndLpt: Заполнение

«Логичный» сценарий для него выглядит следующим образом:

 

cmd count 12 ; Установка кол-ва светодиодов в схеме
100000000000 ; Установка первоначального состояния *
CYCLE: ; Определили метку CYCLE
rol 11 ; Команда сдвигает состояние светодиодов влево *
ror 11 ; Команда сдвигает состояние светодиодов вправо *
goto CYCLE ; Переход к метке CYCLE

 

Простой но неудобный сценарий выглядит так:

 

START:
100000000000
010000000000
001000000000
000100000000
000010000000
000001000000
000000100000
000000010000
000000001000
000000000100
000000000010
000000000001
000000000010
000000000100
000000001000
000000010000
000000100000
000001000000
000010000000
000100000000
001000000000
010000000000
goto START

 

Здесь работает правило: чем сложнее сценарий тем полезнее и эффективнее использовать его «замудрёную» форму.

 

«Заполнение»

Пишем программу (сценарий) для следующего эффекта:

WndLpt: Заполнение

WndLpt: Заполнение

«Умный» сценарий:

 

cmd count 12  ; Установка кол-ва светодиодов в схеме

CYCLE:        ; Определили метку CYCLE

100000000000  ; Установка первоначального состояния
ssl 11        ; "Сдвиг влево с приоритетом единицы"®

111111111110  ; Установка промежуточного состояния
nsr 12        ; "Сдвиг вправо с приоритетом нуля"®

goto CYCLE    ; Переход к метке CYCLE

 

Простой, но неудобный сценарий:

 

START:
000000000000
100000000000
110000000000
111000000000
111100000000
111110000000
111111000000
111111100000
111111110000
111111111000
111111111100
111111111110
111111111111
111111111110
111111111100
111111111000
111111110000
111111100000
111111000000
111110000000
111100000000
111000000000
110000000000
100000000000
goto START

 



// GUID: {987A951E-427B-4e41-8CA2-8436C754F921}