АвторСообщение
администратор




Пост N: 449
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.04.11 16:13. Заголовок: Светодиодный потолок

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 12 [только новые]


постоянный участник




Пост N: 1359
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.04.11 14:35. Заголовок: Так понимаю, что в и..


Так понимаю, что в исходнике - обычный автомат световых эффектов. Мигает "сам по себе".
Вы же хотите иметь "цветомузыку". Тут без частотных фильтров не обойтись (либо по-старинке, аналоговых, внешних, либо цифровых, на том же МК).
Тема "не хилая".
Сперва определитесь стем, что хотите получить. Зачем, например, 12 каналов? Будете спектр на 12 полос фильтровать?

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 454
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.04.11 16:54. Заголовок: Dmitry Dubrovenko пи..


Dmitry Dubrovenko пишет:

 цитата:
Сперва определитесь стем, что хотите получить. Зачем, например, 12 каналов? Будете спектр на 12 полос фильтровать?


Понимаю что тема не хилая! Прототип хороший, работоспособный и эффективный. В алгоритме пока не разобрался, но работает он без заморочек. Зашито несколько эффектов (около 10-15), кнопкой их можно выбирать по отдельности по кругу. Первый режим крутит их по кругу. Есть мысль с мкф выделить ритмическую составляющую и разбить эти эффекты на 2 группы, медленные и быстрые. В зависимости от темпа крутить эффекты, в паузах плавная смена каналов, типа дыхания моря (Севастополь как ни как!), на медляках мягкая смена эффектов, на колбасне соответственно . О разложении спектра, фурье, пока речи не идёт, но со временем, а почему нет?!
Исходник в свободном доступе, пока хочу его разложить, понять принцип, но не могу его в проект сунуть. Что то не сростается у меня. Исходники по ссылке в первом посте, могу здесь выложить. Вот я так понял командный кусок
;********************************************************************** 
; *
; 8 Channel PWM LED Chaser for PIC 16F628/A and 16F84A *
; *
; Filename: pwmc_main107.asm *
; Date: 03/04/2009 *
; File Version: 1.0.7 *
; *
; Author: Pete Griffiths *
; Company: http://picprojects.org.uk<\/u><\/a> *
; *
; Written and assmbled under MPLAB Version 8.20 *
; *
; Before assembling code set correct PIC processor in MPLAB *
; from menu option Configure - Select Device *
; *
; Now works with 16F84A, 16F627/628 16F627A/628A and 16F88 *
; *
; The devices with 1K program memory (16F84A, 16F627/627A *
; will need some Sequences in pwmc_SeqData.inc file removing *
; to fit the code in their limited memory. *
; *
; *
;**********************************************************************
; *
; Notes: *
; 1. PIC 16F628A datasheet can be downloaded from *
;
http://ww1.microchip.com/downloads/en/DeviceDoc/40044b.pdf<\/u><\/a> *
; *
; 2. See also MPASM User Guide(UG) which can be downloaded from: *
;
http://ww1.microchip.com/downloads/en/DeviceDoc/33014J.pdf<\/u><\/a> *
;
http://picprojects.org.uk/projects/ledchaser/<\/u><\/a> *
; *
; 3. This code uses Pseudo-instructions listed in the MPASM User *
; guide, Part 4, Appendix A.5 *
; *
; 4. For list of Radix types see MPASM UG Section 3.4, Table 3-3 *
; *
;**********************************************************************

ifdef __16F88

#include <p16f88.inc>

;Program Configuration Register 1
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO

;Program Configuration Register 2
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

#define T0IF TMR0IF
#define T0IE TMR0IE

endif

ifdef __16F628A

#include <p16f628A.inc> ; Standard include file
; defines processor specific variable definitions
; See MPASM UG Section 4.41

;------------------------------------------------------------------------------------
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
; and also see MPASM UG Section 4.12

__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _LVP_OFF

endif

ifdef __16F628

#include <p16f628.inc>
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _LVP_OFF

endif

ifdef __16F84A

; **** 16F84A only has 1K of program memory - the default pwm_SeqData.inc file ****
; **** will not fit into the available memory, you must remove some of the ****
; **** the sequence data from the file before assembling the code ****
#include <p16f84a.inc>
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _HS_OSC
; Code protect off
; Watch Dog timer off
; Power-up timer delay on
; change to _RC_OSC for resistor/capacitor
; change to _XT_OSC for crystal/resonator <3.5Mhz
; change to _HS_OSC for high speed crystal/resonator >3.5Mhz

endif

;------------------------------------------------------------------------------------
; Suppress specific warning messages
; see MPASM UG Section 4.29 for errorlevel directive
; see MPASM UG Section 8.4 for assembler message descriptions
;


errorlevel -302 ; suppress banksel warning messages during assembly


;------------------------------------------------------------------------------------
; define variables in General Purpose Register (GPR) memory
; See MPASM UG Section 4.8
; note: 16F84A GPR start at 0x0C but most other mid-range PICs start at 0x20
; We use 0x20 here for compatibilty with newer PICs

cblock 0x20
firstGPR:0 ; mark start of GPR memory used
state ; used by function state selector
copyPORTB ; working variable, holds copy of PORTB
vc0,vc1,vc2,vc3,vc4 ; vertical counter bits
hiReload ; vertical counter reload hi
loReload ; vertical counter reload lo
pwm ; pwm counter
holdTime ; sequence line hold time
repeatCount ; repeat seqeunce count
RandMask ; mask to AND random number with
seqIdxLo ; Lo byte address index pointer to start of selected sequence
seqIdxHi ; Hi byte address index pointer to start of selected sequence
seqTotal ; Total number of sequences in data
seqMatch ; working variable
seqCount ; working variable
forward ; working regsiter for mirroring data
reverse ; working regsiter for mirroring data
reloadTemp ; temporary holding variable for loReload
tick ; timer0 ticks
swTimer ; switch hold down timer
flags ; function flags register
mode ; mode flags register
indexLo ; Lo byte sequence line data address pointer
indexHi ; Hi byte sequence line data address pointer
save_W ; save W during interupt
save_Status ; save STATUS during interupt
save_PCLATH ; save PCLATH
saveModeTimerL ; holdoff timer for saving opmode to EEPROM high
saveModeTimerH ; holdoff timer for saving opmode to EEPROM low
eesave_W ; temp register used in EEPROM routings
LFSRH ; Random number shift regsiter high byte
LFSRL:0 ; Random number shift register low byte
lastGPR ; mark last GPR register used
; (required by GPR initialisation code)

endc

;--------------------------------------------------------------------------------------------------------------------
; EEPROM data
; ; program parameters
org 0x2100
de .0
de .1
de .0

; embed firmware release info
de " PWM LED Chaser "
de " V1.0.7 "
de " 03/04/2009 "
de " picprojects.org.uk "
;--------------------------------------------------------------------------------------------------------------------

; Define bank select pseudo instructions to make code more readable
#define bank0 bcf STATUS,RP0 ; Sel Bank 0
#define bank1 bsf STATUS,RP0 ; Sel Bank 1

;--------------------------------------------------------------------------------------------------------------------
;
; See MPASM UG Secdtion 4.27 for definition of equ directive

switch equ 4 ; Port bit switch connected to

cSAVETIME EQU d'4' ; holdoff timer constant for saving EEPROM data
cTIMER EQU d'157'
cTICKS EQU d'50'
; 4Mhz oscillator clock, gives TMR0 clock = 1Mhz.
; Write to timer0 inhibits clock for 2 clock cycles
; TMR0 prescaler of 1:2 gives
; 1Mhz / ((256-157+2) x 2) = 5Khz = 0.2mS
; 50 x 0.2mS = 10mS
; So the sequence hold time will be 10mS x holdTime, giving a range of
; 1 = 10mS thru 254 = 2.54S
; remember that a holdtime value of 255 indicates the end of the sequence so DON'T USE IT

; define flag bits
fHoldTimeout EQU 0 ; flag set by ISR, cleared by Table Lookup function
fSwitch EQU 1 ; flag
fsetupRun EQU 2 ; 0=run mode / 1=setup mode
fTick EQU 3 ; timer tick flag
fSaveMode EQU 4 ; set indicates opmode needs writing to EEPROM, clear indicates no data to write
; 5
fMirrorData EQU 6 ; flag set, Table read reverses bits in data word [** This flag must be Bit 6 **]
fMirrorNext EQU 7 ; flag tells code current sequence should be mirrored next time

#define canMirror 1<<fMirrorData ; Don't change the position of this bit, sequence data expects it here

; define mode bits
modeSeq EQU 0
modeRan EQU 1
modeMan EQU 2
modeSleep EQU 3

;--------------------------------------------------------------------------------------------------------------------
; Program code starts here
;
; See MPASM UG Section 1.7.1, and Example 1-1
;
; Labels Mnemonics Operands Comments
; Directives
; Macros
;
RESET_VECTOR org 0x000 ; see MPASM UG Section 4.50
goto START ; START label is in pwmc_start.inc

INTERRUPT_V org 0x004 ; Interrupt handler code must follow this origin statement
#include pwmc_inth.inc ; include Interrupt Handler code block

#include pwmc_statef.inc ; include main state function code block (must reside in page 0)
#include pwmc_start.inc ; include reset and initialisation code
#include pwmc_functions.inc ; include all program functions
#include pwmc_SeqMacro.inc ; include MACRO definitions for sequence data
; used for creating sequence data tables

; ------------------------------------------------------------------------------------------------------

; DO NOT CHANGE OR REMOVE this label
SeqBaseAddr ; label marks base address for start of sequence data.

; Include your sequence data file(s) here

#include pwmc_SeqData.inc ; file containg sequence data
;#include pwmc_xmastree.inc ; alternate data for use with xmas tree pcb
;#include pwmc_round.inc ; alternate data for use with the round pcb

; Do not remove this instruction
_markLast retlw .255 ; Ensure last sequence is marked
; ------------------------------------------------------------------------------------------------------

end ; end of instructions, always needed
; see MPASM UG Section 4.22

И ещё 7 файлов
pwmc_functions.inc
pwmc_inth.inc
pwmc_SeqData.inc
pwmc_SeqMacro.inc
pwmc_start.inc
pwmc_statef.inc
pwmc_xmastree.inc
Задействуя внешнее прерывание и таймер определяем темп, синхронизируем, простенький генератор случайных чисел для смены эффектов, вот!
А, почему 12 каналов. Если обратили внимание, потолок как бы разделён на 12 колбасок, чтоб по центру каждой, а то всего 8 подсвечивается, а потолок шире, по 2 с каждой стороны не светятся. Свет от светодиодных полос, причём не целиком, а кусочками по 3 светодиода с промежутками. Ушло около 10 метров всего, фиолетовый из красных и синих поочерёдно. Тремя цветами можно смешать много цветов. В перспективе RGB линейки хочу использовать, вот тут можно развернуться! Но дорого, 1 метр по 30 светодиодов на метре стоят 100 грн, катушка 5 метров 500. А надо метров 20!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 104
Зарегистрирован: 01.03.11
Рейтинг: 1
ссылка на сообщение  Отправлено: 27.04.11 19:12. Заголовок: SanSanich пишет: По..


SanSanich пишет:

 цитата:
Понимаю что тема не хилая!

Если честно, то фурье это не так сложно, как страшно звучит ... У меня есть готовая программа преобразования фурье, вплоть до вычисления амплитуд... Но, на 12 полос не покатит, либо 8 либо 16... Правда часть можно не использовать ... Лично для меня пока остается загадкой только связь между входным сигналом и амплитудами на выходе Если не вдаваться в подробности то все очень просто... При помощи АЦП оцифровываем аналог и заполняем один массив, а через некоторое время в другом массиве получаем спектр Вот и вся премудрость... Но понадобится минимум 18 пик...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 226
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 27.04.11 20:27. Заголовок: Ты свой шедевр, все ..


Ты свой шедевр, все прячешь? А уже конец месяца

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 124
Зарегистрирован: 01.03.11
Откуда: Уфа
Рейтинг: 0
ссылка на сообщение  Отправлено: 27.04.11 21:27. Заголовок: Немного не в тему, н..


Немного не в тему, но где то рядом.
Меня всегда убивало мигание. Это не цвето-, а свето- музыка.
Интересно было бы сделать смену цвета при одинаковой общей силе света / яркости.
Вот тогда была бы реальная цветомузыка, а не мигание.

И ещё одна идея закралась. Как то мода была цветомузыки на мониторе. Наверно есть и не плохие програмы.
А кроме того, на компе проще сделать преобразования, вычисления.
Можно было бы сделать как то выход с монитора на внешний экран. Совсем не обязательно с большим разрешением. Начальное разрешение 1 канал 3 цвета.
А там и развернуться можно было бы.

Это я так, мысли вслух. Может кто заинтересуется, а может и сам когда нибудь...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 228
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 27.04.11 21:34. Заголовок: Так Сан Саныч и хоче..


Так Сан Саныч и хочет сделать цветомузыку. На экраны смотреть нужно. Даже на большие. Они же не прожекторы. Нет объема в воздухе.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 459
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг: 1
ссылка на сообщение  Отправлено: 28.04.11 09:32. Заголовок: Photographer пишет: ..


Photographer пишет:

 цитата:
Интересно было бы сделать смену цвета при одинаковой общей силе света / яркости.


Здесь частично так и есть. Смена цвета не резко происходит, а перетеканием. Хотя и интенсивность потока меняется.
Когда тушится свет, от этого потолка не слабое освещение идёт. И на глаза не бьёт, он рассеянный на материи получается. А о том, о чём говорит Альберт, тоже есть. На этом же сайте RGB LED Mood Light<\/u><\/a>
Сегодня получаю светодиодные ленты и буду ставить вместо освещения в Пиратской кофейне. Заснему и покажу потом. Но ооочень классно, как раз медленное плавное перетекание именно цвета при одинаковой интенсивности.
Но хочется немного ещё добавить эффектов.
Кстати, Александр, фиговый из меня бизнесмен! Это у друзей всё делаю. Они в аренду взяли комплекс, 3 этажа. Первый ресторан, есть танцпол, второй банкетный, там же дискотека, третий кафейня. Называется "Пиратская харчевня". Вот и реализую свои идеи за свои же деньги. За пол года своих уже около штуки бакинских туда вложил. Но есть плюс. В любое время можем прийти и отдохнуть. Причём, без товарно-денежных отношений. Оно того стоит, поверьте! И душа радуется, когда видишь эффективность своего труда!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1360
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 28.04.11 11:56. Заголовок: MAZ пишет: Так Сан ..


MAZ пишет:

 цитата:
Так Сан Саныч и хочет сделать цветомузыку.

Насколько понимаю, нет.
Он хочет лишь привязать обычный автомат к ритмической составляющей.
Можно попробовать отфильтровывать НЧ составляющую. Процентов на 90 она будет совпадать с ритмической (опять-таки, надо учитывать характер музыки).

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 462
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг: 1
ссылка на сообщение  Отправлено: 28.04.11 12:06. Заголовок: Dmitry Dubrovenko пи..


Dmitry Dubrovenko пишет:

 цитата:
Можно попробовать отфильтровывать НЧ составляющую. Процентов на 90 она будет совпадать с ритмической (опять-таки, надо учитывать характер музыки).


А я уже писал, по таймеру и определять. 120 ударов и выше - колбосня, 60 и ниже - медляки. Срединка, надо эсперементировать. Но это не важно пока, проект не могу запустить, тот что есть. MPLAB IDE ещё не освоил, а в 5.7 не хочет зараза!

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 463
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг: 1
ссылка на сообщение  Отправлено: 28.04.11 14:16. Заголовок: Блин, мужики, помоги..


Блин, мужики, помогите проект в MPLAB засунуть не получается ни как. Ругается на всё при компеляции. Симуляция не идёт.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 52
Зарегистрирован: 02.03.11
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.04.11 15:26. Заголовок: У меня без проблем к..


У меня без проблем компилится, ты исходник скачал :)


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 465
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг: 1
ссылка на сообщение  Отправлено: 28.04.11 15:30. Заголовок: Всё, запустил! Я его..


Всё, запустил! Я его на 5 версии пытался, на 8.60 всё пошло, буду разбираться


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия