Martinshorn

Aus Modellbahn-Anlage Wiki
Zur Navigation springen Zur Suche springen


'Martinshorn - Tonerzeugung mit CTC. 'Blaulicht/Blitzlicht - Zwei LED-Ausgänge (blinken bzw. blitzen ' 'Eingabe: Loetbruecken/Dipschalter an B.3 für Doppelblitz ' Loetbruecken/Dipschalter an B.4 für Alternativ-Tonfolge 'Ausgabe: Piezo-Buzzer an B.0 = OC0A ' LED1 an B.1 LED2 an B.2

$regfile "attiny13.dat" $crystal = 1200000 $hwstack = 32 $swstack = 5 $framesize = 20


Config Portb.0 = Output 'Buzzer Config Portb.1 = Output 'LED1 Led1 Alias Portb.1 Config Portb.2 = Output 'LED2 Led2 Alias Portb.2

Config Portb.3 = Input 'Lötbrücke Doppelblitz Portb.3 = 1 'Pullup-Widerstand Doppelblitz Alias Pinb.3

Config Portb.4 = Input 'Lötbrücke Alternativ_Tonfolge Portb.4 = 1 'Pullup-Widerstand Ton_2 Alias Pinb.4


Config Timer0 = Timer , Compare A = Toggle , Prescale = 8 , Clear Timer = 1 ' CTC Mode

'Tonfolge 1: Const Ton1_1 = 170 'ca. 440 Hz Note A1 Const Ton1_2 = 128 'ca. 585 Hz Note D2

'Tonfolge 2: Const Ton2_1 = 161 'ca. 466 Hz Note Ais1 Const Ton2_2 = 121 'ca. 622 Hz Note Dis2

Dim Schritt As Word 'Variable für Ablaufsteuerung


Do

'Ab hier die gewünschte Zeitabfolge definieren: For Schritt = 1 To 1400

Select Case Schritt
 Case 1 : If Ton_2 = 0 Then               'jeweiligen ersten Ton spielen
       Pwm0a = Ton2_1
      Else
       Pwm0a = Ton1_1
      End If
 Case 8 : Set Led1                    'LED1
 Case 10 : Reset Led1
 Case 140 : If Doppelblitz = 1 Then Set Led1
 Case 142 : If Doppelblitz = 1 Then Reset Led1
 Case 300 : Set Led2                   'LED2
 Case 302 : Reset Led2
 Case 700 : If Ton_2 = 0 Then              'jeweiligen zweiten Ton spielen
        Pwm0a = Ton2_2
       Else
        Pwm0a = Ton1_2
       End If
End Select
Waitms 1

Next Schritt

Loop End </nowiki>