Ребята, может кто сможет накидайть код программы для 8-ми каналов (гирлянд из светодиодов).
Если такие найдутся, опишу подробно что желаю от программки.
Ну по большому счёту ничего сложного нет в ваших пожеланиях. Достаточно записать все эффекты в массивы, а потом перебирать значения массивов.... Вот как-то так))))) Это подсилу даже начинающему программисту)tager_ писал(а):Только начал осваивать язык СИ, чувствую сам не успею.
Код: Выделить всё
/*****************************************************
CodeWizardAVR V2.05.3 Standard:
Date : 20.12.2013
Chip type : ATtiny2313
AVR Core Clock frequency: 4,000000 MHz
*****************************************************/
#include <tiny2313.h>
#include <delay.h>
unsigned char clik;
void main(void)
{
//Port B initialization
PORTB=0x00;
DDRB=0x00;
//Port A initialization
PORTA=0xFF;
DDRA=0x00;
//Port D initialization
PORTD=0x00;
DDRD=0xFF;
while(1){
switch(clik){ //выводим последовательность и кол. включенных светодиодов
case 0:{PORTD=0b11000000; break;} //0
case 1:{PORTD=0b11111001; break;} //1
case 2:{PORTD=0b10100100; break;} //2
case 3:{PORTD=0b10110000; break;} //3
case 4:{PORTD=0b10011001; break;} //4
case 5:{PORTD=0b10010010; break;} //5
case 6:{PORTD=0b10000010; break;} //6
case 7:{PORTD=0b11111000; break;} //7
case 8:{PORTD=0b10000000; break;} //8
case 9:{PORTD=0b10010000; break;} //9
}
clik++; //прибавляем 1 к переменной
if(clik>9)clik=0; //не даём переменной быть больше 9
delay_ms(800);
};
}Код: Выделить всё
#include <tiny2313.h>
#include <delay.h>
unsigned char clik;
void main(void)
{
//Port B initialization
PORTB=0x00;
DDRB=0x00;
//Port A initialization
PORTA=0xFF;
DDRA=0x00;
//Port D initialization
PORTD=0x00;
DDRD=0xFF;
while(1){
PORTD=clik; //выводим последовательность и кол. включенных светодиодов
clik++; //прибавляем 1 к переменной
delay_ms(800);
};
}Код: Выделить всё
/*
* tini.c
*
* Created: 20.12.2013 17:11:27
* Author: Serega
*/
#define F_CPU 16384000UL
#include <avr/io.h>
#include <util/delay.h>
unsigned char clik;
// ************************ эффект 1
int eff_01()
{
for (int i = 0; i < 16; i++)
{
switch(clik){ //выводим последовательность и кол. включенных светодиодов
case 0:{PORTA=0b10000000; break;} //0
case 1:{PORTA=0b01000000; break;} //1
case 2:{PORTA=0b00100000; break;} //2
case 3:{PORTA=0b00010000; break;} //3
case 4:{PORTA=0b00001000; break;} //4
case 5:{PORTA=0b00000100; break;} //5
case 6:{PORTA=0b00000010; break;} //6
case 7:{PORTA=0b00000001; break;} //7
}
clik++; //прибавляем 1 к переменной
if(clik>7)clik=0; //не даём переменной быть больше 7
_delay_ms(300);
}
return 0;
}
// ************************ эффект 2
int eff_02()
{
for (int i = 0; i < 16; i++)
{
switch(clik){ //выводим последовательность и кол. включенных светодиодов
case 0:{PORTA=0b10000001; break;} //0
case 1:{PORTA=0b11000000; break;} //1
case 2:{PORTA=0b01100000; break;} //2
case 3:{PORTA=0b00110000; break;} //3
case 4:{PORTA=0b00011000; break;} //4
case 5:{PORTA=0b00001100; break;} //5
case 6:{PORTA=0b00000110; break;} //6
case 7:{PORTA=0b00000011; break;} //7
}
clik++; //прибавляем 1 к переменной
if(clik>7)clik=0; //не даём переменной быть больше 7
_delay_ms(800);
}
return 0;
}
int main(void)
{
PORTA=0x00;
DDRA=0xFF;
while(1){
// выбираем эффекты eff_01(); - eff_NN();
eff_01(); //
eff_02();
}
}А что это такое, по русски?Как сделать рандомный выбор эффектов?
Случайно проще сделать, просто играться числами и все.задержку _delay_ms(300); тоже нужно сделать случайной?
Код: Выделить всё
#include <tiny2313.h>
#include <delay.h>
unsigned char clik;
unsigned int unstable=0;
void main(void)
{
PORTD=0x00;
DDRD=0xFF;
while(1){
PORTD=clik; //выводим последовательность и кол. включенных светодиодов
clik++; //прибавляем 1 к переменной
unstable++;
delay_ms(unstable);
};
}