SCHEDA AUDIO WTV020 SD --- script di controllo

sono riuscito a controllare (mi pare) bene la schedina audio WTV020 SD ...

la comunicazoine può avvenire tramite due linee una di CLOCK ed una di DATA secondo il seguente schema

questa è la funzione originale usata dalla SOMO che utiliza lo stesso integrato in una sua scheda ....

void sendData(int ThisSong)
{
int TheSong = ThisSong;
int ClockCounter=0;
int ClockCycle=15;//0x0f;

digitalWrite(pinClock,HIGH);     // Hold (idle) for 300msec to prepare data start
delay(300);
digitalWrite(pinClock,LOW);       //Hold for 2msec to signal data start
delay(2);  //2msec delay
  
      while(ClockCounter <= ClockCycle)
    { digitalWrite(pinClock,LOW);
      if (TheSong & 0x8000)
       {digitalWrite(pinData,HIGH);
       }
        else
       {digitalWrite(pinData,LOW);
    }
    TheSong = TheSong << 1;
    delayMicroseconds(200);      //Clock cycle period is 200 uSec - LOW
     digitalWrite(pinClock,HIGH);
    ClockCounter++;
    delayMicroseconds(200);      //Clock cycle period is 200 uSec - HIGH
   }

digitalWrite(pinData,LOW);
digitalWrite(pinClock,HIGH);    // Place clock high to signal end of data
}

la stessa SOMO in un altro script usa questo

void sendCommand(int addr)
{
  digitalWrite(clockPin, LOW);
  delay(2);
  for (int i=15; i>=0; i--)
  { 
    delayMicroseconds(50);
    if((addr>>i)&0x0001 >0)
      {
        digitalWrite(dataPin, HIGH);
        //Serial.print(1);
      }
    else
       {
         digitalWrite(dataPin, LOW);
        // Serial.print(0);
       }
    delayMicroseconds(50);
    digitalWrite(clockPin, HIGH);
    delayMicroseconds(50);
    
    if(i>0)
    digitalWrite(dataPin, LOW);
    else
    digitalWrite(dataPin, HIGH);
    delayMicroseconds(50);
    
    if(i>0)
    digitalWrite(clockPin, LOW);
    else
    digitalWrite(clockPin, HIGH);
  }
  
  delay(20); 
}

entrambi funzionano bene ...

io ho provato a rifarlo ... e ho fatto così:

void sendCommand(int addr)
{
 digitalWrite(pinClock,HIGH); delay(300); digitalWrite(pinClock,LOW); delay(2);  // guardare il datasheet del WTV020
 for (int i=15; i>=0; i--)
  {
    digitalWrite(pinClock, LOW);
    if((addr>>i)&0x0001 >0){digitalWrite(pinData, HIGH);} else {digitalWrite(pinData, LOW);}
    delayMicroseconds(100);
    digitalWrite(pinClock, HIGH); 
    delayMicroseconds(100);
    }
}

anche questo funziona (mi pare) bene ...

qual'è la Vs opinione al riguardo ... a me mi sembra che la mia versione sia più rispettosa di quanto indicato nel datasheet .... mi fate sapere cosa ne pensate??? ... grazie

non interessa a nessuno l'argomento???? :frowning: sigh! sigh!

Probabilmente nessuno ha questa scheda.
Però potresti ad esempio dirci questo chip dove si reperisce, quanto costa, che cosa può fare e cosa ci hai fatto tu.... se hai riprodotto dei suoni da un file oppure se li hai generati tu.

Grazie leo... se non ci fossi tu qui ..... XD

la scheda l'ho acquistata qui per meno di 5 euro, compreso di spedizione ...
http://www.ebay.com/itm/160806790230?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

sostanzialmente è una schedina audio che "suona" i file memorizzati nella scheda microSD ....
I file devono essere in formato .ad4 .. ottenuti convertendo il formato mp3 con software specifico della SOMO ...

qualcuno dice che può riprodurre anche il fomato waw .. ma io non ho provato. Mi sono limitato a convertire dei mp3 in ad4, con il softaware della SOMO ed a farli riprodurre dalla schedina....

a me pare che fuznioni bene per quello che intendo fare io (accompaganre con messaggi audio il telecomndo DTMF che ho postato altrove)....

chiedevo informazioni riguardo al modo di gestire il prorocollo di comunicazioune a due vie con il segnale di clock e di data ..
non capisco bene quelli originali della somo (i primi due) perchè non mi pare che rispettino i tempi derivati dal datasheet

mentre mipare (se non sbaglio) che il mio sia più corrispondente ai tempi del datascheet

cosa ne dici?

grazie per l'interessamnento comunque..