по поводу планов на будущее:
Может уже пора отказаться от Arduino, используемого фактически только для преобразования USB->SPI ;)
Есть замечательный чип, который это делает сам: FT221X
Вид для печати
по поводу планов на будущее:
Может уже пора отказаться от Arduino, используемого фактически только для преобразования USB->SPI ;)
Есть замечательный чип, который это делает сам: FT221X
Эх, нашёлся бы кто может под андроид переписать программу, можно было бы отвязаться от компьютера или под линукс, но для медиаплеера/спутникового ресивера. Как я понимаю никто такое не делал к сожалению :(
Уважаемый ТС, загорелся этим проектом. вместе с друганом съездили купили необходимые радиодетали.
Но вместо вашей ардуино у нас имеется Arduino Uno, а вместо IRLR2905 IR нам предложили единственный аналог в другом корпусе IRFZ44NPBF вот ссылка http://www.compel.ru/infosheet/IR/IRFZ44NPBF/
Скажите, заработает ли схема в таком случае? и на какие пины ардуино в данном случае лучше соединять?
Очень жду ответа- сижу с паяльником- пытаюсь сообразить.
Спасибо за такую замечательную статью!
Вложение 16671
Вопросы: что за резистор торчит вертикально? и почему в инструкции сказано что резисторы 9 штук на 270 Ом, а на макетке другие? я купил на 270 Ом- цветовая маркировка другая...
IRLR - открывается от напряжения3-5в, как на ардуино
IRFZ44 - нужна напруга на затвор уже 10в
Берите IRFZ44 но докупите IR2110, она управляет затворами, скачайте даташиты, почитайте, что непонятно спросите.
Короче, чтобы открыть полевик надо на затвор относительно истока подать +10в миниму. Иначе он(полевик) не откроется полностью, будет грется и быстро сдохнет.
Привет всем!
Никак немог правильно сформулировать запрос в поисковиках, чтоб найти ответ на мой вопрос, или о таком девайсе ещё никто не думал.
Попробую описать что мне хочется: В мансардной комнате слишком мало света из-за малого окна. так вот мысль сделать либо фальш-окно, либо просто подсветку по всему потолку на RGB светодиодах. А проблемма вот в чем. например в яркий солнечный день хочеться чтоб светило желто-белым светом, во время заката(если он есть) они светились красным, в пасмурный день слабым белым итд... Питание реализовать от солнечной батареи. вот как реализовать сенсор который бы отсекал ненужные цвета. в электронике не силен. но может кто нибудь подтолкнет в правильное направление. почитаю, может осилю.
Почему обратился в тему по поводу подсветки амбилайт, эффект получить хочу такой же. почти такой же
Спасибо)
Задача простая.
делаете таблицу нужных Вам оттенков цвета и соответствие каждого оттенка датчику света или времени суток
вышел в отпуск, охота доделать наконец эту замечательну вещицу.
Сейчас кручу ATMEGA32U4 c USB встроенным в руках. Как думаете реальна затея USB->ATMEGA32U4 ->регистры595 -> 66 каналов. Либо на 60.
Вот считаю, хватит ли быстродействия? Как думаете?
Или умерить аппетиты? Как гнать на мегу поток не знаю. Смогу только вытравить сделать пару плат. Можно будет выслать, если результат будет.
Мне кажется что проще ленту ws2801 использовать, или хотя сами чипы ws2801
Пото тому как софтово ШИМ-ить 66 каналов будет сложно
да без дела уже лежит который год 5 метров обычной. А денег заказать новую не будет ещё год ((
Пока кручу в спринте регистры. 8 каналов +8 каналов в 50х100 влазят с запасом
если будет чем хвастаться, выложу сюда
Здравствуйте.Загорелся желанием изготовить Adalight. Вот по этой инструкции ссылка на статью.Закупил все комплектующие и случайно перепутал светодиодны вместо WS2801 взял WS2811 в которых вместо 4х контактов(+5,GND,Data,Clock) всего 3(5,GND,Data). Теперь после удаления строчкииз скрипта LEDStream горит мерцае только второй и третий Светодиод.Все остальные только светятся синим.Подскажите пожалуйста есть ли возможность сделать Amberlight из WS2811?Цитата:
SPI.setClockDivider(SPI_CLOCK_DIV16)
В теме Pixilight кто то переделывал на ws2811
Не туда.
А если статическое изображение, тоже цвета не совпадают?
наконец-то наклеил ленту!
100транзисторов.
54 канала.
Мега 1280 ардуинка
Проблема, при смене цвета моргает.
Если поставить меньше яркость в Lightpack, то моргание стновится медленней и заметней
Что поправить??
СИжу пока сам разбираюсь, но уже голова кругом. Паяю три дня всё это.
Код такой
моргает мало при tcnt2 = 236;
это что за параметр получается?
поставил 240, еле мерцает, но всё равно напрягается мозг. Так можно эпилептиком стать ;)
Код:#define D2_High PORTA |=B00000001 //red 22
#define D2_LOW PORTA &= B11111110
#define D3_High PORTA |=B00000010 //green 23
#define D3_LOW PORTA &= B11111101
#define D4_High PORTA |=B00000100 //blue 24
#define D4_LOW PORTA &= B11111011
#define D5_High PORTA |=B00001000 //25
#define D5_LOW PORTA &= B11110111
#define D6_High PORTA |=B00010000 //26
#define D6_LOW PORTA &= B11101111
#define D7_High PORTA |=B00100000 //27
#define D7_LOW PORTA &= B11011111
#define D8_High PORTA |=B01000000 //28
#define D8_LOW PORTA &= B10111111
#define D9_High PORTA |=B10000000 //29
#define D9_LOW PORTA &= B01111111
#define D10_High PORTB|=B00000001 //ss jp2 53
#define D10_LOW PORTB &=B11111110
#define D11_High PORTB |=B00000010 //sck jp2 52
#define D11_LOW PORTB &= B11111101
#define D12_High PORTB |=B00000100 //mosi 51
#define D12_LOW PORTB &= B11111011
#define D13_High PORTB |=B00001000 //miso 50
#define D13_LOW PORTB &= B11110111
#define D14_High PORTB |=B00010000 // PWMH 10
#define D14_LOW PORTB &= B11101111
#define D15_High PORTB |=B00100000 // PWMH 11
#define D15_LOW PORTB &= B11011111
#define D16_High PORTB |=B01000000 // PWMH 12
#define D16_LOW PORTB &= B10111111
#define D17_High PORTB |=B10000000 // PWMH 13
#define D17_LOW PORTB &= B01111111
#define D18_High PORTC |=B00000001 //37
#define D18_LOW PORTC &= B11111110
#define D19_High PORTC |=B00000010 //36
#define D19_LOW PORTC &= B11111101
#define D20_High PORTC |=B00000100 //35
#define D20_LOW PORTC &= B11111011
#define D21_High PORTC |=B00001000 //34
#define D21_LOW PORTC &= B11110111
#define D22_High PORTC |=B00010000 //33
#define D22_LOW PORTC &= B11101111
#define D23_High PORTC |=B00100000 //32
#define D23_LOW PORTC &= B11011111
#define D24_High PORTC |=B01000000 //31
#define D24_LOW PORTC &= B10111111
#define D25_High PORTC |=B10000000 //30
#define D25_LOW PORTC &= B01111111
#define D26_High PORTF |=B00000001 //adc0
#define D26_LOW PORTF &= B11111110
#define D27_High PORTF |=B00000010 //adcl
#define D27_LOW PORTF &= B11111101
#define D28_High PORTF |=B00000100 //adcl
#define D28_LOW PORTF &= B11111011
#define D29_High PORTF |=B00001000 //adcl
#define D29_LOW PORTF &= B11110111
#define D30_High PORTF |=B00010000 //adcl
#define D30_LOW PORTF &= B11101111
#define D31_High PORTF |=B00100000 //adcl
#define D31_LOW PORTF &= B11011111
#define D32_High PORTF |=B01000000 //adcl
#define D32_LOW PORTF &= B10111111
#define D33_High PORTF |=B10000000 //adcl
#define D33_LOW PORTF &= B01111111
#define D34_High PORTK |=B00000001 // ADCH
#define D34_LOW PORTK &= B11111110
#define D35_High PORTK |=B00000010 // ADCH
#define D35_LOW PORTK &= B11111101
#define D36_High PORTK |=B00000100 // ADCH
#define D36_LOW PORTK &= B11111011
#define D37_High PORTK |=B00001000 // ADCH
#define D37_LOW PORTK &= B11110111
#define D38_High PORTK |=B00010000 // ADCH
#define D38_LOW PORTK &= B11101111
#define D39_High PORTK |=B00100000 // ADCH
#define D39_LOW PORTK &= B11011111
#define D40_High PORTK |=B01000000 // ADCH
#define D40_LOW PORTK &= B10111111
#define D41_High PORTK |=B10000000 // ADCH
#define D41_LOW PORTK &= B01111111
#define D42_High PORTL |=B00000001 //49
#define D42_LOW PORTL &= B11111110
#define D43_High PORTL |=B00000010 //48
#define D43_LOW PORTL &= B11111101
#define D44_High PORTL |=B00000100 //47
#define D44_LOW PORTL &= B11111011
#define D45_High PORTL |=B00001000 //46
#define D45_LOW PORTL &= B11110111
#define D46_High PORTL |=B00010000 //45
#define D46_LOW PORTL &= B11101111
#define D47_High PORTL |=B00100000 //44
#define D47_LOW PORTL &= B11011111
#define D48_High PORTL |=B01000000 //43
#define D48_LOW PORTL &= B10111111
#define D49_High PORTL |=B10000000 //42
#define D49_LOW PORTL &= B01111111
#define D50_High PORTJ |=B00000001 //RXD3
#define D50_LOW PORTJ &= B11111110
#define D51_High PORTJ |=B00000010 //TXD3
#define D51_LOW PORTJ &= B11111101
#define D52_High PORTH |=B00000001 //RXD2
#define D52_LOW PORTH &= B11111110
#define D53_High PORTH |=B00000010 //TXD2
#define D53_LOW PORTH &= B11111101
#define D54_High PORTH |=B00010000 //PH3 pwml 6
#define D54_LOW PORTH &= B11101111
#define D55_High PORTH |=B00001000 //PH4 pwml 7
#define D55_LOW PORTH &= B11110111
volatile unsigned int tcnt2;
//volatile long pwm_time;
byte pwm_time, Red_R_Old, Green_L_Old, Blue_T_Old;
unsigned long blank=0; //таймер простоя
byte volatile color[54]; //массив храннения цветов 12-ть каналов
void setup()
{
DDRB=0xFF;
DDRC=0xFF;
DDRA=0xFF;
DDRF=0xFF;
DDRL=0xFF;
DDRK=0xFF;
DDRH=0xFF;
DDRJ=0xFF;
//for (int i=2; i < 100; i++){pinMode(i, OUTPUT);}
//Serial.begin(115200);
Serial.begin(115200);
TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2
TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика
TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика
ASSR &= ~(1<<AS2); //Выбор источника синхронизации таймера если AS2=0 от системного генератора
tcnt2 = 236; // 16000000/31000/64=8 tcnt2=256-8=248.
TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2.
}
void loop()
{
if (Serial.available() > 54)
{
if (Serial.read() == 255) //проверка прификса
{
for (int i = 0; i < 54; i++)
{
color[i] = Serial.read(); // прочитать данные о цветах из порта в массив
}
//if (Red_R_Old == color[0] && Green_L_Old == color[4] && Blue_T_Old == color[8])
blank=0;
}
} else {
if(blank>100000) { blank=0; for (byte i = 0; i < 54; i++) color[i] = 0;}
blank++;
}
}
//****************обработчик прерывания********************
ISR(TIMER2_OVF_vect)
{
TCNT2 = tcnt2;
pwm_time++;
if(color[0] > pwm_time ) D20_High; else D20_LOW;
if(color[1] > pwm_time ) D31_High; else D31_LOW;
if(color[2] > pwm_time ) D2_High; else D2_LOW;
if(color[3] > pwm_time ) D22_High; else D22_LOW;
if(color[4] > pwm_time ) D32_High; else D32_LOW;
if(color[5] > pwm_time ) D21_High; else D21_LOW;
if(color[6] > pwm_time ) D23_High; else D23_LOW;
if(color[7] > pwm_time ) D33_High; else D33_LOW;
if(color[8] > pwm_time ) D34_High; else D34_LOW;
if(color[9] > pwm_time ) D6_High; else D6_LOW;
if(color[10] > pwm_time) D13_High; else D13_LOW;
if(color[11] > pwm_time) D14_High; else D14_LOW;
if(color[12] > pwm_time) D19_High; else D19_LOW;
if(color[13] > pwm_time) D39_High; else D39_LOW;
if(color[14] > pwm_time) D40_High; else D40_LOW;
if(color[15] > pwm_time) D18_High; else D18_LOW;
if(color[16] > pwm_time) D25_High; else D25_LOW;
if(color[17] > pwm_time) D24_High; else D24_LOW;
if(color[18] > pwm_time) D3_High; else D3_LOW;
if(color[19] > pwm_time) D10_High; else D10_LOW;
if(color[20] > pwm_time) D11_High; else D11_LOW;
if(color[21] > pwm_time) D35_High; else D35_LOW;
if(color[22] > pwm_time) D30_High; else D30_LOW;
if(color[23] > pwm_time) D29_High; else D29_LOW;
if(color[24] > pwm_time) D12_High; else D12_LOW;
if(color[25] > pwm_time) D5_High; else D5_LOW;
if(color[26] > pwm_time) D4_High; else D4_LOW;
if(color[27] > pwm_time) D28_High; else D28_LOW;
if(color[28] > pwm_time) D36_High; else D36_LOW;
if(color[29] > pwm_time) D37_High; else D37_LOW;
if(color[30] > pwm_time) D15_High; else D15_LOW;
if(color[31] > pwm_time) D7_High; else D7_LOW;
if(color[32] > pwm_time) D46_High; else D46_LOW;
if(color[33] > pwm_time) D9_High; else D9_LOW;
if(color[34] > pwm_time) D16_High; else D16_LOW;
if(color[35] > pwm_time) D17_High; else D17_LOW;
if(color[36] > pwm_time) D52_High; else D52_LOW;
if(color[37] > pwm_time) D45_High; else D45_LOW;
if(color[38] > pwm_time) D42_High; else D42_LOW;
if(color[39] > pwm_time) D54_High; else D54_LOW;
if(color[40] > pwm_time) D47_High; else D47_LOW;
if(color[41] > pwm_time) D8_High; else D8_LOW;
if(color[42] > pwm_time) D49_High; else D49_LOW;
if(color[43] > pwm_time) D53_High; else D53_LOW;
if(color[44] > pwm_time) D48_High; else D48_LOW;
if(color[45] > pwm_time) D38_High; else D38_LOW;
if(color[46] > pwm_time) D26_High; else D26_LOW;
if(color[47] > pwm_time) D27_High; else D27_LOW;
if(color[48] > pwm_time) D55_High; else D55_LOW;
if(color[49] > pwm_time) D41_High; else D41_LOW;
if(color[50] > pwm_time) D43_High; else D43_LOW;
//if(color[51] > pwm_time) D44_High; else D44_LOW;
//if(color[52] > pwm_time) D51_High; else D51_LOW;
//if(color[53] > pwm_time) D50_High; else D50_LOW;
}
Это программный ШИМ, похоже что с 54 каналами не справляется
Дл\ такогоь количества каналов лучше Pixelight использовать
Лента три года лежала, наконец сделал. А Pixelight следующий этап, когда деньги появятся :eek:
Изучу прерывания подробней, может что получится.
Моргает то и незаметно. Но на видео видно слегка
http://youtu.be/ddUKAjN0h8M
Остановился на tcnt2=496.
Собственно таблица
timer Hz KHz MHz 32 sample in Hz 32 sample in KHz 32 sample in MHz Machine instruction per interupt
1 1000000.0 1000.0 1.0 32000000.0 32000.0 32.0 0.5
3 500000.0 500.0 0.5 16000000.0 16000.0 16.0 1.0
4 400000.0 400.0 0.4 12800000.0 12800.0 12.8 1.3
7 250000.0 250.0 0.3 8000000.0 8000.0 8.0 2.0
9 200000.0 200.0 0.2 6400000.0 6400.0 6.4 2.5
15 125000.0 125.0 0.1 4000000.0 4000.0 4.0 4.0
19 100000.0 100.0 0.1 3200000.0 3200.0 3.2 5.0
24 80000.0 80.0 0.1 2560000.0 2560.0 2.6 6.3
31 62500.0 62.5 0.1 2000000.0 2000.0 2.0 8.0
39 50000.0 50.0 0.1 1600000.0 1600.0 1.6 10.0
49 40000.0 40.0 0.0 1280000.0 1280.0 1.3 12.5
63 31250.0 31.3 0.0 1000000.0 1000.0 1.0 16.0
79 25000.0 25.0 0.0 800000.0 800.0 0.8 20.0
99 20000.0 20.0 0.0 640000.0 640.0 0.6 25.0
124 16000.0 16.0 0.0 512000.0 512.0 0.5 31.3
127 15625.0 15.6 0.0 500000.0 500.0 0.5 32.0
159 12500.0 12.5 0.0 400000.0 400.0 0.4 40.0
199 10000.0 10.0 0.0 320000.0 320.0 0.3 50.0
249 8000.0 8.0 0.0 256000.0 256.0 0.3 62.5
319 6250.0 6.3 0.0 200000.0 200.0 0.2 80.0
399 5000.0 5.0 0.0 160000.0 160.0 0.2 100.0
499 4000.0 4.0 0.0 128000.0 128.0 0.1 125.0
Как внятно пойму что как, напишу
Судя по видео, тормозит программа, не успевает обрабатывать большое количество зон
Год прошел))
Лента работает.
Ардуинка справляется.
Скорости хватает.
На каком то видео у меня лево и право было перепутано.
Вот.
Конечно подключать и припаивать кучу проводов это кошмар. Второй раз на подвиг, наверное, не решусь ;)
Добрый всем день у меня два вопроса а почему не использовать вместо транзисторов транзисторную сборку например такую ULN2003A и места меньше занимает и резисторы по входу не надо мастырить можно подключать прямо к ардуино а про цену так вообще я промолчу в 10 раз дешевле чем куча транзиков. А вот второй вопрос это проблема которая интересует наверное всех это наличие для работы этой штуковины протянутых к телику usb кабеля какбы эту штуковины заставить работать через блютуз
Если отрезки ленты не большие, то можно и ULN использовать, без внешнего охлаждения на канал ULN больше 300мА не стоит нагружать
доброго времени суток всем.смотрю никак не можете подсветку без компа запустить!всё гениальное просто!!!саму подсветку можно приобрести наложенным платежом или курьером на сайте paintpack,позвонив по указанному номеру мне сказали что действительно без компа не запоёт,но предложили за скромную цену"2500"руб. мини РС который подключается к телеку а в него соответственно сама подсветка,и настраивается элементарно пультом от телека!
А за разработки Всем респект!
Да нет ребята после 1дня танцев с бубном вокруг этой штуковины я запустил её через блютуз и всё корректно работает , только собрал пока прототип без силовых ключей на днях приедет две Unl буду собирать все уже стационарно . А так работает уже целвй день для проверки стабильности пока сбоев не наблюдал . Так что обманывают что нельзя сделать на блютуз!!!
Народ дайте скечь на 42 канала пожалуйста на шифтах
Моет быть Вам лучше посмотреть в сторону pixelight
посмотреть то можно токо уже спаяно на шифтах и нужен скетч
Народ ну неужели ни у кого не осталось рабочего скетча ? Поделитесь пожалуста
Здравствуйте! - собрал предложенную Вами Ардулайт - эффект понравился. Во время сборки и отладки возникали вопросы - но всё решилось, сделал на своём канале ютубе - демонстрацию и инструкцию по сборке, ссылка прилагается https://www.youtube.com/watch?v=EAG8nJvfrms
Класс!
Может я не совсем догоняю, а скорее не может а так и есть. Подскажите люди добрые, а то всю ветку нету сил прочесть, и уверен такой вопрос задавался.
Вот спаять всё это по соответствующей схеме, а как к телевизору то подключить? Как ардуино поймёт какой свет подавать куда? На сколько я смог осознать, это через ПК только?
Да, только через ПК
Смотря какой программой пользоватьсяЦитата:
для Pixelight нужен контроллер Arduino Nano Duo