Новогодняя звездочка !
- Реклама
Re: Новогодняя звездочка !
у меня тоже не получается, AS6.2 ругается(ошибок много)
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
а в чем проблема пишите в CodeVisionAVR 3.12 http://radioaktiv.ru/loads/softf/compil ... r-312.html
точнее подставляй циферки получится эффект
int i,j;
for (j =0; j<h;++j){
for (i =0; i<9;++i){
unsigned int A[] = {8,5,2,5,8,5,2,5,8};
unsigned int B[] = {8,5,2,5,8,5,2,5,8};
unsigned int C[] = {8,5,2,5,8,5,2,5,8};
unsigned int D[] = {8,5,2,5,8,5,2,5,8};
unsigned int E[] = {8,5,2,5,8,5,2,5,8};
digit_out[0] = A;
digit_out[1] = B;
digit_out[2] = C;
digit_out[3] = D;
digit_out[4] = E;
view_yarkost();
delay_ms(ff);
}
}
view_pauza();
}
если интересно могу подробнее
точнее подставляй циферки получится эффект
Спойлер
void view_flasher_1(void) {int i,j;
for (j =0; j<h;++j){
for (i =0; i<9;++i){
unsigned int A[] = {8,5,2,5,8,5,2,5,8};
unsigned int B[] = {8,5,2,5,8,5,2,5,8};
unsigned int C[] = {8,5,2,5,8,5,2,5,8};
unsigned int D[] = {8,5,2,5,8,5,2,5,8};
unsigned int E[] = {8,5,2,5,8,5,2,5,8};
digit_out[0] = A;
digit_out[1] = B;
digit_out[2] = C;
digit_out[3] = D;
digit_out[4] = E;
view_yarkost();
delay_ms(ff);
}
}
view_pauza();
}
если интересно могу подробнее
Re: Новогодняя звездочка !
очень даже интересноесли интересно могу подробнее
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
что именно не получается, не понятно?
что подробнее пояснить?
что подробнее пояснить?
- Реклама
Re: Новогодняя звездочка !
[uquote="Serzh2000",url="/forum/viewtopic.php?p=3707343#p3707343"]что именно не получается, не понятно?
что подробнее пояснить?[/uquote]
хотелось-бы ещё эффектов добавить
что подробнее пояснить?[/uquote]
хотелось-бы ещё эффектов добавить
- Вложения
-
- ZveZda.7z
- (3.36 КБ) 371 скачивание
-
- ZveZda.zip
- (2.64 КБ) 367 скачиваний
Re: Новогодняя звездочка !
Если кому надо, то вот прошивка с добавленными эффектами, о которых выше писали. Спасибо автору конструкции, а так же разработчику эффектов!
- Вложения
-
- ZveZda.hex
- (13.19 КБ) 398 скачиваний
Re: Новогодняя звездочка !
Serzh2000, будет ли новая прошивка с новыми эффектами или может подправленная? Если внимательно присмотреться в некоторых эффектах есть небольшие недочёты. Сам к сожалению так и не понял как строится световой эффект. А то уже до Нового года немного осталось.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
сейчас много времени уходит на ремонт квартиры, да к тому же хочется доделать гирлянду
https://sites.google.com/view/digiscript/
https://www.youtube.com/watch?v=8Nf_tWu ... e=youtu.be
https://www.youtube.com/watch?v=ShQiqVyB1lY&t=25s
Добавлено after 46 minutes 37 seconds:
а как еще помигать светиками в звезде придумайте, а я впишу
или лучше Вас научу!
ничего сложного
открываете программу CVavr
на ходите такие строки
// -------------------------------- рабочая часть ------------------------------------------
while (1) {
view_flasher();
view_flasher_1();
view_flasher_2();
view_flasher_3();
view_flasher_4();
view_flasher_5();
view_flasher_6();
view_flasher_7();
view_flasher_8();
view_flasher_9();
view_flasher_10();
view_flasher_11();
view_flasher_12();
view_flasher_13();
//пишите сюда скажем 14 эффект
view_flasher_14();
}; // ----------------------------- рабочая часть (end) ------------------------------------
готово !
теперь пишем сам эффект №14!
снова находи где закончился предыдущий
// ----------------------------------------------------------------------------------------
void view_flasher_13(void) {
int i,j;
for (j =0; j<h;++j){
for (i =0; i<10;++i){
unsigned int A[] = {15, 8, 8, 8, 8,15, 8, 8, 8, 8};
unsigned int B[] = { 8,15, 8, 8, 8, 8,15, 8, 8, 8};
unsigned int C[] = { 8, 8,15, 8, 8, 8, 8,15, 8, 8};
unsigned int D[] = { 8, 8, 8,15, 8, 8, 8, 8,15, 8};
unsigned int E[] = { 8, 8, 8, 8,15, 8, 8, 8, 8,15};
digit_out[0] = A;
digit_out[1] = B;
digit_out[2] = C;
digit_out[3] = D;
digit_out[4] = E;
yarkost=255;
view_yarkost_ubyvanie();
delay_ms(ff);
}
}
view_pauza_1();
}
и пишем
// ----------------------------------------------------------------------------------------
void view_flasher_14(void) { // название эффекта
int i,j;
for (j =0; j<h;++j){ не важно
for (i =0; i<5;++i){ 5 это сколько кадров
unsigned int A[] = {1,0,0,0,0}; 1 луч звезды
unsigned int B[] = {0,2,0,0,0}; 2 луч звезды
unsigned int C[] = {0,0,4,0,0}; 3 луч звезды
unsigned int D[] = {0,0,0,8,0}; 4 луч звезды
unsigned int E[] = {0,0,0,0,15}; 5 луч звезды
digit_out[0] = A; остальное не важно без изменения
digit_out[1] = B;
digit_out[2] = C;
digit_out[3] = D;
digit_out[4] = E;
yarkost=255;
delay_ms(f);
}
}
view_pauza();
}
вот и все готов эффект!!!
нажимаешь Ctrl+F9 прошивка готова
можешь прошить атмегу8 или посмотреть эффект в пртеусе
1кадр- 1 луч загорится 1светик остальные лучи не светятся
смотри вертикальный первый столбик
unsigned int A[] = {1,
unsigned int B[] = {0,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
2кадр- 2 луч загорится 2светик остальные лучи не светятся
смотри вертикальный второй столбик
unsigned int A[] = {1,0,
unsigned int B[] = {0,2,
unsigned int C[] = {0,0,
unsigned int D[] = {0,0,
unsigned int E[] = {0,0,
3 и 4 кадрах догадайся какие светики светятся и в каких лучах
5 кадр в 5 луче светятся все светодиоды остальные лучи не горят
почему так
DDRD=0b00001111; //порт D не вдаваясь в подробности 1,2,3,4 нога подключены к светодиодам
в луче у порта ноги считаются с право налево 0b00001111 где единица светодиод будет светится
то есть весь луч светится если так 0b00001001 первый и четвертый светик в ЛУЧЕ светится второй и третий нет
так писать можно ,но не удобно
0b00001111
8421
скажем это вес единичек чтобы засветить первый и четвертый 8+1=9 вот мы и пишем 9 в нужном нам луче
https://sites.google.com/view/digiscript/
https://www.youtube.com/watch?v=8Nf_tWu ... e=youtu.be
https://www.youtube.com/watch?v=ShQiqVyB1lY&t=25s
Добавлено after 46 minutes 37 seconds:
а как еще помигать светиками в звезде придумайте, а я впишу
или лучше Вас научу!
открываете программу CVavr
на ходите такие строки
// -------------------------------- рабочая часть ------------------------------------------
while (1) {
view_flasher();
view_flasher_1();
view_flasher_2();
view_flasher_3();
view_flasher_4();
view_flasher_5();
view_flasher_6();
view_flasher_7();
view_flasher_8();
view_flasher_9();
view_flasher_10();
view_flasher_11();
view_flasher_12();
view_flasher_13();
//пишите сюда скажем 14 эффект
view_flasher_14();
}; // ----------------------------- рабочая часть (end) ------------------------------------
готово !
теперь пишем сам эффект №14!
снова находи где закончился предыдущий
// ----------------------------------------------------------------------------------------
void view_flasher_13(void) {
int i,j;
for (j =0; j<h;++j){
for (i =0; i<10;++i){
unsigned int A[] = {15, 8, 8, 8, 8,15, 8, 8, 8, 8};
unsigned int B[] = { 8,15, 8, 8, 8, 8,15, 8, 8, 8};
unsigned int C[] = { 8, 8,15, 8, 8, 8, 8,15, 8, 8};
unsigned int D[] = { 8, 8, 8,15, 8, 8, 8, 8,15, 8};
unsigned int E[] = { 8, 8, 8, 8,15, 8, 8, 8, 8,15};
digit_out[0] = A;
digit_out[1] = B;
digit_out[2] = C;
digit_out[3] = D;
digit_out[4] = E;
yarkost=255;
view_yarkost_ubyvanie();
delay_ms(ff);
}
}
view_pauza_1();
}
и пишем
// ----------------------------------------------------------------------------------------
void view_flasher_14(void) { // название эффекта
int i,j;
for (j =0; j<h;++j){ не важно
for (i =0; i<5;++i){ 5 это сколько кадров
unsigned int A[] = {1,0,0,0,0}; 1 луч звезды
unsigned int B[] = {0,2,0,0,0}; 2 луч звезды
unsigned int C[] = {0,0,4,0,0}; 3 луч звезды
unsigned int D[] = {0,0,0,8,0}; 4 луч звезды
unsigned int E[] = {0,0,0,0,15}; 5 луч звезды
digit_out[0] = A; остальное не важно без изменения
digit_out[1] = B;
digit_out[2] = C;
digit_out[3] = D;
digit_out[4] = E;
yarkost=255;
delay_ms(f);
}
}
view_pauza();
}
вот и все готов эффект!!!
нажимаешь Ctrl+F9 прошивка готова
можешь прошить атмегу8 или посмотреть эффект в пртеусе
1кадр- 1 луч загорится 1светик остальные лучи не светятся
смотри вертикальный первый столбик
unsigned int A[] = {1,
unsigned int B[] = {0,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
2кадр- 2 луч загорится 2светик остальные лучи не светятся
смотри вертикальный второй столбик
unsigned int A[] = {1,0,
unsigned int B[] = {0,2,
unsigned int C[] = {0,0,
unsigned int D[] = {0,0,
unsigned int E[] = {0,0,
3 и 4 кадрах догадайся какие светики светятся и в каких лучах
5 кадр в 5 луче светятся все светодиоды остальные лучи не горят
почему так
DDRD=0b00001111; //порт D не вдаваясь в подробности 1,2,3,4 нога подключены к светодиодам
в луче у порта ноги считаются с право налево 0b00001111 где единица светодиод будет светится
то есть весь луч светится если так 0b00001001 первый и четвертый светик в ЛУЧЕ светится второй и третий нет
так писать можно ,но не удобно
0b00001111
8421
скажем это вес единичек чтобы засветить первый и четвертый 8+1=9 вот мы и пишем 9 в нужном нам луче
- Вложения
-
- ZveZda14эффект.rar
- (860.62 КБ) 318 скачиваний
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
belokota вы про двоичная система счисления слышали ?
попробую на пальцах
00001111- ноги атмеги порт D четыре светодиода подключены с права налево считать
------8421
то есть
1 светодиод =1
2 светодиод =2
3 светодиод =4
4 светодиод =8
включим 1и2 надо цифру 3 написать
в каком луче? скажем 5
unsigned int A[] = {0,
unsigned int B[] = {0,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {3,
получилось вся звезда не светится кроме двух светодиодов 1 и 2 в пятом луче
включим 3 и 4 надо цифру написать 12 (3 светодиод =4 , 4 светодиод =8 4+8=12)
в каком луче? скажем 2
unsigned int A[] = {0,
unsigned int B[] = {12,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
получилось вся звезда не светится кроме двух светодиодов 3 и 4 в втором луче
включим 2 и 4 надо цифру написать 10 (2 светодиод =2 , 4 светодиод =8 2+8=10)
в каком луче? скажем 2
unsigned int A[] = {0,
unsigned int B[] = {10,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
получилось вся звезда не светится кроме двух светодиодов 2 и 4 в втором луче
включим 2 и 3 и 4 надо цифру написать 14 (2 светодиод =2 , 3 светодиод =4 , 4 светодиод =8 2+4+8=14)
в каком луче? скажем 2
unsigned int A[] = {0,
unsigned int B[] = {14,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
получилось вся звезда не светится кроме трех светодиодов 2, 3 и 4 в втором луче
включим 1 и 2 и 3 надо цифру написать 7 (1 светодиод =1 , 2 светодиод =2 , 3 светодиод =4 1+2+4=7)
в каком луче? скажем 2
unsigned int A[] = {0,
unsigned int B[] = {7,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
получилось вся звезда не светится кроме трех светодиодов 1, 2 и 3 в втором луче
включим 1 и 4 светодиод
в 1, 2 и 4 ЛУЧЕ надо цифру написать 9 (1 светодиод =1 , 4 светодиод =8 1+8=9)
в каком луче? скажем 1,2,4
unsigned int A[] = {9,
unsigned int B[] = {9,
unsigned int C[] = {0,
unsigned int D[] = {9,
unsigned int E[] = {0,
получилось вся звезда не светится кроме трех светодиодов 1, 2 и 4 в первом, втором и четвертом луче
пиши если не ясно
попробую на пальцах
00001111- ноги атмеги порт D четыре светодиода подключены с права налево считать
------8421
то есть
1 светодиод =1
2 светодиод =2
3 светодиод =4
4 светодиод =8
включим 1и2 надо цифру 3 написать
в каком луче? скажем 5
unsigned int A[] = {0,
unsigned int B[] = {0,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {3,
получилось вся звезда не светится кроме двух светодиодов 1 и 2 в пятом луче
включим 3 и 4 надо цифру написать 12 (3 светодиод =4 , 4 светодиод =8 4+8=12)
в каком луче? скажем 2
unsigned int A[] = {0,
unsigned int B[] = {12,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
получилось вся звезда не светится кроме двух светодиодов 3 и 4 в втором луче
включим 2 и 4 надо цифру написать 10 (2 светодиод =2 , 4 светодиод =8 2+8=10)
в каком луче? скажем 2
unsigned int A[] = {0,
unsigned int B[] = {10,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
получилось вся звезда не светится кроме двух светодиодов 2 и 4 в втором луче
включим 2 и 3 и 4 надо цифру написать 14 (2 светодиод =2 , 3 светодиод =4 , 4 светодиод =8 2+4+8=14)
в каком луче? скажем 2
unsigned int A[] = {0,
unsigned int B[] = {14,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
получилось вся звезда не светится кроме трех светодиодов 2, 3 и 4 в втором луче
включим 1 и 2 и 3 надо цифру написать 7 (1 светодиод =1 , 2 светодиод =2 , 3 светодиод =4 1+2+4=7)
в каком луче? скажем 2
unsigned int A[] = {0,
unsigned int B[] = {7,
unsigned int C[] = {0,
unsigned int D[] = {0,
unsigned int E[] = {0,
получилось вся звезда не светится кроме трех светодиодов 1, 2 и 3 в втором луче
включим 1 и 4 светодиод
в 1, 2 и 4 ЛУЧЕ надо цифру написать 9 (1 светодиод =1 , 4 светодиод =8 1+8=9)
в каком луче? скажем 1,2,4
unsigned int A[] = {9,
unsigned int B[] = {9,
unsigned int C[] = {0,
unsigned int D[] = {9,
unsigned int E[] = {0,
получилось вся звезда не светится кроме трех светодиодов 1, 2 и 4 в первом, втором и четвертом луче
пиши если не ясно
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
belokota
как дела, много написали эффектов? не пора похвалиться?
как дела, много написали эффектов? не пора похвалиться?
Re: Новогодняя звездочка !
С приятелем немного разобрались и подправили некоторые эффекты(построение звезды 8-ой и 15-й), написали пару своих. Сейчас попробую вставить в исходник и скомпилировать. Но проверить смогу только в понедельник. Звезда на работе находится. Если что то получится, то обязательно выложу сюда.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
Молодцы!
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
belokota
попробуйте 15 эффект
попробуйте 15 эффект
- Вложения
-
- ZveZda_15_sluchai.rar
- (865.92 КБ) 308 скачиваний
Re: Новогодняя звездочка !
Вот, выкладываю свой вариант с добавленными эффектами (получилось 26), но без настроек яркости свечения светодиодов, вероятно, при таком применении её не особо нужно менять. Прошивка в папке Exe. Ещё я немного поменял фьюзы для повышения стабильности при включении и отключении питания (как мне кажется). В местах прошивки, где я что то менял есть комментарии. Огромное спасибо Serzh2000 за оказанное содействие!
- Вложения
-
- ZveZda+.rar
- Исходник
- (128.01 КБ) 343 скачивания
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
view_pauza(); // тут была пропущена пауза,может специально - не знаю
это после прохождения эффекта загоралась вся звезда и тухла типа один эффект кончился другой начался
в этом нет смысла просто не пишите view_pauza(); звезда и не будет загораться// тут поменяли 15 на 0, чтобы в паузах вся звезда не горела
как вам объяснить, когда программа до ходит до view_pauza(); (это по сути тот же эффект только название я придумал ему такое)
программа находит эффект view_pauza(); и выполняет все что в нем написано , выполнив возвращается к тому месту от куда перепрыгнула.
думаю что понятно пояснил
Re: Новогодняя звездочка !
Это я понял, и сделал, что бы в паузах звезда потухала, а сами паузы решил оставить. 
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
так это не пауза это я ее так обозвал с таким же успехом можно обозвать ssylka() еще как
ели пауза нужна то надо delay_ms(f); f= 100- выше написано если в место f поставить цифру можно увеличить или уменьшить паузу
название(); это законченный кусок программы расписанный выше его исполнения
delay_ms(); тоже кусок прописан он в библиотеке в самом нчале
это для того чтобы не писать повторяющиеся куски несколько раз в программе. а написал название(); программа перепрыгнет где расписана
название(); выполнит ее и возвращается
к стати например
void view_flasher_14(void) { // название эффекта
int i,j;
for (j =0; j<h;++j){ не важно
for (i =0; i<5;++i){ 5 это сколько кадров
unsigned int A[] = {1,0,0,0,0}; 1 луч звезды
unsigned int B[] = {0,2,0,0,0}; 2 луч звезды
unsigned int C[] = {0,0,4,0,0}; 3 луч звезды
unsigned int D[] = {0,0,0,8,0}; 4 луч звезды
unsigned int E[] = {0,0,0,0,15}; 5 луч звезды
digit_out[0] = A; остальное не важно без изменения
digit_out[1] = B;
digit_out[2] = C;
digit_out[3] = D;
digit_out[4] = E;
yarkost=255;
delay_ms(f);
}
}
view_pauza(); view_flasher_25(); // после выполнения 14 будет выполнятся 25(не помню по моему ваш 25 эффект ) звезда будет мигать всеми лучами
}
ели пауза нужна то надо delay_ms(f); f= 100- выше написано если в место f поставить цифру можно увеличить или уменьшить паузу
название(); это законченный кусок программы расписанный выше его исполнения
delay_ms(); тоже кусок прописан он в библиотеке в самом нчале
это для того чтобы не писать повторяющиеся куски несколько раз в программе. а написал название(); программа перепрыгнет где расписана
название(); выполнит ее и возвращается
к стати например
void view_flasher_14(void) { // название эффекта
int i,j;
for (j =0; j<h;++j){ не важно
for (i =0; i<5;++i){ 5 это сколько кадров
unsigned int A[] = {1,0,0,0,0}; 1 луч звезды
unsigned int B[] = {0,2,0,0,0}; 2 луч звезды
unsigned int C[] = {0,0,4,0,0}; 3 луч звезды
unsigned int D[] = {0,0,0,8,0}; 4 луч звезды
unsigned int E[] = {0,0,0,0,15}; 5 луч звезды
digit_out[0] = A; остальное не важно без изменения
digit_out[1] = B;
digit_out[2] = C;
digit_out[3] = D;
digit_out[4] = E;
yarkost=255;
delay_ms(f);
}
}
view_pauza(); view_flasher_25(); // после выполнения 14 будет выполнятся 25(не помню по моему ваш 25 эффект ) звезда будет мигать всеми лучами
}
Re: Новогодняя звездочка !
Мне было нужно, что бы между эффектами была пауза и ни один светодиод не горел гарантированно. Я и решил использовать это мини эффект "пауза".
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Новогодняя звездочка !
понятно
изовсего эффекта view_pauza(); нужна для выполнения всего лишь строчка delay_ms(f);
наверно правильнее тогда и написать delay_ms(f);
изовсего эффекта view_pauza(); нужна для выполнения всего лишь строчка delay_ms(f);
наверно правильнее тогда и написать delay_ms(f);


