| Автор |
Съобщение |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 RUN Light
Търса сорсче на С за бягащи светлинки.... :)
_________________ main[-1u]={1};
|
| Чет Сеп 11, 2008 11:30 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 . за какви бягащи светлини, с какво ...
LIST P=PIC12C508a, R=HEX ; |
INCLUDE p12c508a.inc ; |
; |
__CONFIG _IntRC_OSC & _WDT_OFF & _CP_OFF & _MCLRE_OFF ; |
;****************************************************************************************|
#Define LED1 GPIO,0
#Define LED2 GPIO,1
#Define LED3 GPIO,2
#Define Revers GPIO,3
#Define LED4 GPIO,4
#Define Res GPIO,5
_temp1 EQU 0x07
_temp2 EQU 0x08
;***************************************************************************************|
org 0
clrf GPIO
movlw b'11000000'
option
movlw 0x08
tris GPIO
;********************************* НАЧАЛО ***********************************************|
bcf LED1
bcf LED2
bcf LED3
bcf LED4
;*************************************************************************************
bcf LED1
call Time
Begin btfsc Revers
goto Rever
bsf LED2
call Time
bcf LED1
call Time
bsf LED3
call Time
bcf LED2
call Time
bsf LED4
call Time
bcf LED3
call Time
bsf LED1
call Time
bcf LED4
call Time
goto Begin
Rever bcf LED1
bcf LED2
bcf LED3
bcf LED4
bsf LED4
call Time
Begin2 btfss Revers
goto Begin
bsf LED3
call Time
bcf LED4
call Time
bsf LED2
call Time
bcf LED3
call Time
bsf LED1
call Time
bcf LED2
call Time
bsf LED4
call Time
bcf LED1
call Time
goto Begin2
;*********************************
Time
bsf Res
call Time1
movlw 0x28
tris GPIO
btfsc Res
goto $-1
movlw 0x08
tris GPIO
bcf Res
Return
;*******************************
Time1
movlw 0x10
movwf _temp1
clrf _temp2
decfsz _temp2
goto $-1
decfsz _temp1
goto $-4
Return
end
ето една проста с пик 12, честотата се задава с резистор и кондензатор на еиднот пиновете, не помня кой, имаше май и джъмпер з апосоката, и трябва да са четери редуващи се леда .. тов асъм го правил преди 100 години като почвах да се занимавам с пикове.
|
| Пет Сеп 12, 2008 12:05 am |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
 Re: RUN Light
Е толкова ли е трудно да шифтваш наляво и дясно с 1 даден порт .
На С това се пише PORT>>1 или PORT<<1  )
като сложиш и едно закъснение и хоп светлините почват да бягат или вървят
НАистина не го приемай като базик ама какаъвто въпроса такъв и отговора
|
| Пет Сеп 12, 2008 9:45 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
:)) то ясно, просто не ми се мисли в момента...
търсех някяква "хитра" мат. формулка дето хем да припка хем да сменява ефекта
_________________ main[-1u]={1};
|
| Пет Сеп 12, 2008 7:28 pm |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Малко тъпичка идея ама може да пробваш това :
unsigned char table[20];
int i;
for (i=0;i<20;i++)
{
table[i] = (char)(rand() % 255);
for (i=0;i<20;i++)
{
char p;
for(p=0;p<7;p++)
{
PORTB=(table[i]<<p);
DelayMs(100);
}
}
}
Идеята е да генерираш 20 случайни числа и после ги пускаш да бягат по порта - какво ще се получи обаче..
|
| Пет Сеп 12, 2008 9:06 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
|
| Пет Сеп 12, 2008 9:24 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
Ки4о мерси - нещо подобно сътворих :)
_________________ main[-1u]={1};
|
| Пон Сеп 15, 2008 1:28 pm |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
Всъщност един LFSR е това което търсиш - бягат в една посока и са "случайни".
Обаче темата определено е безумна.
|
| Пон Сеп 15, 2008 1:37 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
неставаше въпрос за безумност - търсех нещо "хитроумно" да СМЕНЯ ефектитите
масивите и RND числа са ясни....
и дори нестава въпрос за контролер, а за алгоритъм/математика за визуализация/анимация на тема RunLight....
_________________ main[-1u]={1};
|
| Пон Сеп 15, 2008 2:34 pm |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
|
| Пон Сеп 15, 2008 2:52 pm |
|
 |
|
perro_iv
Ранг: Новодошъл
Регистриран на: Вто Авг 23, 2005 10:36 am Мнения: 156 Местоположение: Казанлък
|
Имах един проект на тази тема с който бая се заиграх и се получиха готини неща, но е на харда от компа ми, на който му сменят дъното и не мога да го отворя.
Но ще ти дам тип  и ако си находчив ще се справиш.
Отваряш EXCEL и си подреждаш двоичните комбинации.
Достатъчни са ти 4-ри бита всичко останало се повтаря.
Срещу всяка комбинация си пишеш десетичния еквивалент и от там нататъка е достатъчно да можеш да събираш две и две за да се досетиш за простите формули, които завъртяни в цикъл могат да ти опишат невероятни бягащи и гонещи, и запълващи се светлини.
Скоростта на въртене, смяната на комбинациите са въпрос на фантазия, което смятам е и гъдела на разработчика, та ще те оставим да се насладиш на воля ... 
|
| Пон Сеп 15, 2008 10:14 pm |
|
 |
|
perro_iv
Ранг: Новодошъл
Регистриран на: Вто Авг 23, 2005 10:36 am Мнения: 156 Местоположение: Казанлък
|
#include <p18f4550.h>
#pragma config WDT = OFF
unsigned speed=20000;
unsigned speed_up=16000;
unsigned speed_down=16000;
unsigned counter=0;
unsigned int i;
unsigned int j;
unsigned int B;
unsigned int D;
void delay (unsigned time)
{
for (i = 0; i < time ; i++);
}
void main (void)
{
TRISA = 0;
DCON1=6;
PORTA = 0;
PORTAbits.RA4=1;
TRISB = 0;
PORTB = 0;
TRISD = 0;
PORTD = 0;
while (1)
{
for (counter=0;counter<=15;counter++)
{
D=1;
PORTD = D;
speed=20000;
delay(speed);
for (j=1;j<=8;j++) { D=D+D; PORTD=D; delay(speed_up); }
for (j=1;j<=8;j++) { D=D/2; PORTD=D; delay(speed_down); }
speed_down=speed_down-1000;
speed_up=speed_up-1000;
if (speed_up==0 || speed_down==0)
{
speed_up=speed_up+16000;
speed_down=speed_down+16000;
}
}
for (counter=0;counter<=10;counter++)
{
D=0;
PORTD=D;
delay(speed);
for (j=1; j<=8;j++) { D=D+D+1; PORTD=D; delay(speed); }
speed=speed-2000;
}
for (j=1;j<=255;j++)
{
D=j;
PORTD=D;
delay(speed-10000);
}
}
}
|
| Вто Сеп 23, 2008 2:12 pm |
|
|