Lo sketch non riconosce una funzione

Ciao, stavo facendo un programma per un modulo mp3 (wtv020) ma lo sketch quando verifico se è giusto mi dice che non riconosce la scritta setVolume nel void begin, ma su internet ho visto più siti che la usano e si colora di arancione mentre a me rimane grigia. Ho scaricato la libreria di wtv020 quindi non capisco perché non funzioni, cosa devo fare?

Non lo capiamo neanche noi.
Dacci sketch e link a libreria, quale Arduino e sistema operativo e versione IDE Arduino.
Ciao Uwe

 #include<Wtv020sd16p.h> #include<SoftwareSerial.h>
 int rxPin=3;
 int txPin=2;
 SoftwareSerial bluethooth(rxPin, txPin); 
String device; 
int resetPin=2; 
int clockPin=3; 
int dataPin=4;
int busyPin=5; 
Wtv020sd16p Wtv020sd16p(resetPin,clockPin,dataPin,busyPin);
 void setup(){ 
bluethooth.begin(9600);
 Serial.begin(9600);
 Wtv020sd16p.reset(); 
delay(1000); 
Wtv020sd16p.setVolume(7); }
 void loop(){ 
while (bluethooth.available()){ device+=char(bluethooth.read()); } if(!bluethooth.available()){ 
if(device!=""){ 
} if(device==""){
Wtv020sd16p.asyncPlayVoice();} 
else if(device==""){
Wtv020sd16p.asyncPlayVoice();} }

La versione dell ide è 1.6.7 e arduino è r3, su windows 8

Se ci sono correzioni da fare ditemelo e comunque sulle parole recepite col Bluetooth non ho scritto niente perché devo ancora decidere, comunque funziona che con un'app fatta con mitapp inventor mando dal cellulare dei testi ad arduino che mi risponde. Aiutatemi a capire cosa non va con setVolume, grazie

Da dove hai scaricato la libreria ? Sicuro di averla installata correttamente ?
Quella che trovo QUI ad esempio NON ha il comando setVolume(). La libreria per quel modulino NON è una libreria standard, trovi di tutto e di più.

consiglio, dentro il CTRL+T per avere l’indentazione migliore. Infatti al programma mancano delle graffe di chiusura o sono chiuse male.
Inoltre … scusa ma … sei un novizio di programmazione ? Perchè il programma nella loop() non ha senso. Ti posto il tuo programma indentato meglio e con le graffe corrette:

#include <Wtv020sd16p.h> 
#include <SoftwareSerial.h>

int rxPin = 3;
int txPin = 2;
SoftwareSerial bluethooth(rxPin, txPin);
String device;
int resetPin = 2;
int clockPin = 3;
int dataPin = 4;
int busyPin = 5;
Wtv020sd16p Wtv020sd16p(resetPin, clockPin, dataPin, busyPin);

void setup() {
  bluethooth.begin(9600);
  Serial.begin(9600);
  Wtv020sd16p.reset();
  delay(1000);
  Wtv020sd16p.setVolume(7);
}

void loop() {
  while (bluethooth.available()) {
    device += char(bluethooth.read());
  }
  if (!bluethooth.available()) {
    if (device != "") 
    {} 
    if (device == "") 
    { Wtv020sd16p.asyncPlayVoice();
    }
    else if (device == "") 
    { Wtv020sd16p.asyncPlayVoice();
    }
  }
}

Nella loop un if che non fa nulla, poi due if con stesso test e che fan stessa cosa … ma nell’else ?!?

La libreria l'ho scaricata da questo sito, ho scritto su google wtv020 library e il primo sito che compare è quello da cui l'ho scaricata. Comunque può essere che ci siano errori di parentesi perché facendo copia e incolla dello sketch mi era venuto non riga sotto riga ma tutto "attaccato" e quindi l'ho dovuto spezzare io ma era tardi ieri sera quindi scusate se ci sono errori. Potete correggerlo facendo in modo che con il bluetooth hc06 riceva il comando dal cellulare e che arduino risponda con un file nell sd del wtv?

Bobo17:
Potete correggerlo facendo in modo che con il bluetooth hc06 riceva il comando dal cellulare e che arduino risponda con un file nell sd del wtv?

Emmm ... purtroppo qui NON funziona così ...
... a correggerlo ci devi pensare tu ... dato che qui nessuno scrive software per conto terzi o realizza schemi su ordinazione, ma si aiuta chi viene qui a correggere/ottimizzare il software che lui scrive o gli schemi che lui realizza.

Quindi, ti saranno segnalati i problemi, ti verranno date le indicazioni e poi ... tu sistemerai il codice :slight_smile:

Guglielmo

Si va bene non voglio che me lo scriviate voi, odio le cose già fatte, ditemi solo come correggere se ci sono errori

Mica è detto che google risponde sempre con la stessa lista !!
A me per primo appare questo: Arduino library for WTV020-SD-16P audio module - Audio - Arduino Forum
Li quella libreria NON ha il comando setVolume()
Basta guardare il file .h della lib, le varie funzioni pubbliche della classe:

class Wtv020sd16p
{ public:
  Wtv020sd16p(int resetPin,int clockPin,int dataPin,int busyPin);
  void reset();
  void playVoice(int voiceNumber);
  void asyncPlayVoice(int voiceNumber);
  void stopVoice();
  void pauseVoice();
  void mute();
  void unmute();

E quindi in questa libreria il volume è già impostato?

[code
]#include<Wtv020sd16p.h> 
String device; 
int resetPin=2; 
int clockPin=3; 
int dataPin=4; 
int busyPin=5; 
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin); 
void setup(){  
Serial.begin(9600); 
wtv020sd16p.reset(); 
delay(1000); 
wtv020sd16p.setVolume(7); } 
void loop(){ 
while (Serial.available()){ 
char c=Serial.read();  
if (c=='#'){break;}
voice += c;
} 
if(voice=="*"){
wtv020sd16p.asyncPlayVoice();} 
else if(voice=="*"){wtv020sd16p.asyncPlayVoice();} 
}

L’ho corretto cosi, può andare?

perchè non metti il link alla libreria che usi, cosi' ti rispondiamo pure

Prima di tutto aggiorna la libreria, con quella che trovi a questo Link

poi scegli altri pin, perche' non puoi usare gli stessi ( 2 e 3 ) sia per il modulo che per il Bluetooth

int rxPin = 3;
int txPin = 2;
SoftwareSerial bluethooth(rxPin, txPin);
String device;
int resetPin = 2;
int clockPin = 3;

e alla fine, come diceva @nid .......

Nella loop un if che non fa nulla, poi due if con stesso test e che fan stessa cosa ... ma nell'else ?!?

Nell'ultimo codice che ho messo ho tolto alcune cose sul bluetooth, va bene lo stesso? Ho preso spunto da http://www.instructables.com/id/Voice-Activated-Arduino-Bluetooth-Android/step5/Programming-The-Arduino/ , cambiando string device con string voice che mi ero dimenticato

se intendi questo

if(voice=="*"){
wtv020sd16p.asyncPlayVoice();} 
else if(voice=="*"){wtv020sd16p.asyncPlayVoice();} 
}

sarebeb meglio se lo correggessi.
Ad esempio in questo modo

if(voice=="*primo"){
wtv020sd16p.asyncPlayVoice(1);} 
etc etc

Ciao sono ancora io :stuck_out_tongue: , scrivo in questo post per non aprirne un altro anche se l'argomento è un po diverso dal titolo. Volevo sapere se si può fare capire ad arduino mediante la voce e ovviamemte via Bluetooth dei numeri e dei segni di calcolo, per fare una specie di calcolatrice vocale. Per esempio dicendo "sei per due" fare in modo che converta il "sei" in 6 eccetera

No, solo usando delle shield molto costose che poi hanno sopra una MCU o processore molto più potente di quello di Arduino.