' 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