; ******************************* ; ***** Sample Header File ***** ; ******************************* ; Filename: DFPlayer ; Date: 17.04.2024 ; File Version: 01 ; Written by: Thomas Vetter ; Function: ; Last Revision: 17.04.2024 ; Target PICAXE: 08M2 ; ******************************* #picaxe 08m2 ; benutzte Picaxe setfreq m8 ; 8 MHz Taktfrequenz (9600 Baud) let DirsC = %00000011 ;PortC Bits 0 + 1 Ausgang, Bits 2 - 7 Eingang symbol Right_Button = PinC.3 ; Taster "Antwort richtig" symbol Wrong_Button = PinC.4 ; Taster "Antwort falsch" symbol Portbyte = b0 ; enthaelt den Zustand von PortC; symbol Savebyte = b1 ; enthaelt eine Arbeitskopie von PortC symbol Zaehler = b2 ; Zaehlvariable symbol Daten = b3 ; enthaelt die EEprom Daten symbol Anfang = b4 ;Anfang der EEprom Daten symbol Ende = b5 ; Ende der EEprom Daten symbol Senden = C.1 ; Ausgang zum RX-Eingang vom DFPlayer symbol Beschaeftigt = PinC.2 ; Busy vom DFPlayer (nicht verwendet) gosub init ;DFlayer Initialisieren ;----------------------------------------------------------------- do ; Hauptschleife let Portbyte = PinsC ; PortC einlesen let Savebyte = Portbyte ; Portbyte sichern let Savebyte = Savebyte AND 8 if Savebyte = 8 then ; Taster "Richtig" gedrückt ? gosub Richtig ; Ja, dann Sound abspielen endif ; Nein, dann weiter im Programm let Savebyte = Portbyte ; Portbyte sichern let Savebyte = Savebyte AND 16 if Savebyte = 16 then ; Taster "Falsch" gedrückt ? gosub Falsch ; Ja, dann Sound abspielen endif ; Nein, dann weiter im Programm loop ; Nochmal die Schleife ;----------------------------------------------------------------- Richtig: let Anfang = 20 ; 1. Titel auswaehlen (00,01) let Ende = 29 gosub Ausgabe let Anfang = 40 ; Play let Ende = 49 gosub Ausgabe pause 1000 ; 1 Sekunde Pause return ;----------------------------------------------------------------- Falsch: let Anfang = 30 ; 2. Titel auswaehlen (00,02) let Ende = 39 gosub Ausgabe let Anfang = 40 ; Play (und abspielen) let Ende = 49 gosub Ausgabe pause 1000 ; 1 Sekunde Pause return ;----------------------------------------------------------------- Init: let Anfang = 50 ; Reset let Ende = 59 gosub Ausgabe let Anfang = 0 ; Device = SD-Card (02) let Ende = 9 gosub Ausgabe let Anfang = 10 ; Volume auf 23 (17) let Ende = 19 gosub Ausgabe return ;----------------------------------------------------------------- Ausgabe: ; 9600,8,N,1 For Zaehler = Anfang to Ende ; Zaehler laden read Zaehler,Daten ; Datenbyte aus dem EEprom lesen serout Senden,T9600_8,(Daten) ; Datenbyte an den DFPlayer senden next Zaehler ; naechstes Datenbyte return ; Alle Bytes gesendet, zurueck ;----------------------------------------------------------------- eeprom 0,($7E,$FF,$06,$09,$00,$00,$02,$FF,$F0,$EF) ; Device = SD-Card (02) eeprom 10,($7E,$FF,$06,$06,$00,$00,$17,$FE,$DC,$EF) ; Volume auf 23 (17) eeprom 20,($7E,$FF,$06,$03,$00,$00,$02,$FE,$F7,$EF) ; 1. Titel abspielen (00,01) eeprom 30,($7E,$FF,$06,$03,$00,$00,$02,$FE,$F6,$EF) ; 2. Titel abspielen (00,01) eeprom 40,($7E,$FF,$06,$0D,$00,$00,$00,$FE,$EE,$EF) ; Play eeprom 50,($7E,$FF,$06,$0C,$00,$00,$00,$FE,$EF,$EF) ; RESET ;----------------------------------------------------------------- end