' BASCOM AVR-Programm für Microcontroller Atmel ATtiny24
' Lichtset für Modell Helikopter
' schaltbar über einen freien RC-Kanal
' Funktionen:
' RC-Kanal schaltet bei Schalterstellung 0
'  - alle LED's aus
' RC-Kanal schaltet bei Schalterstellung 1
'  - Positionslichter rot (links) und grün (rechts)
'  - Blitzlicht rot (Einfachblitz) am Heckausleger
'  - Blitzlicht rot (Doppelblitz) über den Turbinen
' RC-Kanal schaltet bei Schalterstellung 2
'  - 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 (Schalterstellung 1) kann hier angepasst werden
W2 = 170 ' Wert 2 (Schalterstellung 2) 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 = 1
  ' Positionsbeleuchtung ein, sonnst aus
  If Rc > W1 Then Set Led_rot Else Reset Led_rot
  If Rc > W1 Then Set Led_gruen Else Reset Led_gruen
  ' wenn Schalterstellung = 1
  ' Programmablauf für Blitzleuchten und Landerscheinwerfer
  If Rc > W1 Then
    ' wenn Schalterstellung = 2
    ' Landescheinwerfer ein, sonnst aus
    If Rc > W2 Then Set Lande Else Reset Lande
    ' beide Blitzleuchten ein
    Set Bl_single
    Set Bl_double
    ' 60 ms warten
    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 = 2
    ' Landescheinwerfer ein, sonnst aus
    If Rc > W2 Then Set Lande Else Reset Lande
    ' 600 ms warten
    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