-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy patharduino.c
126 lines (111 loc) · 2.77 KB
/
arduino.c
1
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Author: Nicolas Brondin-Bernard, based on pcbreflux and DFRobot work.
#include <Arduino.h>
#include "DFRobotDFPlayerMini.h"
HardwareSerial mySoftwareSerial(1);
DFRobotDFPlayerMini myDFPlayer;
int playPausePin = 35;
int nextPin = 27;
int volumeDownPin = 26;
int volumeUpPin = 33;
int volume = 1;
int musicMode = 1; //1=night,2=day
int songNumber = 1;
int songsCount = 1;
bool isPlaying = true;
bool isNextPressed = false;
unsigned long nextPressedTime;
void printDetail(uint8_t type, int value);
void checkButtons();
void setup()
{
pinMode(playPausePin, INPUT);
pinMode(nextPin, INPUT);
pinMode(volumeDownPin, INPUT);
pinMode(volumeUpPin, INPUT);
digitalWrite(playPausePin, LOW);
digitalWrite(nextPin, LOW);
digitalWrite(volumeDownPin, LOW);
digitalWrite(volumeUpPin, LOW);
mySoftwareSerial.begin(9600, SERIAL_8N1, 16, 17); // speed, type, RX, TX
Serial.begin(115200);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
while(!myDFPlayer.begin(mySoftwareSerial)) {
Serial.println(F("Unable to begin"));
}
Serial.println(F("DFPlayer Mini online."));
songsCount = myDFPlayer.readFileCountsInFolder(2);
myDFPlayer.volume(volume);
myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
myDFPlayer.playFolder(1, 1);
myDFPlayer.start();
}
void loop()
{
if (myDFPlayer.available()) {
uint8_t type = myDFPlayer.readType();
if(type == DFPlayerPlayFinished){
if(musicMode == 1){
myDFPlayer.playFolder(1, 1);
} else {
nextSong();
}
}
}
checkButton();
}
void nextSong(){
songNumber = ((songNumber)%(songsCount-1))+1; //Needs to be checked, might jump songs
myDFPlayer.playFolder(2, songNumber);
}
void checkButton(){
int volumeDown = digitalRead(volumeDownPin);
int volumeUp = digitalRead(volumeUpPin);
int playPause = digitalRead(playPausePin);
int next = digitalRead(nextPin);
if(volumeDown == 1){
myDFPlayer.volumeDown(); //Dirty [TO-DO]
myDFPlayer.volumeDown();
myDFPlayer.volumeDown();
delay(500);
}
if(volumeUp == 1){
myDFPlayer.volumeUp(); //Dirty [TO-DO]
myDFPlayer.volumeUp();
myDFPlayer.volumeUp();
delay(500);
}
if(next){
if(!isNextPressed){
nextPressedTime = millis();
}
isNextPressed = true;
} else {
if(isNextPressed){
isNextPressed = false;
if(millis() - nextPressedTime > 1000){
musicMode = musicMode == 1 ? 2 : 1;
//Following good be refactored
if(musicMode == 1){
myDFPlayer.playFolder(1, 1);
} else {
myDFPlayer.playFolder(2, songNumber);
}
} else if(musicMode != 1) {
nextSong();
}
delay(500);
}
}
if(playPause){
isPlaying = !isPlaying;
if(isPlaying == true){
myDFPlayer.start();
} else {
myDFPlayer.pause();
}
delay(500);
}
}