Inhaltsverzeichnis

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