Tuneduino este un music player ce utilizează fișiere de tipul `.wav`, proiectat pentru a oferi o experiență simplă de ascultare a muzicii. Scopul acestuia este de a oferi o soluție de redare a fișierelor audio în format WAV, utilizând un Arduino. Ideea a pornit de la dorința de a crea un sistem de redare a muzicii care să fie ușor de folosit, economic și personalizabil.
Tuneduino este util atât pentru utilizatori obișnuiți, cât și pentru pasionații de electronice și programare, întrucât reprezintă un dispozitiv simplu și personalizabil. Fiind open-source, poate fi personalizat dupa bunul plac, cu adăugare de noi funcționalități.
void loop() { unsigned long currentMillis = millis(); unsigned long duration; if (in_menu) { buttonState = digitalRead(mainbutton);
if (buttonState != lastButtonState) { // button state changed updateState(); }
if (startPressed == -1 && endPressed == -1) { if (longPress) { in_menu = false; playing = true; myDFPlayer.play(song_number); // Play song if (myDFPlayer.available()) { printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states. } } else { if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; song_number++; if (song_number > 9) { song_number = 1; } }
sevseg.setNumber(song_number); } startPressed = 0; endPressed = 0; }
lastButtonState = buttonState; } else if (playing) { sevseg.blank(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; safety_check = true; }
if (digitalRead(mainbutton) == LOW && safety_check) { playing = false; myDFPlayer.stop(); // Stop playing safety_check = false; } } else if (!playing && !in_menu) { sevseg.setChars("P");
if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; safety_check = true; }
if (digitalRead(mainbutton) == LOW && safety_check) { playing = true; // myDFPlayer.play(song_number); // Resume playing myDFPlayer.next(); if (myDFPlayer.available()) { printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states. } sevseg.blank(); safety_check = false; } }
sevseg.refreshDisplay(); }
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.