Wolke mit Sternenhimmel

Beschreibung

Schaltplan

Firmware

Die Firmware ist in Bascom-Basic geschrieben und enthält simple Software-PWM Routinen.

$regfile = "attiny2313.dat"
$crystal = 8000000
 
Config Timer0 = Timer , Prescale = 1
On Timer0 Timer0_isr
 
Ddrb = &B00011111
Ddrd = &B00110000
 
'Sternegruppen
Gruppe1 Alias Portb.0
Gruppe2 Alias Portb.1
Gruppe3 Alias Portb.2
Gruppe4 Alias Portb.3
Gruppe5 Alias Portb.4
 
'Plastikfiguren
Sonne Alias Portd.4
Mond Alias Portd.5
 
Dim Zaehler As Byte , Pwmvar(5) As Byte , I As Byte
Dim Group As Byte , Pwm_sonne As Byte , Pwm_mond As Byte
 
'Grenzwerte fuer die Schleifen
Const Pwm_min = 0
Const Pwm_low = 25
Const Pwm_high = 50
Const Pwm_max = 150
 
Enable Timer0
Enable Interrupts
 
'Plastikfiguren auf festen Wert
Pwm_sonne = 200
Pwm_mond = 100
 
For I = Pwm_min To Pwm_low
   Pwmvar(1) = I
   Waitms 1
Next I
 
Main:
Do
Group = 1
   For I = Pwm_low To Pwm_high
      Pwmvar(group) = I
      Waitms 2
   Next I
   For I = Pwm_high To Pwm_max Step 2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_max To Pwm_high Step -2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_low Step -1
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_low To Pwm_min Step -1
      Pwmvar(group) = I
      Pwmvar(group + 1) = Pwm_low - I
      Waitms 1
   Next I
 
Group = 2
   For I = Pwm_low To Pwm_high
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_max Step 2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_max To Pwm_high Step -2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_low Step -1
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_low To Pwm_min Step -1
      Pwmvar(group) = I
      Pwmvar(group + 1) = Pwm_low - I
      Waitms 1
   Next I
 
Group = 3
   For I = Pwm_low To Pwm_high
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_max Step 2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_max To Pwm_high Step -2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_low Step -1
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_low To Pwm_min Step -1
      Pwmvar(group) = I
      Pwmvar(group + 1) = Pwm_low - I
      Waitms 1
   Next I
 
Group = 4
   For I = Pwm_low To Pwm_high
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_max Step 2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_max To Pwm_high Step -2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_low Step -1
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_low To Pwm_min Step -1
      Pwmvar(group) = I
      Pwmvar(group + 1) = Pwm_low - I
      Waitms 1
   Next I
 
Group = 5
   For I = Pwm_low To Pwm_high
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_max Step 2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_max To Pwm_high Step -2
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_high To Pwm_low Step -1
      Pwmvar(group) = I
      Waitms 1
   Next I
   For I = Pwm_low To Pwm_min Step -1
      Pwmvar(group) = I
      Pwmvar(1) = Pwm_low - I
      Waitms 1
   Next I
 
Loop
End
 
 
Timer0_isr:
   Zaehler = Zaehler + 1
 
   If Pwmvar(1) > Zaehler Then
      Gruppe1 = 1
   Else
      Gruppe1 = 0
   End If
 
   If Pwmvar(2) > Zaehler Then
      Gruppe2 = 1
   Else
      Gruppe2 = 0
   End If
 
   If Pwmvar(3) > Zaehler Then
      Gruppe3 = 1
   Else
      Gruppe3 = 0
   End If
 
   If Pwmvar(4) > Zaehler Then
      Gruppe4 = 1
   Else
      Gruppe4 = 0
   End If
 
   If Pwmvar(5) > Zaehler Then
      Gruppe5 = 1
   Else
      Gruppe5 = 0
   End If
 
 
   If Pwm_sonne > Zaehler Then
      Sonne = 1
   Else
      Sonne = 0
   End If
 
   If Pwm_mond > Zaehler Then
      Mond = 1
   Else
      Mond = 0
   End If
Return

Bilder

Wolke an der Decke hängendFertige Wolke an der Decke hängend
Fertige PlatineFertige Platine
Verdrahtung auf der OberseiteVerdrahtung auf der Oberseite

Video

Video vom Sternenhimmeleffekt bei Dunkelheit

 
avr/wolke.txt · Zuletzt geändert: 2010/03/29 17:09 (Externe Bearbeitung)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki