' 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