Hi,
kann es sein das pulsin und TX nicht zusammen funktionieren?
Was ich vor habe ist mit pulsin eine RC-Kanal abzufragen um dann einen Befehl an das DFPlayer Mini Modul zu senden.
Was funktioniert ist den Befehl zum DFPlayer Mini Modul zu senden wenn eine Taste gedrückt wird:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
; picaxe08m2 ; automatische Compilerauswahl für mein Skript
; Dateiname: Test Musik OK.axe
; Funktion: DFPlayer Mini mit dem 08M2 einstellen und Musik zufällig abspielen (mit Pause-Taste)
; Datum: Start 11.02.2016, Stand 24.11.2019
;
; PICAXE 08M2 Alle Pin Funktionen (C.0 nur Ausgang, C.3 nur Eingang)
;
; +---v---+
; +V |1 8| 0V
; RxD/I C.5 |2 7| C.0 O/TxD/hserout/DAC
; Touch/ADC/O/I C.4 |3 6| C.1 I/O/ADC/Touch/hserin/SRI/hi2c/scl
; I C.3 |4 5| C.2 I/O/ADC/Touch/pwm/tune/SRQ/hi2c sda
; +-------+
;
; w0=b0+b1, w1=b2+b3, w2=b4+b5, w3=b6+b7, w4=b8+b9...
;
Symbol TX = C.1 ; Ausgang, Befehl und Sollwert zum DFPlayer senden
Symbol Signal = pinC.4 ; Eingang, auf ein Signal warten
Symbol BAUD_FREQ = M8 ; Frequenz setzen
Symbol BAUD = T9600_8 ; Geschwindigkeit setzen
Symbol cmd = b0 ; Befehl für den DFPlayer
Symbol arg = w1 ; Sollwert für den DFPlayer
Symbol arg.lb = b2 ; low Byte von arg
Symbol arg.hb = b3 ; high Byte von arg
Symbol ein = b4 ; Musik ein/aus
;
ein = 0 ; Pause ein/aus
high TX ; den Ausgang TX auf high setzen für Leerlauf
SetFreq BAUD_FREQ ; Frequenz einstellen
pause 1000 ; eine Pause für die Initialisierung
;
cmd = $09 : arg = $0002 : gosub senden ; mikroSD Karte auswählen
pause 4000 ; eine Pause um den Inhalt der SD-Karte einzulesen
;
cmd = $06 : arg = $0011 : gosub senden ; Lautstärke einstellen (0 - 1E)
pause 1000 ; eine Pause um die Lautstärke einzustellen
;
cmd = $18 ; Musik-Dateien zufällig abspielen
arg = $0000 : gosub senden ; Sollwert auf normal setzen
pause 1000 ; eine Pause um den Befehl zu verarbeiten
;
DFPlayer: ; Hauptschleife
if Signal = 1 then ; wenn es ein Signal gibt
if ein = 0 then ; und die Musik aus ist
ein = 1 ; Pause ein merken
cmd = $0D ; die Pause ausschalten
arg = $0000 : gosub senden ; Sollwert auf normal setzen
else ; sonst
ein = 0 ; Pause aus merken
cmd = $0E ; die Pause einschalten
arg = $0000 : gosub senden ; Sollwert auf normal setzen
endif ; Ende von: ein
do ; Warteschleife
pause 100 ; x Millisekunden Pause
loop until Signal = 0 ; die Warteschleife verlassen wenn das Signal aus ist
endif ; Ende von: Signal
pause 100 ; x Millisekunden Pause
goto DFPlayer ; zu DFPlayer: springen
;
senden: ; Befehl und Sollwert zum DFPlayer senden
SerOut TX, BAUD, ( $7E , $FF , $06 , cmd , $00 , arg.hb , arg.lb , $EF )
return ; zurück springen
;
Mit pulsin funktioniert es nicht:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
; picaxe08m2 ; automatische Compilerauswahl für mein Skript
; Dateiname: Test Musik nOK.axe
; Funktion: DFPlayer Mini mit dem 08M2 einstellen und Musik zufällig abspielen (mit Pause-Taste)
; Datum: Start 11.02.2016, Stand 24.11.2019
;
; PICAXE 08M2 Alle Pin Funktionen (C.0 nur Ausgang, C.3 nur Eingang)
;
; +---v---+
; +V |1 8| 0V
; RxD/I C.5 |2 7| C.0 O/TxD/hserout/DAC
; Touch/ADC/O/I C.4 |3 6| C.1 I/O/ADC/Touch/hserin/SRI/hi2c/scl
; I C.3 |4 5| C.2 I/O/ADC/Touch/pwm/tune/SRQ/hi2c sda
; +-------+
;
; w0=b0+b1, w1=b2+b3, w2=b4+b5, w3=b6+b7, w4=b8+b9...
;
Symbol TX = C.1 ; Ausgang, Befehl und Sollwert zum DFPlayer senden
; Symbol Signal = pinC.4 ; Eingang, auf ein Signal warten
Symbol BAUD_FREQ = M8 ; Frequenz setzen
Symbol BAUD = T9600_8 ; Geschwindigkeit setzen
Symbol cmd = b0 ; Befehl für den DFPlayer
Symbol arg = w1 ; Sollwert für den DFPlayer
Symbol arg.lb = b2 ; low Byte von arg
Symbol arg.hb = b3 ; high Byte von arg
Symbol ein = b4 ; Musik ein/aus
;
symbol RC_Kanal = C.3 ; Eingang für einen Kanal vom Empfänger
symbol RC_Signal = w3 ; das Signal vom Empfänger, links > Mitte + xy, Mitte = X, rechts < Mitte - xy (75-225)
symbol Mitte = b8 ; die Mittelstellung
symbol xy = b9 ; Schaltpunkt plus/Minus von der Mittelstellung
symbol dumm = b10 ; eine Variable für alles Mögliche
xy = 30 ; Schaltpunkt plus/Minus von der Mittelstellung
;
ein = 0 ; Pause ein/aus
high TX ; den Ausgang TX auf high setzen für Leerlauf
SetFreq BAUD_FREQ ; Frequenz einstellen
pause 1000 ; eine Pause für die Initialisierung
;
cmd = $09 : arg = $0002 : gosub senden ; mikroSD Karte auswählen
pause 4000 ; eine Pause um den Inhalt der SD-Karte einzulesen
;
cmd = $06 : arg = $0011 : gosub senden ; Lautstärke einstellen (0 - 1E)
pause 1000 ; eine Pause um die Lautstärke einzustellen
;
cmd = $18 ; Musik-Dateien zufällig abspielen
arg = $0000 : gosub senden ; Sollwert auf normal setzen
pause 1000 ; eine Pause um den Befehl zu verarbeiten
;
pulsin RC_Kanal, 1, Mitte ; die Mittelstellung übernehmen (ca. 150)
;
DFPlayer: ; Hauptschleife
pulsin RC_Kanal, 1, RC_Signal ; RC Signal übernehmen
dumm = Mitte + xy ; Mittelstellung + xy für Musik ein/aus
;
if RC_Signal > dumm then ; gibt es ein RC Signal für Musik ein/aus?
if ein = 0 then ; und die Musik aus ist
ein = 1 ; Pause ein merken
cmd = $0D ; die Pause ausschalten
arg = $0000 : gosub senden ; Sollwert auf normal setzen
else ; sonst
ein = 0 ; Pause aus merken
cmd = $0E ; die Pause einschalten
arg = $0000 : gosub senden ; Sollwert auf normal setzen
endif ; Ende von: ein
do ; Warteschleife
pulsin RC_Kanal, 1, RC_Signal ; RC Signal übernehmen
loop until RC_Signal < dumm ; Ende von: do (Warteschleife)
endif ; Ende von: RC_Signal
;
goto DFPlayer ; zu DFPlayer: springen
;
senden: ; Befehl und Sollwert zum DFPlayer senden
SerOut TX, BAUD, ( $7E , $FF , $06 , cmd , $00 , arg.hb , arg.lb , $EF )
return ; zurück springen
;
Grüßle, Naubaddi