+++ Hier werde ich nach und nach alle Programme aus meiner oder mit Quellangabe fremder Hand einfügen +++

bis dahin schaut in meinen Projekten Treppenlich, Einfahrtslicht. Codeschloss und Jalousiensteuerung nach. Dort sind die Programme verlinkt... Danke für Eure Geduld.


2013 - Projekt 13x LED Spot Lauflicht für Wohnungstreppe

$regfile = "attiny861.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 100
'$sim
Ddra = &B11111111
Ddrb = &B00011111
Porta = &B00000000
Portb = &B00000000
Declare Sub Switch_on(byval Cstart As Byte , Byval Cstop As Integer , Byval Reverse As Byte)
Dim Ison As Bit , Isoff As Bit , S1 As Bit , S2 As Bit , Sch1 As Bit , Sch2 As Bit
Dim Led1 As Byte , Led2 As Byte , Ledb As Byte , Dauer As Word , Zwei As Byte
Dim Pwmhell As Word , Pwmdunkel As Word , Dimm As Word , Timeout As Word , Speed As Word
Dim Led As Integer                                          'weil manchmal negative Werte
Dim Timeron As Long
' Übersicht Speicherbereiche Variablen
  'Dim as Bit     = 0 bis 1
  'Dim as Byte    = 0 bis 255
  'Dim as Integer = -32768 bis +32767
  'Dim as Word    = 0 bis 65535
  'Dim as Long    = -2147483648 bis 2147483647
  'Dim as Single  = 1,5 x 10^-45 bis 3,4 x 10^38
  'Dim as Double  = 5,0 x 10^-324 bis 1,7 x 10^308
  'Dim as String  = 254 Zeichen
'Wert Leuchtdauer ohne Ausschaltimpuls
Dauer = 1200                                                'mal 5,1ms = 6,12s
Speed = 600
Timeron = 0
'Programmanfang
Anfang:
Timeout = 0
' Variablen für Tastverhältnis auf- oder absteigend und Merker für LED bereits Ein/Aus
   If Zwei = 1 Then
      Zwei = 0
   End If
   Ison = 0
   Isoff = 1
   For Led = 0 To 12
   If Porta.led = 1 And Led < 8 Then
      Ison = 1
      Isoff = 0
   End If
   If Led > 7 Then
   Ledb = Led - 8
      If Portb.ledb = 1 Then
         Ison = 1
         Isoff = 0
      End If
   End If
   Next
   If Ison = 0 Then
     Sch1 = 0
     Sch2 = 0
   End If
Do
Led = 0
Led1 = 0
Led2 = 0
Ledb = 0
Pwmdunkel = 0
Pwmhell = 0
'Zeit Bis Ausschalten Nachtlicht
Timeron = Timeron + 1
If Timeron > 16941176 Then                                  '5,1ms x 16941176 = 24h
Timeron = 0
End If
If Timeron < 4941177 And S1 = 0 And S2 = 0 Then             '5,1ms x 4941177 = 7h
Porta = &B11111111
Portb = &B00011111
End If
If Timeron > 7764706 And Timeron < 9176471 And S1 = 0 And S2 = 0 Then       '5,1ms x 7764706 = 11h                                                                                        
'5,1ms x 9176471 = 13h

Porta = &B11111111
Portb = &B00011111
End If
' Timerende prüft in welcher Richtung die Beleuchtung losgelaufen ist um in umgekehrter Richtung auszuschalten
   If Timeout > Dauer And S1 = 1 And S2 = 0 Then
   Goto Sw2
   End If
   If Timeout > Dauer And S2 = 1 And S1 = 0 Then
   Goto Sw1
   End If
'Reset Timer und Speichervar. für Bewegungsmelder
   If Timeout > Dauer Then
   Timeout = 0
   S1 = 0
   S2 = 0
   End If
'Timer
   Timeout = Timeout + 1
   Led = 0
   Waitus 100                                               '0,1ms
If S1 = 0 And S2 = 0 Then
Porta = &B00000000
Portb = &B00000000
End If
' Abfrageschleife der Bewegungsmelder mit Abschalttimer wenn niemand an Treppeneende ankommt (Haustier)
If Pinb.= 1 And Pinb.= 0then
Goto Sw1
End If
If Pinb.= 1 And Pinb.= 0 Then
Goto Sw2
End If
   Waitms 5                                                 '5ms
Loop
' Bewegungsmelder 1 wurde dedektiert und startet anhand Ison, ob aus oder eingedimmt werdern soll
Sw1:
      Sch1 = 1
      Sch2 = 0
      If Ison = 0 Then
             Ison = 1
             Isoff = 0
             S1 = 1
             S2 = 0
             Call Switch_on(, 12 , 0)
      Else
             Ison = 0
             Isoff = 1
             S1 = 0
             S2 = 0
             Call Switch_on(12 , 0 , 1)
      End If
Goto Anfang
' Bewegungsmelder 2 wurde dedektiert und startet anhand Ison, ob aus oder rückwärts eingedimmt werdern soll
Sw2:
   Sch1 = 0
   Sch2 = 1
      If Ison = 0 Then
             Ison = 1
             Isoff = 0
             S1 = 0
             S2 = 1
             Call Switch_on(12 , 0 , 1)
      Else
             Ison = 0
             Isoff = 1
             S1 = 0
             S2 = 0
             Call Switch_on(, 12 , 0)
   End If
Goto Anfang
'Hauptprogramm für vorwärts oder rückwärts ein oder aus dimmen
Sub Switch_on(cstart , Cstop , Reverse)
   'Wenn Rückwärts aus, dann starte vorwärts
   If Reverse = 0 Then
          Wechsel2:
          For Led = Cstart To Cstop
                'Lege Tastverhältnis für PWM fest
                Pwmdunkel = Speed + 1
                Pwmhell = 1
                Led2 = Led - Led1
                   'Schleife für Dimmung eines LED Spot
                   For Dimm = Speed To 0 Step -1
                      'Wenn Ausgang 13 Überschritten überspringe nächste Zeilen (nur für zwei Treppenbenutzer)                      If Led > 12 Then
                        Goto Weiter1
                      End If
                         ' Da ab PortA 8 die PortsB 1-4 genutzt werden
                         If Led < 8 Then
                            Porta.led = Isoff
                         Else
                            Ledb = Led - 8
                            Portb.ledb = Isoff
                         End If
                      Weiter1:
                      'Wenn eine zweite Person die Treppe benutzt und der Ausschaltvorgang vor Ihm die Treppe gerade ausschaltet
                      If Zwei = 1 Then
                         If Led2 < 8 Then
                            Porta.led2 = Ison
                         Else
                            Ledb = Led2 - 8
                               If Ledb > 5 Then
                                  Ledb = 5
                               End If
                            Portb.ledb = Ison
                         End If
                      End If
                   Waitus Pwmdunkel
                      If Led > 12 Then
                         Goto Weiter2
                      End If
                         If Led < 8 Then
                            Porta.led = Ison
                         Else
                            Ledb = Led - 8
                            Portb.ledb = Ison
                         End If
                      Weiter2:
                      If Zwei = 1 Then
                         If Led2 < 8 Then
                            Porta.led2 = Isoff
                         Else
                            Ledb = Led2 - 8
                               If Ledb > 5 Then
                                  Ledb = 5
                               End If
                            Portb.ledb = Isoff
                         End If
                      End If
                   Waitus Pwmhell
                   Pwmdunkel = Pwmdunkel - 1
                   Pwmhell = Pwmhell + 1
                   Next
               'Start Sonderfunktion Einschalten obwohl gerade ausgeschaltet
               'es entsteht also eine Lücke zwischen neu einschaltenden LED und ausschaltetenden LEDs
               If Pinb.= 0 Then
               Sch1 = 0
               End If
               If Pinb.= 1 And Ison = 0 And Zwei = 0 And Sch1 = 0 And Pinb.= 0 Then
                  S1 = 1
                  S2 = 0
                  Sch1 = 1
                  Zwei = 1
                  Led1 = Led + 1
                  Cstop = Cstop + Led1
               End If
               If Pinb.= 0 Then
               Sch2 = 0
               End If
               If Pinb.= 1 And Ison = 0 And Zwei = 0 And Sch2 = 0 And Pinb.= 0 Then
                  S1 = 0
                  S2 = 1
                  Sch2 = 1
                  Cstart = Led
                  Cstop = 0
                  Zwei = 1
                  Goto Wechsel1
               End If
          Next Led
   Else
          'siehe oben nur rückwärts
         Wechsel1:
          For Led = Cstart To Cstop Step -1
                Pwmdunkel = Speed + 1
                Pwmhell = 1
                Led2 = Led + Led1
                For Dimm = Speed To 0 Step -1
                   If Led < 0 Then
                        Goto Weiter3
                   End If
                      If Led < 8 Then
                         Porta.led = Isoff
                         Else
                         Ledb = Led - 8
                            If Ledb > 5 Then
                               Ledb = 5
                            End If
                         Portb.ledb = Isoff
                      End If
                   Weiter3:
                      If Zwei = 1 Then
                         If Led2 < 8 Then
                            Porta.led2 = Ison
                         Else
                            Ledb = Led2 - 8
                               If Ledb > 5 Then
                                  Ledb = 5
                               End If
                            Portb.ledb = Ison
                         End If
                      End If
                Waitus Pwmdunkel
                      If Led < 0 Then
                         Goto Weiter4
                      End If
                      If Led < 8 Then
                         Porta.led = Ison
                         Else
                         Ledb = Led - 8
                               If Ledb > 5 Then
                                  Ledb = 5
                               End If
                         Portb.ledb = Ison
                      End If
                     Weiter4:
                      If Zwei = 1 Then
                         If Led2 < 8 Then
                            Porta.led2 = Isoff
                         Else
                            Ledb = Led2 - 8
                               If Ledb > 5 Then
                                  Ledb = 5
                               End If
                            Portb.ledb = Isoff
                         End If
                      End If
                Waitus Pwmhell
                Pwmdunkel = Pwmdunkel - 1
                Pwmhell = Pwmhell + 1
                Next
                If Pinb.= 0 Then
                Sch1 = 0
                End If
                If Pinb.= 1 And Ison = 0 And Zwei = 0 And Sch1 = 0 And Pinb.= 0 Then
                  S1 = 1
                  S2 = 0
                  Sch1 = 1
                  Cstart = Led
                  Cstop = 12
                  Zwei = 1
                  Goto Wechsel2
                End If
                If Pinb.= 0 Then
                Sch2 = 0
                End If
                If Pinb.= 1 And Ison = 0 And Zwei = 0 And Sch2 = 0 And Pinb.= 0 Then
                  S1 = 0
                  S2 = 1
                  Sch2 = 1
                  Zwei = 1
                  Led1 = 12 - Led
                  Led1 = Led1 + 1
                  Cstop = Led1
                  Cstop = 0 - Cstop
                End If
          Next Led
   End If
End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


2014 - Projekt Einfahrtsbeleuchtung mit 30 LED Stripe

2016 - Projekt Umbau Einfahrtsbeleuchtung auf RGB

$regfile = "m32def.dat"
$crystal = 8000000                        '3Mhz statt 8Mhz demnach müsste alles doppelt so schnell laufen
$hwstack = 100
$swstack = 100
$framesize = 100
'$sim
'Programmversionen ab RGB Umbau
'Änderungshistorie:
'V2.00  2016-03-30  Veränderung der PWM Frequenz wegen Interferrenzen mit dem RGM Modul
'V2.01  2016-03-30  Neuprogrammierung des Sterneneffektes, da die PWMfrequenz auf 2khz gesetzt werden musste
'V2.02  2016-04-01  Neuprogrammierung des Sterneneffektes, da die PWMfrequenz auf 4khz gesetzt werden musste
'V2.03  2016-04-04  Überarbeitung Sterneneffekt (Reduzierung Programmschritte)
'V2.04  2016-04-05  Überarbeitung Sterneneffekt (Reduzierung Programmschritte)
'V2.05  2016-04-07  Überarbeitung Sterneneffekt (Reduzierung Programmschritte)
'V2.06  2016-04-10  Merkerled funktionierte nicht
'V2.07  2016-04-19  Flimmert immer noch - neue Programmstruktur Modus 10
'V2.08  2016-05-03  kein sauberes Dimmen der ZufallsLED, Daher nochmal Modus 10 überarbeitet auf Geschwindigkeit
'V2.09  2016-12-06  Geschwindigkeit des Nachtbetriebes angpasst an Winter (Wintererkennung durch unlöschbare Variable)
'V2.10  2017-07-01  Verbesserungen da RGB Stripes öfter ausfallen (meist blau)
'V2.11  2017-07-03  Verbesserungen da RGB Stripes öfter ausfallen (meist blau)
'V2.12  2017-07-06  Verbesserungen da RGB Stripes öfter ausfallen (meist blau)Incr statt +1 wegen schneller
'V2.14  2018-06-07  Verbesserungen da RGB Stripes immer noch öfter ausfallen 
Sterneneffekt gelöscht

'*********************************************************************************************************
'Alle Ports auf digital 5V/0V setzen ausser die Eingänge der Bewegungsmelder die auf 2,6V
Ddra = &B11111111
Ddrb = &B11111111
Ddrc = &B11111111
Ddrd = &B00111111
'Alle Ports auf 0 setzen für definierten Anfangszustand
Porta = &B00000000
Portb = &B00000000
Portc = &B00000000
Portd = &B00000000
'Variablen und Subs festlegen
Declare Sub Switch_on(byval Cstart As Byte , Byval Cstop As Integer , Byval Reverse As Byte)
Declare Sub Switch_on1(byval Cstart As Integer , Byval Cstop As Integer , Byval Reverse As Byte)
Declare Sub Outputs
Declare Sub Outputgruppe
Declare Sub Movinglight(byval Reverse As Byte)
Declare Sub Doublemovinglight(byval Cstart As Byte , Byval Cstop As Integer , Byval Reverse As Byte)
Declare Sub Doublemovinglight2(byval Cstart As Byte , Byval Cstop As Integer , Byval Reverse As Byte)
Declare Sub Welle
Declare Sub Dimmen
Declare Sub Dimmschleife
Declare Sub Sterneneffekt
Dim Ison As Bit
Dim Isoff As Bit
Dim S1 As Bit
Dim S2 As Bit
Dim S3 As Byte
Dim Wert As Bit
Dim A As Bit
Dim B As Bit
Dim C As Bit
Dim Led As Integer
Dim Leu As Integer
Dim Leda As Byte
Dim Ledb As Byte
Dim Ledc As Byte
Dim Ledd As Byte
Dim Dauer As Byte
Dim Zwei As Byte
Dim Pwmhell As Word
Dim Pwmdunkel As Word
Dim Dimm As Word
Dim Timeout As Word
Dim Faktor As Single
Dim Pwmhell0 As Single
Dim Pwmhell1 As Integer
Dim Pwmhell2 As Integer
Dim Pwmdunkel0 As Single
Dim Pwmdunkel1 As Integer
Dim Pwmdunkel2 As Integer
Dim Speedmodus1 As Word
Dim Speedmodus2 As Word
Dim Speedmodus3 As Word
Dim Speedmodus4 As Word
Dim Speedmodus5 As Word
Dim Anzahlmodus4 As Word
Dim Speedmodus6 As Word
Dim Speedmodus7 As Word
Dim Anzahlmodus7 As Word
Dim Speedmodus10 As Word
Dim Speedmodus10_ As Word
Dim Z As Byte
Dim Y As Word
Dim X As Word
Dim W As Byte
Dim Modus As Byte
Dim Merkerdimmung As Bit
Dim Merkerpwmdunkel As Word
Dim Merkerpwmhell As Word
Dim Merkerled As Byte
Dim Merker1 As Single
Dim Merker2 As Single
Dim Merker3 As Bit
Dim Zaehler1 As Integer
Dim Zaehler2 As Byte
Dim Timeron As Long
Dim Timeron1 As Long
Dim Faktortimer As Single
Dim Winter As Long
Dim Winterx As Eram Long                                                    'Winterzeit
'Winterx = Winter  write to EEPROM
'Winter = Winterx  read from EEPROM
Dim Portnra As Byte
Dim Portnrb As Byte
Dim Portnrc As Byte
Dim Portnrd As Byte
' Übersicht Speicherbereiche Variablen
  'Dim as Bit     = 0 bis 1
  'Dim as Byte    = 0 bis 255
  'Dim as Integer = -32768 bis +32767
  'Dim as Word    = 0 bis 65535
  'Dim as Long    = -2147483648 bis 2147483647
  'Dim as Single  = 1,5 x 10^-45 bis 3,4 x 10^38
  'Dim as Double  = 5,0 x 10^-324 bis 1,7 x 10^308
  'Dim as String  = 254 Zeichen
'Variablen für LED Zustand (an oder aus) definieren
Ison = 0
Isoff = 1
Timeron = 0
Modus = Rnd(7) + 1
'Warte 25s Bis Sich Bewegungsmelder beruhigt Haben
'In dieser Zeit kann man die Sommer oder Winterzeit einstellen
Zaehler1 = 0
Winter = Winterx                                            'read from EEPROM
Do
  'Wenn in der ersten 5s der Funkschalter aktiv ist, dann setze Winterzeit
  If Pind.= 1 And Zaehler1 < 5000 Then
    Winter = 4000000
    Porta.= 1
  End If
  'Wenn in der nach 10s für 5s der Funkschalter aktiv ist, dann setze Sommerzeit
  If Pind.= 1 And Zaehler1 > 10000 And Zaehler1 < 15000 Or Winter = 0 Then
    Winter = 2000000
    Porta.= 1
    Porta.= 1
  End If
Waitms 1
Zaehler1 = Zaehler1 + 1
Loop Until Zaehler1 = 25000
Zaehler1 = 0
Merkerdimmung = 0
'Wenn Merker "Winter" sich geändert hat, dann EEPROM Variable neu schreiben
If Winter <> Winterx Then Winterx = Winter
Porta = 0
'===========================================================================================
'===========================================================================================
'Programmanfang
Anfang:
'Geschwindigkeiten und Zeiten aller Modi festlegen (*µs)
Speedmodus1 = 500
Speedmodus2 = 200
Speedmodus3 = 230
Speedmodus4 = 120
Anzahlmodus4 = 180
Speedmodus5 = 300
Speedmodus6 = 250
Speedmodus7 = 1000
Anzahlmodus7 = 10
Speedmodus10 = 249
Speedmodus10_ = 1
Timeout = 0
Dauer = 100
'Zufallsgenerator für Auswahl Modus für Bewegungsmelder wenn LED aus
   If Ison = 0 Then
     Modus = Modus + 1
     If Modus = 9 Then
     Modus = 1
     End If                                                 'Rnd(7) + 1
   End If
Anfangausdimmung:
'Warten damit Funk wieder ein falls manuell gedimmt werden sollte
Do
'Zählervariablen zurücksetzen
Led = 0
Ledb = 0
Ledc = 0
Ledd = 0
= 0
= 0
= 0
= 0
Pwmdunkel = 0
Pwmhell = 0
Timeron = Timeron + 1                                       'Timer 100ms x Timeron
If Timeron >= 36000 And Merkerdimmung = 0 And Pind.= 0 Then
Merkerdimmung = 1
Merkerpwmhell = 60
Merkerpwmdunkel = 190
Merkerled = 28
Goto Modus10
End If
'Abfrageschleife der Bewegungsmelder mit Abschalttimer
   If Pind.= 1 And Pind.= 0 And Pind.= 0 And Ison = 0 Then
   Goto Sw1
     Elseif Pind.= 1 And Pind.= 0 And Pind.= 0 And Ison = 0 Then
     Goto Sw2
       Elseif Pind.= 1 And Pind.= 0 And Pind.= 0 And Ison = 0 Then
           Goto Sw3
              Elseif Pind.= 1 And Pind.= 0 And Pind.= 0 And S3 >= 1 Then
                Goto Sw3
                  Elseif Pind.= 0 And Pind.= 0 And Pind.= 0 And Merkerdimmung = 1 And Ison = 0 Then
                    Goto Modus10
   End If
'Timerende prüft in welcher Richtung die Beleuchtung losgelaufen ist um in umgekehrter Richtung auszuschalten
   If Timeout >= Dauer And S1 = 1 And S2 = 0 And Ison = 1 Then
     Goto Sw2
   End If

   If Timeout >= Dauer And S2 = 1 And S1 = 0 And Ison = 1 Then
     Goto Sw1
   End If
'Reset Timer und Speichervar. für Bewegungsmelder
   If Timeout >= Dauer Then
   Timeout = 0
   S1 = 0
   S2 = 0
   End If
'Timer
   Timeout = Timeout + 1
   Led = 0
   Waitms 100
Loop
End
Sw1:
'Bewegungsmelder 1 wurde dedektiert und startet anhand Ison, ob aus oder eingedimmt werdern soll
   If S1 = 1 Or S3 = 1 Then
      Goto Anfang
   End If
'Modus 1
   If Ison = 0 And Modus = 1 Then
          Ison = 1
          Isoff = 0
          S1 = 1
          Call Switch_on(, 28 , 0)
   Elseif Ison = 1 And Modus = 1 Then
          Ison = 0
          Isoff = 1
          S1 = 0
          S2 = 0
          Call Switch_on(, 28 , 1)
   End If
'Modus 2
  If Ison = 0 And Modus = 2 Then
          Ison = 0
          Isoff = 1
          Speedmodus1 = Speedmodus2
          Call Switch_on(, 28 , 0)
  End If
 'Modus 3
  If Ison = 0 And Modus = 3 Then
          Ison = 0
          Isoff = 1
          Call Switch_on1(, 33 , 0)
  End If
'Modus 4
  If Ison = 0 And Modus = 4 Then
          Call Movinglight(0)
  End If
'Modus 5
  If Ison = 0 And Modus = 5 Then
          Call Doublemovinglight(, 14 , 0)
  End If
'Modus 6
  If Ison = 0 And Modus = 6 Then
          Call Doublemovinglight2(, 14 , 0)
  End If
'Modus 7
  If Ison = 0 And Modus = 7 Then
          Call Welle
  End If
Goto Anfang
Sw2:
'Bewegungsmelder 2 wurde dedektiert und startet anhand Ison, ob aus oder rückwärts eingedimmt werdern soll
   If S2 = 1 Or S3 = 1 Then
      Goto Anfang
   End If
'Modus 1
   If Ison = 0 And Modus = 1 Then
          Ison = 1
          Isoff = 0
          S2 = 1
          Call Switch_on(, 28 , 1)
   Elseif Ison = 1 And Modus = 1 Then
          Ison = 0
          Isoff = 1
          S1 = 0
          S2 = 0
          Call Switch_on(, 28 , 0)
   End If
'Modus 2
  If Ison = 0 And Modus = 2 Then
          Ison = 0
          Isoff = 1
          Speedmodus1 = Speedmodus2
          Call Switch_on(, 28 , 1)
  End If
'Modus 3
  If Ison = 0 And Modus = 3 Then
          Ison = 0
          Isoff = 1
          Call Switch_on1(, 33 , 1)
  End If
'Modus 4
  If Ison = 0 And Modus = 4 Then
          Call Movinglight(1)
  End If
'Modus 5
  If Ison = 0 And Modus = 5 Then
          Call Doublemovinglight(, 14 , 1)
  End If
'Modus 6
  If Ison = 0 And Modus = 6 Then
          Call Doublemovinglight2(, 14 , 1)
  End If
'Modus 7
  If Ison = 0 And Modus = 7 Then
          Call Welle
  End If
Goto Anfang
Sw3:
'Funk ein alles andere aus und von hinten beginnend einschalten
   If S3 = 0 Then
   S3 = 1
   Porta = 0
   Portb = 0
   Portc = 0
   Portd = 0
      S3 = 1
      Ison = 1
      Isoff = 0
      Call Switch_on(, 28 , 0)
   Else
'Wenn Funk Schon mal an war gehe zur Dimmung
      Goto Modus10
   End If
Goto Anfang
'######################################################################
'Modus 1 und 2 für vorwärts oder rückwärts ein oder aus dimmen (mit anbleiben und ohne)
Sub Switch_on(cstart , Cstop , Reverse)
    X = 0
    Y = 0
    W = 0
Nochmal:
    If Reverse = 0 Then
    Led = Cstart
    Else
    Led = Cstop
    End If
    W = Cstart
    X = Cstop
    X = X + 1
   For Z = Cstart To Cstop
   'Lege Tastverhältnis für PWM fest
    Pwmdunkel = Speedmodus1 + 1
    Pwmhell = 1
        'Schleife für Dimmung eines LED Stripe
        For Dimm = Speedmodus1 To 0 Step -1
            Wert = Isoff
            If S3 = 1 And Led < 6 Then
            Leu = 5 - Led
            Else
            Leu = Led
            End If
            Call Outputs
            Waitus Pwmdunkel
            Wert = Ison
            If S3 = 1 And Led < 6 Then
            Leu = 5 - Led
            Else
            Leu = Led
            End If
            If Speedmodus1 = Speedmodus1 Then
            Call Outputs
            End If
            Waitus Pwmhell
          Pwmdunkel = Pwmdunkel - 1
          Pwmhell = Pwmhell + 1
        Next Dimm
        If Speedmodus1 = Speedmodus2 Then
        Call Outputs
        End If
    If Reverse = 0 Then
      Led = Led + 1
    Else
      Led = Led - 1
    End If
    If Pind.= 1 And Led = -Then
        Ison = 0
        Isoff = 1
        S3 = 0
        Exit Sub
    End If
    If Pind.= 1 And Led = 29 And S3 = 1 Then
        Goto Modus10
    End If
   If Pind.= 0 And S3 = 1 Then
      Goto Anfang
   End If
   Next Z
   Y = Y + 1
   If Z = X And Y < 15 And Modus = 2 Then
   Cstart = W
   Goto Nochmal
   End If
End Sub
Goto Anfang
'######################################################################
'Modus 3 für vorwärts oder rückwärts wischen wie Landebahn mit mehreren LEDs
Sub Switch_on1(cstart , Cstop , Reverse)
Wiederholung:
    If Reverse = 0 Then
    Led = Cstart
    Else
    Led = Cstop - 5
    End If

    W = Cstart
    X = Cstop
    X = X + 1
   For Z = Cstart To Cstop
   'Lege Tastverhältnis für PWM fest
    Pwmdunkel = Speedmodus3 + 1
    Pwmhell = 1
        'Schleife für Dimmung eines LED Stripe
         For Dimm = Speedmodus3 To 0 Step -1
            Wert = Isoff
            Leu = Led
            Call Outputs
            If Led >= 5 And Reverse = 0 Then
              Wert = Isoff
              Leu = Led - 5
              Call Outputs
                Elseif Led < 24 And Reverse = 1 Then
                Wert = Isoff
                Leu = Led + 5
                Call Outputs
            End If
         Waitus Pwmdunkel
            Wert = Ison
            Leu = Led
            'Call Outputs
            If Led >= 5 And Reverse = 0 Then
            Wert = Ison
            Leu = Led - 5
            'Call Outputs
            Elseif Led < 24 And Reverse = 1 Then
            Wert = Ison
            Leu = Led + 5
            'Call Outputs
            End If
         Waitus Pwmhell
          Pwmdunkel = Pwmdunkel - 1
          Pwmhell = Pwmhell + 1
        Next Dimm
   Porta = 0
   Portb = 0
   Portc = 0
   Portd = 0
    If Reverse = 0 Then
      Led = Led + 1
    Else
      Led = Led - 1
    End If
   Next Z
   Y = Y + 1
   If Z = X And Y < 15 And Modus = 3 Then
   Cstart = W
   Goto Wiederholung
   End If
End Sub
Goto Anfang
'######################################################################
'Modus 4 für vorwärts oder rückwärts Lauflicht mit drei LED
Sub Movinglight
   For Z = 1 To Anzahlmodus4
   Y = Y + 1
   If Y = 1 And Reverse = 0 Then
   A = 1
   B = 0
   C = 0
   Elseif Y = 1 And Reverse = 1 Then
   C = 1
   B = 0
   A = 0
   End If
   If Y = 2 Then
   A = 0
   B = 1
   C = 0
   End If
   If Y = 3 And Reverse = 0 Then
   A = 0
   B = 0
   C = 1
   Y = 0
   Elseif Y = 3 And Reverse = 1 Then
   C = 0
   B = 0
   A = 1
   Y = 0
   End If
 'beim letzen Durchlauf alle auschalten
   If Z = Anzahlmodus4 Then
   A = 0
   B = 0
   C = 0
   End If
   Porta.= A
   Porta.= B
   Porta.= C
   Porta.= A
   Porta.= B
   Porta.= C
   Porta.= A
   Porta.= B
   Portb.= C
   Portb.= A
   Portb.= B
   Portb.= C
   Portb.= A
   Portb.= B
   Portb.= C
   Portb.= A
   Portc.= B
   Portc.= C
   Portc.= A
   Portc.= B
   Portc.= C
   Portc.= A
   Portc.= B
   Portc.= C
   Portd.= A
   Portd.= B
   Portd.= C
   Portd.= A
   Portd.= B
   Waitms Speedmodus4
   Next Z
End Sub
Goto Anfang
'######################################################################
'Modus 5 für in beide Richtungen wischen von Mitte aus
Sub Doublemovinglight(cstart , Cstop , Reverse)
Wiederholung1:
    If Reverse = 0 Then
    Led = Cstart
    Else
    Led = Cstop
    End If
    W = Cstart
    X = Cstop
    X = X + 1
   For Z = Cstart To Cstop
   'Lege Tastverhältnis für PWM fest
    Pwmdunkel = Speedmodus5 + 1
    Pwmhell = 1
        'Schleife für Dimmung eines LED Stripe
         For Dimm = Speedmodus5 To 0 Step -1
            Wert = Isoff
            Leu = Led
            Call Outputs
             If Reverse = 0 Then
               Leu = Z + 14
             Else
               Leu = 28 - Z
             End If
            Call Outputs
         Waitus Pwmdunkel
            Wert = Ison
            Leu = Led
            'Call Outputs
             If Reverse = 0 Then
               Leu = Z + 14
             Else
               Leu = 28 - Z
             End If
            'Call Outputs
         Waitus Pwmhell
          Pwmdunkel = Pwmdunkel - 1
          Pwmhell = Pwmhell + 1
        Next Dimm
   Porta = 0
   Portb = 0
   Portc = 0
   Portd = 0
    If Reverse = 0 Then
      Led = Led + 1
    Else
      Led = Led - 1
    End If
   Next Z
   Y = Y + 1
   If Z = X And Y < 15 And Modus = 5 Then
   Cstart = W
   Goto Wiederholung1
   End If
End Sub
Goto Anfang
'######################################################################
'Modus 6 für in beide Richtungen wischen von Mitte aus aber wie Knight Rider
Sub Doublemovinglight2(cstart , Cstop , Reverse)
Wiederholung2:
    If Reverse = 0 Then
    Led = Cstart
    Else
    Led = Cstop
    End If
    W = Cstart
    X = Cstop
    X = X + 1
   For Z = Cstart To Cstop
   'Lege Tastverhältnis für PWM fest
    Pwmdunkel = Speedmodus6 + 1
    Pwmhell = 1
        'Schleife für Dimmung eines LED Stripe
         For Dimm = Speedmodus6 To 0 Step -1
            Wert = Isoff
            Leu = Led
            Call Outputs
             If Reverse = 0 Then
               Leu = Z + 14
             Else
               Leu = 28 - Z
             End If
            Call Outputs
         Waitus Pwmdunkel
            Wert = Ison
            Leu = Led
            'Call Outputs
             If Reverse = 0 Then
               Leu = Z + 14
             Else
               Leu = 28 - Z
             End If
            'Call Outputs
         Waitus Pwmhell

          Pwmdunkel = Pwmdunkel - 1
          Pwmhell = Pwmhell + 1
        Next Dimm
   Porta = 0
   Portb = 0
   Portc = 0
   Portd = 0
    If Reverse = 0 Then
      Led = Led + 1
    Else
      Led = Led - 1
    End If
   Next Z
   Y = Y + 1
   If Z = X And Y < 15 And Modus = 6 And Reverse = 0 Then
   Reverse = 1
   Cstart = W
   Goto Wiederholung2
   Elseif Z = X And Y < 15 And Modus = 6 And Reverse = 1 Then
   Reverse = 0
   Cstart = W
   Goto Wiederholung2
   End If
End Sub
Goto Anfang
'######################################################################
'Modus 7 an- und abschwellend
Sub Welle
Pwmdunkel = Speedmodus7
Merker3 = 0
Speedmodus7 = Speedmodus7 * 2
For X = 1 To Anzahlmodus7
   For Y = 1 To Speedmodus7
   If Merker3 = 0 Then
   Pwmhell = Pwmhell + 1
   Pwmdunkel = Pwmdunkel - 1
   Else
   Pwmhell = Pwmhell - 1
   Pwmdunkel = Pwmdunkel + 1
   End If
      Porta = 255
      Portb = 255
      Portc = 255
      Portd = 63
      Waitus Pwmhell
      Porta = 0
      Portb = 0
      Portc = 0
      Portd = 0
      Waitus Pwmdunkel
      If Pwmdunkel < 2 Then
      Merker3 = 1
      End If
      If Pwmhell < 20 Then
      Merker3 = 0
      End If
   Next Y
Next X
End Sub
Goto Anfang
'######################################################################
'Modus 10 alle bereits leuchtenden LED dimmen
Modus10:
'Tastverhältnis und letzte angesteuerte LED an Variable übergeben  und S2 auf Modus 2 setzen
'Test:
    S3 = 2
 If Merkerdimmung = 1 Then
   Pwmdunkel0 = Merkerpwmdunkel
   Pwmhell0 = Merkerpwmhell
   Pwmdunkel = Merkerpwmdunkel
   Pwmhell = Merkerpwmhell
   Pwmdunkel1 = 1
   Pwmdunkel2 = Merkerpwmdunkel
   Led = Merkerled
   Ison = 1
   Isoff = 0
   Merkerdimmung = 0
 Else
   Pwmdunkel0 = Speedmodus10_
   Pwmhell0 = Speedmodus10
   Pwmdunkel = Speedmodus10_                                ' 249µs  + 1µs = 4khz
   Pwmhell = Speedmodus10
   Ison = 1
   Isoff = 0
   Merkerdimmung = 0
   If Leu < 6 Then
     Led = 5 - Leu
   Else
     Led = Leu
   End If
   If Leu >= 29 Then
     S3 = 0
     Ison = 0
     Isoff = 1
     Merkerdimmung = 0
     Goto Anfang
   End If
 End If
 Led = Led + 1
 Call Outputgruppe
 Call Dimmschleife
 Merkerdimmung = 1
 Merkerpwmdunkel = Pwmdunkel
 Merkerpwmhell = Pwmhell
 Merkerled = Led
 Ison = 0
 Isoff = 1
 S3 = 0
 Porta = 0
 Portb = 0
 Portc = 0
 Portd = 0
 Goto Anfangausdimmung
'######################################################################
'Globales Programm Umwandlung Zahl in PortA-D
 Sub Outputs
    'Da ab PortA7 die PortsB - D genutzt werden
    If Leu < 8 And -< Leu Then
      Porta.leu = Wert
        Elseif 7 < Leu And Leu < 16 Then
          Ledb = Leu - 8
          Portb.ledb = Wert
            Elseif 15 < Leu And Leu < 24 Then
              Ledc = Leu - 16
              Portc.ledc = Wert
                Elseif 23 < Leu And Leu < 29 Then
                  Ledd = Leu - 24
                  Portd.ledd = Wert
    End If
 End Sub
  '######################################################################
'Globales Programm manuelles Dimmen Modus 10
 Sub Dimmen
 If Pwmhell0 > 1 Then
     Pwmdunkel0 = Pwmdunkel0 + 0.05
     Pwmhell0 = Pwmhell0 - 0.05
     Pwmdunkel = Round(pwmdunkel0)
     Pwmhell = Round(pwmhell0)
     If Pwmhell < 2 Then
       Porta = 56
       Wait 2
       If Pind.= 1 Then
        'Rücksprung zum Anfang
         S3 = 0
         Leu = 0
         Led = 0
         Ison = 0
         Isoff = 1
         Merkerdimmung = 0
         Portb = 0
         Portc = 0
         Portd = 0
         Timeron = 0
         Loslass1:
         Porta = 56
         Waitms 100
         Porta = 0
         Waitms 100
         If Pind.= 1 Then Goto Loslass1
         Goto Anfang
       End If
     End If
   End If
 End Sub
 '######################################################################
'Globales Programm Dimmschleife Modus 10 (separat wegen Geschwindigkeit)
 Sub Dimmschleife
 'Schleife Dimmung
Do
   'Wenn Funk aus damm bleibt die gewählte Dimmstufe mit jedem aus ein kann eine stufe tiefer gedimmt werden
   If Pind.= 1 Then Call Dimmen
   If Pind.= 1 Then Goto Bewegungsmelder:
   'Automatische Reduzierung
   If Timeron1 = Winter Then Call Outputgruppe            '4.000.000 = 60min je LED, 2.000.000 = 30min je LED 
   Incr Timeron1
   Porta = Portnra
   Portb = Portnrb
   Portc = Portnrc
   Portd = Portnrd
   Waitus Pwmhell
   Porta = 0
   Portb = 0
   Portc = 0
   Portd = 0
   Waitus Pwmdunkel
 Loop
 Bewegungsmelder:
 End Sub
 '######################################################################
'Globales Programm Umwandlung Zahl in PortA-D als Gruppe
 Sub Outputgruppe
   Led = Led - 1
   Timeron1 = 1
   If Led < 2 Then Led = 2
     If Led > 21 Then
       Portnra = 255
       Portnrb = 255
       Portnrc = 255
       If Led = 28 Then Portnrd = 63
       If Led = 27 Then Portnrd = 31
       If Led = 26 Then Portnrd = 15
       If Led = 25 Then Portnrd = 7
       If Led = 24 Then Portnrd = 3
       If Led = 23 Then Portnrd = 1
       If Led = 22 Then Portnrd = 0
       Goto Fertig
     End If
     If Led > 13 Then
       Portnra = 255
       Portnrb = 255
       Portnrd = 0
       If Led = 21 Then Portnrc = 127
       If Led = 20 Then Portnrc = 63
       If Led = 19 Then Portnrc = 31
       If Led = 18 Then Portnrc = 15
       If Led = 17 Then Portnrc = 7
       If Led = 16 Then Portnrc = 3
       If Led = 15 Then Portnrc = 1
       If Led = 14 Then Portnrc = 0
       Goto Fertig
     End If
     If Led > 5 Then
       Portnra = 255
       Portnrc = 0
       Portnrd = 0
       If Led = 13 Then Portnrb = 127
       If Led = 12 Then Portnrb = 63
       If Led = 11 Then Portnrb = 31
       If Led = 10 Then Portnrb = 15
       If Led = 9 Then Portnrb = 7
       If Led = 8 Then Portnrb = 3
       If Led = 7 Then Portnrb = 1
       If Led = 6 Then Portnrb = 0
       Goto Fertig
     End If
     Portnrb = 0
     Portnrc = 0
     Portnrd = 0
     If Led = 5 Then Portnra = 127
     If Led = 4 Then Portnra = 62
     If Led = 3 Then Portnra = 60
     If Led = 2 Then Portnra = 56
     If Led = 1 Then Portnra = 48
     If Led = 0 Then Portnra = 32
 Fertig:
 End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

2015 - Projekt 9x LED Spot Hofeinfahrtsbeleuchtung

$regfile = "attiny861.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
'$sim
'V1.01 2016-11-13
'Änderung weil Bewegungsmelder 1min an bleibt werden neu nur Flanken 0==> 1 erkannt                          
'V1.02 2016-12-19
'Änderung Dauer neu 15s statt 6 s
'V1.03 2016-12-19
'Änderung Dauer neu 20s statt 6 s
'V1.04 2016-12-19
'Änderung Dauer neu 30s statt 6 s
'V1.05 2017-02-10
'Änderung Dauer neu 15s  also Dauer 150 statt 60
'Einbindung Dämmerungsschalter
'V1.06 2017-01-27
'Änderung schneller statt 800 neu 600 für Speed
'V1.07 2017-11-25
'Wegfall Debounce
'Timerout Überlauf verhindert, da neu nur hochgezählt wird, wenn wenn ein Sensor aktiv war
'V1.08 2017-11-26
'neu 20s Dauer da Bewegungsmelder so lange an sind
'V1.09 2017-11-26
'neu 25s Dauer da Bewegungsmelder so lange an sind

Ddra = &B11111111
Ddrb = &B00001111
Porta = &B00000000
Portb = &B01100000

Declare Sub Switch_on(byval Cstart As Byte , Byval Cstop As Integer , Byval Reverse As Byte)
Dim Ison As Bit , Isoff As Bit , S1 As Bit , S2 As Bit , Sch1 As Bit , Sch2 As Bit
Dim Led1 As Byte , Led2 As Byte , Ledb As Byte , Dauer As Integer , Zwei As Byte
Dim Pwmhell As Word , Pwmdunkel As Word , Dimm As Word , Timeout As Word , Speed As Word
Dim Led As Integer                                          'weil manchmal negative Werte

'Programmanfang
Anfang:
'Wert Leuchtdauer ohne Ausschaltimpuls
Dauer = 250                                                 'mal 100ms = 25s
Speed = 600                                                 '600 Zyclen je Spot
Timeout = 0
'Variablen für Tastverhältnis auf- oder absteigend und Merker für LED bereits Ein/Aus
If Zwei = 1 Then
   Zwei = 0
End If
Ison = 0
Isoff = 1
For Led = 0 To 6
  If Porta.led = 1 And Led < 8 Then
    Ison = 1
    Isoff = 0
  End If
Next
If Ison = 0 Then
  Sch1 = 0
  Sch2 = 0
End If
Do
   Led = 0
   Led1 = 0
   Led2 = 0
   Ledb = 0
   Pwmdunkel = 0
   Pwmhell = 0
      'Wenn dunkel und nix an, dann auf Bewegungsmelder schauen
      If Pinb.= 0 And S1 = 0 And S2 = 0 Then
        'Abfrageschleife der Bewegungsmelder mit Abschalttimer, wenn niemand
        'am zweiten Bewegungsmelder ankommt (z.B. Haustier)
        If Pinb.= 0 Then Goto Sw1
        If Pinb.= 0 Then Goto Sw2
      End If
     'Timerende prüft in welcher Richtung die Beleuchtung losgelaufen
     'ist um in umgekehrter Richtung auszuschalten
      If Timeout > Dauer And S1 = 1 And S2 = 0 Then
        S1 = 0
        Goto Sw2
      End If
      If Timeout > Dauer And S2 = 1 And S1 = 0 Then
        S2 = 0
        Goto Sw1
      End If
      'Reset Timer und Speichervar. für Bewegungsmelder
      If Timeout > Dauer Then
        Timeout = 0
        S1 = 0
        S2 = 0
      End If
      'Timer
      If S1 = 1 Or S2 = 1 Then Timeout = Timeout + 1
      Led = 0
      Waitms 100
Loop
End
'Bewegungsmelder 1 wurde dedektiert und startet anhand Ison, ob aus oder eingedimmt werdern soll
Sw1:
   Sch1 = 1
   Sch2 = 0
   If Ison = 0 Then
     Ison = 1
     Isoff = 0
     S1 = 1
     S2 = 0
     Call Switch_on(, 6 , 0)
   Else
     Ison = 0
     Isoff = 1
     S1 = 0
     S2 = 0
     Call Switch_on(, 0 , 1)
   End If
Goto Anfang
'Bewegungsmelder 2 wurde dedektiert und startet anhand Ison, ob aus oder rückwärts eingedimmt werdern soll   
Sw2:
   Sch1 = 0
   Sch2 = 1
   If Ison = 0 Then
     Ison = 1
     Isoff = 0
     S1 = 0
     S2 = 1
     Call Switch_on(, 0 , 1)
   Else
     Ison = 0
     Isoff = 1
     S1 = 0
     S2 = 0
     Call Switch_on(, 6 , 0)
   End If
Goto Anfang
'Hauptprogramm für vorwärts oder rückwärts ein oder aus dimmen
Sub Switch_on(cstart , Cstop , Reverse)
  'Wenn Rückwärts aus, dann starte vorwärts
   If Reverse = 0 Then
     Wechsel2:
     For Led = Cstart To Cstop
      'Lege Tastverhältnis für PWM fest
       Pwmdunkel = Speed + 1
       Pwmhell = 1
       Led2 = Led - Led1
      'Schleife für Dimmung eines LED Spot
       For Dimm = Speed To 0 Step -1
         'Wenn Ausgang 7 Überschritten überspringe nächste Zeilen (nur für zwei Treppenbenutzer)
          If Led > 6 Then
            Goto Weiter1
          Else
            Porta.led = Isoff
          End If
          Weiter1:
          'Wenn eine zweite Person die Treppe benutzt und der Ausschaltvorgang 
die Treppe gerade ausschaltet

          If Zwei = 1 Then
            Porta.led2 = Ison
          End If
          Waitus Pwmdunkel
          If Led > 6 Then
            Goto Weiter2
          Else
            Porta.led = Ison
          End If
          Weiter2:
          If Zwei = 1 Then
            Porta.led2 = Isoff
          End If
          Waitus Pwmhell
          Pwmdunkel = Pwmdunkel - 1
          Pwmhell = Pwmhell + 1
       Next
     Next Led
   Else
     'siehe oben nur rückwärts
     Wechsel1:
     For Led = Cstart To Cstop Step -1
       Pwmdunkel = Speed + 1
       Pwmhell = 1
       Led2 = Led + Led1
       For Dimm = Speed To 0 Step -1
         If Led < 0 Then
           Goto Weiter3
         Else
           Porta.led = Isoff
         End If
         Weiter3:
         If Zwei = 1 Then
           Porta.led2 = Ison
         End If
         Waitus Pwmdunkel
         If Led < 0 Then
           Goto Weiter4
         Else
           Porta.led = Ison
         End If
         Weiter4:
         If Zwei = 1 Then
           Porta.led2 = Isoff
         End If
         Waitus Pwmhell
         Pwmdunkel = Pwmdunkel - 1
         Pwmhell = Pwmhell + 1
       Next
    Next Led
 End If
End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Nach oben