Ho un problema con un modulo micro card sd. Praticamente Avevo intenzione di riprodurre un file della scheda sd attraverso un comando che invio da un'altro arduino. Ho scritto il programma prendendo spunto da esempi e alla fine l'ho provato. Il programma è questo:
#include <SD.h> // includi la libreria SD per la gestione della scheda
#define SD_ChipSelectPin 10 // utilizza il pin 10 per collegare il CS della SD, puoi usare il pin che vuoi
#include <TMRpcm.h> // includi la libreria TMRpcm per la musica!
#include <SPI.h> // includi la libreria SPI per la comunicazione con la SD
int PIN=7;
TMRpcm tmrpcm; // crea l'oggetto tmrpcm
unsigned long time = 0;
void setup() {
pinMode(PIN,INPUT);
tmrpcm.speakerPin = 9; // pin utilizzabili 5,6,11 o 46 sulla Mega, 9 sulla Uno, Nano, etc
// per abilitare un'uscita complementare togliere il commento alla riga sotto:
// pinMode(10,OUTPUT); pin utilizzabili 9,10; Sulla Mega: 5-2,6-7,11-12,46-45
Serial.begin(115200); // inizializza la porta se
if (!SD.begin(SD_ChipSelectPin)) { // se la scheda non è rilevata printa "SD fail"
Serial.println("SD fail");
return;
}
else {
Serial.println("SD ok"); // se la scheda viene rilevata stampa "SD ok"
}
}
void loop() {
digitalRead(PIN);
int PIN = digitalRead(PIN);
if (PIN == LOW) {
tmrpcm.disable();
}
else {
tmrpcm.play("test2.wav");
Serial.println("Riproduzione");
}
}
Il problema sta nel fatto che mi ripete in loop le funzioni scritte su else avendo il risultato di un suono bloccato e il monitor seriale pieno di "Riproduzione" come se non tenga conto se l'ngresso è alto o basso.
Sono riuscito a farlo funzionare solo mettendo un delay di molti secondi sotto Serial.println("Riproduzione"); ma riproduce la musica appena acceso l'arduino e basta poi.
Dall'altro arduino sto mandando con il comando digitalwtrite(PIN, HIGH);
Grazie, spero di essere stato chiaro....