Hallo,
ich plane mal wieder ein kleines Projekt mit dem Attiny 13.
Kann man auf einem normalen pin eine Tonfolge ausgeben ?
Und zwar für meine Modellbahn, habe ich mit Hilfe des Forums
ein kleines Programm für eine Andreaskreuz LED gemacht.
Auf einem kleinem SMD Board habe ich die Ausgänge PB0-PB4
auf Lötflächen geführt. Jeder Ausgang hat in Reihe einen 470R
SMD Widerstand.
Programm des Andreaskreuz seht Ihr unten.
Jetzt würde ich gerne auf einem Pin ein Sound ausgeben.
Und zwar einen Bing Ton der für ca. 10sec. angeht, sobald
das Board Spannung bekommt und die LEd blinken.
Jetzt meine Frage kennt sich jemand damit aus ?
Sound Befehl ?????
Gruß Thomas
Alles anzeigen
ich plane mal wieder ein kleines Projekt mit dem Attiny 13.
Kann man auf einem normalen pin eine Tonfolge ausgeben ?
Und zwar für meine Modellbahn, habe ich mit Hilfe des Forums
ein kleines Programm für eine Andreaskreuz LED gemacht.
Auf einem kleinem SMD Board habe ich die Ausgänge PB0-PB4
auf Lötflächen geführt. Jeder Ausgang hat in Reihe einen 470R
SMD Widerstand.
Programm des Andreaskreuz seht Ihr unten.
Jetzt würde ich gerne auf einem Pin ein Sound ausgeben.
Und zwar einen Bing Ton der für ca. 10sec. angeht, sobald
das Board Spannung bekommt und die LEd blinken.
Jetzt meine Frage kennt sich jemand damit aus ?
Sound Befehl ?????
Gruß Thomas
Quellcode
- $regfile = "attiny13.dat"
- $crystal = 9600000
- $prog &HFF , &H6A , &HFF , &H00 ' generated. Take care that the chip supports all fuse bytes.
- $hwstack = 32
- $swstack = 6
- $framesize = 6
- Config Portb.3 = Input
- Config Portb.0 = Output
- Config Portb.1 = Output
- Config Portb.2 = Output
- Config Portb.4 = Output
- Led1_pin Alias Portb.2
- Led2_pin Alias Portb.1
- Dim Analogwandler As Word 'Variable zur Aufnahme des Wertes vom Analogwandler 'Schleifenanfang
- Config Adc = Single , Prescaler = Auto , Reference = Avcc
- Dim Led1 As Byte
- Dim Led2 As Byte
- 'Auflösung 0 - 49
- Dim Timerzaehler As Byte 'Maximalwerte wie LED1
- Config Timer0 = Timer , Prescale = 1 'Timer konfigurieren
- On Timer0 Timerroutine 'Timerinterrupt Subroutine zuweisen
- Enable Timer0 'Timer aktivieren
- Start Timer0 'Timer starten
- Timer0 = 40 'Timer vorladen
- Enable Interrupts 'Interrupt aktivieren
- Portb = 0
- '*** Hauptschleife *************************************************************
- Do
- Analogwandler = Getadc(3)
- For Led1 = 180 To 0 Step -1 'abdimmen
- Waitus Analogwandler
- Next Led1
- For Led1 = 0 To 180 Step 1 'aufdimmen
- Waitus Analogwandler
- Next Led1
- For Led2 = 180 To 0 Step -1 'abdimmen
- Waitus Analogwandler
- Next Led2
- For Led2 = 0 To 180 Step 1 'aufdimmen
- Waitus Analogwandler
- Next Led2
- Loop
- 'Ende Hauptschleife
- End
- '*** Subs **********************************************************************
- Timerroutine: 'Beginn Subroutine
- Timer0 = 100
- Incr Timerzaehler
- If Timerzaehler = 50 Then Timerzaehler = 0 'Timerzaehler auf LED-Auflösung begrenzen
- If Timerzaehler < Led1 Then Led1_pin = 0 Else Led1_pin = 1 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
- If Timerzaehler < Led2 Then Led2_pin = 0 Else Led2_pin = 1 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
- Return