Ciao a tutti.
Come da titolo volevo riprodurre un lettore musicale (anche se in realtà mi servirà solo per riprodurre del parlato, quindi la qualità può essere non delle migliori).
Sono praticamente all'inizio con la mia esperienza Arduino (come detto nel topic di presentazione). Ho letto qualche guida e qualche post in giro.
Ma ho comunque alcuni dubbi.
Allora il circuito è semplice
Arduino UNO - (la versione cinese, ma tutto è già ben configurato e funzionante)
4 pulsanti
P- play
S- pausa
UP- brano successivo/volume up (tenuto a lungo)
DW- inizia di nuovo brano corrente/brano precedente(doppio click)/volume down(tenuto a lungo)
collegati alle porte 7-6-5-4, con le relative resistenze da 10k
il preamplificatore collegato a GND e 9
Il lettore SD con la porta 10, quella in foto:
il problema in se è il programma.
Avevo pensato ad una cosa simile ma ho qualche intoppo:
#include <pcmConfig.h>
#include <pcmRF.h>
#include <TMRpcm.h>
#include <SD.h>
#define SD_ChipSelectPin 10
#include <SPI.h>// setto il numero dei pin
const int buttonP = 7;
const int buttonS = 6;
const int buttonUP = 5;
const int buttonDW = 4;
const int audioOUT = 9;// setto il valore iniziale dei pulsanti - tutti aperti
int buttonstateP = 0;
int buttonstateS = 0;
int buttonstateUP = 0;
int buttonstateDW = 0;
int vol = 6; //valore defoult del volume
int pezzo = 1; // valore iniziale del brano
char brano = "audio %pezzo .wav"; // DOMANDA 1 = Come inserisco i varii brani ?void setup() {
tmrpcm.speakerPin = 9;// inizializzo input e output
pinMode(buttonP, INPUT);
pinMode(buttonP, INPUT);
pinMode(buttonP, INPUT);
pinMode(buttonP, INPUT);Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}tmrpcm.setVolume(vol);
}void loop() {
if (digitalRead(buttonP) == HIGH) {
tmrpcm.play(brano);
}
else continue;
if (digitalRead(buttonS) == HIGH) {
tmrpcm.pause();
}
else continue;
if (digitalRead(buttonUP) == HIGH) {
pezzo = pezzo + 1;
tmrpcm.play(brano);
} // DOMANDA 2= come gestisco il tempo con mills()?
else continue;
if (digitalRead(buttonDOWN) == HIGH) {
if (mills() == 1) {
tmrpcm.play(brano);
}
else
{ pezzo = pezzo - 1;
tmrpcm.play(brano); // DOMANDA 3= corretto l'utilizzo di else?
}
else continue;
}
Manca la parte per gestire il volume, potrei comunque farla con un trimmer direttamente nel preapli.
i brani verrebbero inseriti nella SD con i nomi brano#pezzo.wav
Ho inserito alcune domande cruciali nel programma.
Grazie mille a tutti per l'aiuto