' BASCOM AVR-Programm für Microcontroller Atmel ATtiny24
' Lichtset für Modell Helikopter
' schaltbar über einen freien RC-Kanal
' RC-Kanal schaltet bei Schalter Mittelstellung
' - Positionslichter rot (links) und grün (rechts)
' - Blitzlicht rot (Einfachblitz) am Heckausleger
' - Blitzlicht rot (Doppelblitz) über den Turbinen
' RC-Kanal schaltet bei Schalter oben
' - Landescheinwerfer weiss
 
$regfile = "ATtiny24.dat" ' Chip = ATtiny24
$crystal = 8000000         ' Takt = 8 MHz intern
' Variablen dimensionieren
Dim A As Byte
Dim Rc As Word
Dim W1 As Word
Dim W2 As Word
' Alias festlegen
Led_gruen Alias Porta.0
Led_rot Alias Porta.1
Bl_single Alias Porta.2
Bl_double Alias Porta.3
Lande Alias Porta.4
' Konfiguration der Pins
Config Pina.7 = Input    ' RC-Kanal (Eingang)
Config Pina.0 = Output ' Positionsleuchte rot (Ausgang)
Config Pina.1 = Output ' Positionsleuchte grün (Ausgang)
Config Pina.2 = Output ' Blitzleuchte Heck (Ausgang)
Config Pina.3 = Output ' Blitzleuchte oben (Ausgang)
Config Pina.4 = Output ' Landescheinwerfer (Ausgang)
 
' Hauptprogramm
' alle LED's aus und 1 sek. warten
' (verhindert vorzeitiges einschalten)
Rc = 0
W1 = 130 ' Wert 1 (Schalter etwa Mittelstellung) kann hier angepasst werden
W2 = 170 ' Wert 2 (Schalter etwa oben) kann hier angepasst werden
Reset Led_gruen
Reset Led_rot
Reset Bl_single
Reset Bl_double
Reset Lande
Wait 1
' hier beginnt die Endlosschleife
Do
   ' Impuls vom RC-Kanal einlesen und messen
   Rc = 0
   Pulsein Rc , Pina , 7 , 1
   ' wenn Schalterstellung unten
   ' alle LED's aus
   If Rc < W1 Then
      Reset Led_gruen
      Reset Led_rot
      Reset Bl_single
      Reset Bl_double
      Reset Lande
   Else
      ' wenn Schalterstellung Mitte
      ' Positionslampen ein
      Set Led_gruen
      Set Led_rot
      ' Impuls vom RC-Kanal einlesen und messen
      Pulsein Rc , Pina , 7 , 1
      ' wenn Schalterstellung oben
      ' Landescheinwerfer ein
      If Rc > W2 Then Set Lande
      ' wenn Schalterstellung Mitte
      ' Landescheinwerfer aus
      If Rc < W2 Then Reset Lande
      ' Pause
      Waitms 600
      ' beide Blitzleuchten ein
      Set Bl_single
      Set Bl_double
      Waitms 60
      ' beide Blitzleuchten aus
      Reset Bl_single
      Reset Bl_double
      ' Impuls vom RC-Kanal einlesen und messen
      Pulsein Rc , Pina , 7 , 1
      ' wenn Schalterstellung oben
      ' Landescheinwerfer ein
      If Rc > W2 Then Set Lande
      ' wenn Schalterstellung Mitte
      ' Landescheinwerfer aus
      If Rc < W2 Then Reset Lande
      ' Pause
      Waitms 600
      ' Doppelblitz nur obere Blitzleuchte (2x 60ms ein)
      For A = 1 To 2
         Set Bl_double
         Waitms 60
         Reset Bl_double
         Waitms 60
      Next A
   End If
   ' zurück zum Anfang der Schleife
Loop
 
End