Mit Tastern
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 | #include “vs1053_SdFat.h” #include “Adafruit_Debounce.h” // Bezeichnung der SD-Karte SdFat sd; // Bezeichnung des mp3-Shields vs1053 MP3player; // Variable für das Lesen des Verzeichnisses File Verzeichnis; File Datei; // die Taster int TASTER1 = A0; // zurück int TASTER2 = A1; // weiter int TASTER3 = A2; // weiter nach Pause int TASTER4 = A3; // Pause // “Prallverhinderer” für die Tasten starten Adafruit_Debounce Taste_zurueck(TASTER1, LOW); Adafruit_Debounce Taste_naester(TASTER2, LOW); Adafruit_Debounce Taste_weiter(TASTER3, LOW); Adafruit_Debounce Taste_Pause(TASTER4, LOW); // Tracknummer/Anzahl der Tracks int Track = 1; int TrackMax = 0; void setup() { Taste_zurueck.begin(); Taste_naester.begin(); Taste_weiter.begin(); Taste_Pause.begin(); // Seriellen Monitor starten Serial.begin(9600); // auf Seriellen Monitor warten while (!Serial); Serial.println(); // SD Karte starten sd.begin(SD_SEL, SPI_FULL_SPEED); // Anzahl der Tracks im Wurzelverzeichnis zählen // Char-Array für den Dateinamen char Dateiname[13]; if (!sd.chdir(“/”)) sd.errorHalt(“keine SD-Karte vorhanden”); Verzeichnis.open(“/”); Serial.println(“Dateiname Größe”); Serial.println(“——————————”); while (Datei.openNext(&Verzeichnis, O_READ)) { Datei.getName(Dateiname, sizeof(Dateiname)); // handelt es sich um eine Musikdatei (isFnMusic) if (isFnMusic(Dateiname) ) { Serial.print(Dateiname); // Dateigröße ermitteln, in MB umwandeln, Punkt durch Komma ersetzen float DateiGroesse = Datei.fileSize(); String Groesse = String(DateiGroesse / 1000000); Groesse.replace(“.”, “,”); Serial.println(“\t” + Groesse + ” MB”); TrackMax ++; } Datei.close(); } Serial.println(); Serial.println(“Anzahl der Tracks: ” + String(TrackMax)); Serial.println(“——————————”); // Player starten MP3player.begin(); // Höhen: erlaubte Werte: ‑8 bis 7 MP3player.setTrebleAmplitude(4); // Bässe: erlaubte Werte 0 bis 15 MP3player.setBassAmplitude(7); // Status des Players ermitteln if (MP3player.getState() == 1) Serial.println(“Player erfolgreich gestartet”); // Lautstärke setzen -> links, rechts -> 1, 1 sehr laut // je größer die Werte desto leiser MP3player.setVolume(40, 40); // 1. Track spielen Serial.println(“Spiele Track ” + String(Track)); MP3player.playTrack(Track); } void loop() { Taste_zurueck.update(); Taste_naester.update(); Taste_weiter.update(); Taste_Pause.update(); // vorherigen Track abspielen if (Taste_zurueck.justPressed()) { vorherigerTitel(); } // nächster Track if (Taste_naester.justPressed()) { naechsterTitel(); } // Pause if (Taste_weiter.justPressed()) { Pause(); } // weiter abspielen if (Taste_Pause.justPressed()) { Weiter(); } // wenn der aktuelle Titel beendet ist if (!MP3player.isPlaying()) { if (Track < TrackMax) Track ++; else Track = 1; Serial.println(“Spiele Track ” + String(Track)); MP3player.playTrack(Track); } } void naechsterTitel() { // kurzes Beep spielen MP3player.SendSingleMIDInote(); MP3player.SendSingleMIDInote(); // aktuellen Track stoppen MP3player.stopTrack(); // wenn der letzte Track gespielt wurde // -> Neustart mit 1 if (Track < TrackMax) Track ++; else Track = 1; Serial.println(“Spiele Track ” + String(Track)); MP3player.playTrack(Track); } void vorherigerTitel() { // kurzes “Beep” spielen MP3player.SendSingleMIDInote(); MP3player.SendSingleMIDInote(); // laufenden Track stoppen/aktuellen Track abspielen MP3player.stopTrack(); if (Track > 1) Track –; Serial.println(“Spiele Track ” + String(Track)); MP3player.playTrack(Track); } void Pause() { MP3player.SendSingleMIDInote(); MP3player.SendSingleMIDInote(); // Track pausieren Serial.println(“Pause Track ” + String(Track)); MP3player.pauseMusic(); } void Weiter() { MP3player.SendSingleMIDInote(); MP3player.SendSingleMIDInote(); // Wiedergabe fortsetzen Serial.println(“Weiter Track ” + String(Track)); MP3player.resumeMusic(); } |
mit Fernbedienung
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | #include “vs1053_SdFat.h” // benötigte Bibliothek einbinden #include “IRremote.hpp” // der Pin, an dem der Infrarot-Empfänger angeschlossen ist int EmpfaengerPin = 4; // Bezeichnung der SD-Karte SdFat sd; // Bezeichnung des mp3-Shields vs1053 MP3player; // Variable für das Lesen des Verzeichnisses File Verzeichnis; File Datei; // Tracknummer/Anzahl der Tracks int Track = 1; int TrackMax = 0; int LautstaekeLinks = 50; int LautstaerkeRechts = 50; bool zufaelligeWiedergabe = true; void setup() { // Infrarot-Empfänger starten IrReceiver.begin(EmpfaengerPin); // Seriellen Monitor starten Serial.begin(9600); // auf Seriellen Monitor warten while (!Serial); Serial.println(); // SD Karte starten sd.begin(SD_SEL, SPI_FULL_SPEED); // Anzahl der Tracks im Wurzelverzeichnis zählen // Char-Array für den Dateinamen char Dateiname[13]; if (!sd.chdir(“/”)) sd.errorHalt(“keine SD-Karte vorhanden”); Verzeichnis.open(“/”); Serial.println(“Dateiname Größe”); Serial.println(“——————————”); while (Datei.openNext(&Verzeichnis, O_READ)) { Datei.getName(Dateiname, sizeof(Dateiname)); // handelt es sich um eine Musikdatei (isFnMusic) if (isFnMusic(Dateiname) ) { Serial.print(Dateiname); // Dateigröße ermitteln, in MB umwandeln, Punkt durch Komma ersetzen float DateiGroesse = Datei.fileSize(); String Groesse = String(DateiGroesse / 1000000); Groesse.replace(“.”, “,”); Serial.println(“\t” + Groesse + ” MB”); TrackMax ++; } Datei.close(); } Serial.println(); Serial.println(“Anzahl der Tracks: ” + String(TrackMax)); Serial.println(“——————————”); // Player starten MP3player.begin(); // Höhen: erlaubte Werte: ‑8 bis 7 MP3player.setTrebleAmplitude(4); // Bässe: erlaubte Werte 0 bis 15 MP3player.setBassAmplitude(7); // Status des Players ermitteln if (MP3player.getState() == 1) Serial.println(“Player erfolgreich gestartet”); // Lautstärke setzen -> links, rechts -> 1, 1 sehr laut // je größer die Werte desto leiser MP3player.setVolume(LautstaekeLinks, LautstaerkeRechts); randomSeed(millis()); if (zufaelligeWiedergabe) Track = random(1, TrackMax); else Track = 1; // 1. Track spielen Serial.println(“Spiele Track ” + String(Track)); MP3player.playTrack(Track); } void loop() { if (IrReceiver.decode()) { // kurzes delay, damit nur ein Tastendruck gelesen wird delay(200); // resume -> nächsten Wert lesen IrReceiver.resume(); /* der Empfänger empfängt zwischendurch Signale, die nicht ausgewertet werden können es sollen dehalb nur die korrekt erkannten Tasten ausgewertet werden die Dezimalwerte der korrekten erkannten Tasten liegen zwischen > 0 und < 95 es wird abgefragt, ob das empfangene Kommando decodedIRData.command zwischen 0 und (&&) 95 liegt */ if (IrReceiver.decodedIRData.command > 0 && IrReceiver.decodedIRData.command < 95) { // IrReceiver.decodedIRData.command = Wert der gedrückten Taste // Werte abfragen und anzeigen if (IrReceiver.decodedIRData.command == 64) ZufallSchalten(); if (IrReceiver.decodedIRData.command == 66) Weiter(); if (IrReceiver.decodedIRData.command == 74) Pause(); if (IrReceiver.decodedIRData.command == 68) vorherigerTitel(); if (IrReceiver.decodedIRData.command == 67) naechsterTitel(); if (IrReceiver.decodedIRData.command == 70) Lauter(); if (IrReceiver.decodedIRData.command == 21) Leiser(); } } // wenn der aktuelle Titel beendet ist if (!MP3player.isPlaying()) { if (zufaelligeWiedergabe) { randomSeed(millis()); Track = random(1, TrackMax); } else { if (Track < TrackMax) Track ++; else Track = 1; } Serial.println(“Spiele Track ” + String(Track)); MP3player.playTrack(Track); } } void naechsterTitel() { // kurzes Beep spielen MP3player.SendSingleMIDInote(); MP3player.SendSingleMIDInote(); // aktuellen Track stoppen MP3player.stopTrack(); if (zufaelligeWiedergabe) { randomSeed(millis()); Track = random(1, TrackMax); } else { // wenn der letzte Track gespielt wurde // -> Neustart mit 1 if (Track < TrackMax) Track ++; else Track = 1; // Serial.println(“Spiele Track ” + String(Track)); } Serial.println(“Spiele Track ” + String(Track)); MP3player.playTrack(Track); } void vorherigerTitel() { // kurzes “Beep” spielen MP3player.SendSingleMIDInote(); MP3player.SendSingleMIDInote(); MP3player.stopTrack(); if (zufaelligeWiedergabe) { randomSeed(millis()); Track = random(1, TrackMax); } else { // laufenden Track stoppen/aktuellen Track abspielen if (Track > 1) Track –; else Track = TrackMax; } Serial.println(“Spiele Track ” + String(Track)); MP3player.playTrack(Track); } void Pause() { MP3player.SendSingleMIDInote(); MP3player.SendSingleMIDInote(); // Track pausieren Serial.println(“Pause Track ” + String(Track)); MP3player.pauseMusic(); } void Weiter() { MP3player.SendSingleMIDInote(); MP3player.SendSingleMIDInote(); // Wiedergabe fortsetzen Serial.println(“Weiter Track ” + String(Track)); MP3player.resumeMusic(); } void Lauter() { Serial.println(String(LautstaekeLinks) + “,” + String(LautstaerkeRechts)); if (LautstaekeLinks >= 0) LautstaekeLinks -= 5; if (LautstaerkeRechts >=0 ) LautstaerkeRechts -= 5; MP3player.setVolume(LautstaekeLinks, LautstaerkeRechts); } void Leiser() { Serial.println(String(LautstaekeLinks) + “,” + String(LautstaerkeRechts)); if (LautstaekeLinks < 100) LautstaekeLinks += 5; if (LautstaerkeRechts < 100) LautstaerkeRechts += 5; MP3player.setVolume(LautstaekeLinks, LautstaerkeRechts); } void ZufallSchalten() { zufaelligeWiedergabe = !zufaelligeWiedergabe; if (zufaelligeWiedergabe) Serial.println(“Zufall ein”); else Serial.println(“Zufall aus”); } |
Letzte Aktualisierung: