да без дела уже лежит который год 5 метров обычной. А денег заказать новую не будет ещё год ((
Пока кручу в спринте регистры. 8 каналов +8 каналов в 50х100 влазят с запасом
если будет чем хвастаться, выложу сюда
Нет.
Да.
Нужна , только руки кривые, самому не осилить
да без дела уже лежит который год 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
Не туда.
Последний раз редактировалось MHz; 27.10.2013 в 02:22.
А если статическое изображение, тоже цвета не совпадают?
наконец-то наклеил ленту!
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 использовать
Последний раз редактировалось Chip; 17.09.2014 в 02:32.
Лента три года лежала, наконец сделал. А Pixelight следующий этап, когда деньги появятся
Изучу прерывания подробней, может что получится.
Моргает то и незаметно. Но на видео видно слегка
Последний раз редактировалось YARiddiK; 18.09.2014 в 00:08.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)