Обсуждаем контроллеры компании Atmel.
Ответить

Re: RGB сосулька

Сб янв 19, 2019 19:59:20

чуть позже ща додумою как еще три цвета получить желтый розовый яркозеленый
а еще вопрос случайное число получить это опять как то не просто сделать
rand() пишет ошибка

Добавлено after 2 hours 28 minutes 49 seconds:
как то на телефоне видео не передает правильный цвет. в живую красивые цвета, сочные.
Вложения
sosulk.zip
(98.58 KiB) Скачиваний: 153

Re: RGB сосулька

Сб янв 19, 2019 20:28:41

Serzh2000 писал(а):rand() пишет ошибка
Выполните
Спойлер
Код:
#include <stdlib.h>

int random;

void main(void) {

random = rand(); // случайное число от 0 до 32767

}
Но есть один минус, последовательность чисел всегда будет постоянной.
Лучше для этой цели вывод АЦП использовать.

Re: RGB сосулька

Сб янв 19, 2019 21:46:42

Спасибо Dimon456 ! вроде получилось !
Спойлер#include <mega8.h>

#include <delay.h>

#include <stdlib.h>



volatile unsigned int f=150, // время кадра
z=1000; // ms для паузы после эффекта

volatile unsigned char Lines, Phase=0;

flash char flasher_0[200] =
{ 4,0,0,0,0,0,0,0,
3,4,0,0,0,0,0,0,
2,3,4,0,0,0,0,0,
1,2,3,4,0,0,0,0,
0,1,2,3,4,0,0,0,
0,0,1,2,3,4,0,0,
0,0,0,1,2,3,4,0,
0,0,0,0,1,2,3,4,
0,0,0,0,0,1,2,3,
0,0,0,0,0,0,1,2,
0,0,0,0,0,0,0,1,
0,0,0,0,0,0,0,0
};


volatile flash char *u;
volatile char a;
//====================
// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
unsigned char i;


if (Phase==0) {
PORTD = 0xFF;
PORTC = 0;

Phase = 4;
PORTC = Lines ; //выводим 1 на линию порта А, соответствующую счетчику линий.
}



for (i=0; i<8; i++) {

a = *(u+0*8+i);
if (a==Phase) PORTD &= ~(1<<i);//выводим на соответствующую линию потра В нолик
}
Phase--;
}

//====================
void view_pauza(void) {
delay_ms(z);
}
//====================
void view_flasher_0(void) {
int i;


Lines=rand()%6+1; // случайное число от 1 до 6



for (i =0; i<13;++i){

u = &(flasher_0[i*8]);
delay_ms(f);
}

view_pauza();
}

//=================== main ==========
void main(void)
{

//настройка портов
PORTB=0b00000000;
DDRB=0b00000000;
PORTC=0b00000000; //порт С 4 первые по умолчанию 1
DDRC=0b00000111; //порт С 4 первые ноги на вывод
PORTD=0b00000000; //порт D по умолчанию все ноги на 0
DDRD=0b11111111; //порт D все ноги на вывод



TCCR2 |= (0<<CS02)|(1<<CS01)|(0<<CS00);
TIMSK=0b01000000;
// 0b11000001
// || | |
// || | Timer0
// || Timer1
// |Timer2
//

#asm("sei") // Глобальные прерывания включения
//====================

while (1)
{
view_flasher_0();

}
}

Re: RGB сосулька

Вс янв 20, 2019 17:23:57

емаё мне нравится краски сосульки все таки сделаю их десяток для следующего нового года
надо подумать над корпусом . безцветная термоусадка не пойдет что то надо другое
есть какие идеи ????????
Ответить