ich hab mal wieder etwas gebastelt und durch die Inspiration der neuen Knight Rider Serie, die mit dem schicken Shelby Mustang als KITT an den Start ging, musste ich den Scanner nachbauen.
Genommen habe ich einen Microchip PIC16F628A, der über je einen Widerstand zwei parallel geschaltete LEDs mit einer Pulsweitenmodulation ansteuert. Insgesamt sind 2 x 15 LEDs verbaut, die den Effekt schon ganz gut darstellen. Das Programm ist in Proton Picbasic geschrieben. Unter http://www.youtube.com/watch?v=l2xmKw5uy94 findet Ihr ein Video.
Gruß René
Code: Alles auswählen
DEVICE = 16F628
XTAL = 4
Config INTRC_OSC_NOCLKOUT, WDT_OFF, MCLRE_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF
TRISA = %00000000
TRISB = %00000000
ALL_DIGITAL TRUE
porta = 0
portB = %00010000
'************************************************* ***************
Symbol led1 = PORTB.0
Symbol led2 = PORTB.1
Symbol led3 = PORTB.2
Symbol led4 = PORTB.3
Symbol led5 = PORTB.4
Symbol led6 = PORTB.5
Symbol led7 = PORTB.6
Symbol led8 = PORTB.7
Symbol led9 = PORTa.0
Symbol led10 = PORTa.1
Symbol led11 = PORTa.2
Symbol led12 = PORTa.3
Symbol led13 = PORTa.4
Symbol led14 = PORTa.6
Symbol led15 = PORTa.7
'************************************************* ***************
Dim index As Byte
dim st as byte
dim i as byte
Dim LedPWM[16] As Byte
'************************************************* ***************
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Start:
for st=0 to 44
restore st
for i=1 to 15
read ledpwm[i]
next i
for i=0 to 10
gosub pwm_lus
next
next st
for st=0 to 44
restore 44 - st
for i=1 to 15
read ledpwm[i]
next i
for i=0 to 10
gosub pwm_lus
next
next st
delayms 1000
goto start
'************************************************* ***************
PWM_lus:
For index = 0 To 20
If ledpwm[1] > index Then
High led1
Else
Low led1
EndIf
If ledpwm[2] > index Then
High led2
Else
Low led2
EndIf
If ledpwm[3] > index Then
High led3
Else
Low led3
EndIf
If ledpwm[4] > index Then
High led4
Else
Low led4
EndIf
If ledpwm[5] > index Then
High led5
Else
Low led5
EndIf
If ledpwm[6] > index Then
High led6
Else
Low led6
EndIf
If ledpwm[7] > index Then
High led7
Else
Low led7
EndIf
If ledpwm[8] > index Then
High led8
Else
Low led8
EndIf
If ledpwm[9] > index Then
High led9
Else
Low led9
EndIf
If ledpwm[10] > index Then
High led10
Else
Low led10
EndIf
If ledpwm[11] > index Then
High led11
Else
Low led11
EndIf
If ledpwm[12] > index Then
High led12
Else
Low led12
EndIf
If ledpwm[13] > index Then
low led13
Else
high led13
EndIf
If ledpwm[14] > index Then
High led14
Else
Low led14
EndIf
If ledpwm[15] > index Then
High led15
Else
Low led15
EndIf
Next
Return
End