È giusto questo sketch?

#include<Wtv020sd16p.h>

#include <Wire.h>

 

String voice;

int resetPin=2;

int clockPin=3;

int dataPin=4;

int busyPin=5;

 

int val_Adc = 0;

float temp = 0;

const int Pin_TMP36 = A1;

 

Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);

 

void setup(){ 

Serial.begin(9600);

Wire.begin();

Wire.beginTransmission(0x68);

Wire.write((byte)0x00);

Wire.write((byte)0x00); //1° byte SECONDI da 0x00 a 0x59

Wire.write((byte)0x10); //2° byte MINUTI da 0x00 a 0x59

Wire.write((byte)0x80 | 0x10); //3° byte ORE da 0x00 a 0x24

Wire.write((byte)0x01); //4° byte GIORNO della settimana da 0x01 a 0x07

Wire.write((byte)0x21); //5° byte GIORNO del mese da 0x00 a 0x31

Wire.write((byte)0x03); //6° byte MESE da 0x00 a 0x12

Wire.write((byte)0x12); //7° byte ANNO 0x00 a 0x99

Wire.endTransmission();

wtv020sd16p.reset();

delay(1000);

wtv020sd16p.setVolume(7);

}

 

void loop(){

 

int val_Adc = analogRead(Pin_TMP36);

float voltage = (val_Adc /1024.0) * 5.0;

float temp = (voltage - .5) * 100;

delay(1000);

 

Wire.beginTransmission(0x68);

Wire.write((byte)0x00);

Wire.endTransmission();

Wire.requestFrom(0x68, 7);

byte secondi = Wire.read();

byte minuti = Wire.read();

byte ora = Wire.read();

byte giorno_sett = Wire.read();

byte giorno_mese = Wire.read();

byte mese = Wire.read();

byte anno = Wire.read();

delay(1000);

 

while (Serial.available()){

char c=Serial.read(); 

if (c=='#'){break;}

voice += c;

}

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



 

else if(voice=="*ora"||voice=="*che ore sono"){wtv020sd16p.asyncPlayVoice(ora);

wtv020sd16p.asyncPlayVoice(1); // dice "e"

wtv020sd16p.asyncPlayVoice(minuti);}

else if(voice=="*quanti gradi ci sono"||voice=="*quanto caldo fa"){

wtv020sd16p.asyncPlayVoice(temp);

wtv020sd16p.asyncPlayVoice(2);} // dice "gradi centigradi"

}

Il codice sull'ide non mi da errori, chiedo se può avere errori nella parte dello svolgimento, quando deve funzionare. Inoltre sono giusti i delay sul loop? Può funzionare? :sweat_smile:

Non siamo noi che Ti controlliamo un sketch perché non hai comprato il neccessario modulo. Ciao Uwe

A parte ne ciao … buongiorno … grazie, nemmeno spendere due righe a spiegare cosa deve fare il programma, alcuni di voi prendono davvero il forum per un ufficio di controllo qualità gratuito … bha :o

Bobo17:

#include<Wtv020sd16p.h>

#include <Wire.h>

String voice;

int resetPin=2;

int clockPin=3;

int dataPin=4;

int busyPin=5;

int val_Adc = 0;

float temp = 0;

const int Pin_TMP36 = A1;

Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);

void setup(){

Serial.begin(9600);

Wire.begin();

Wire.beginTransmission(0x68);

Wire.write((byte)0x00);

Wire.write((byte)0x00); //1° byte SECONDI da 0x00 a 0x59

Wire.write((byte)0x10); //2° byte MINUTI da 0x00 a 0x59

Wire.write((byte)0x80 | 0x10); //3° byte ORE da 0x00 a 0x24

Wire.write((byte)0x01); //4° byte GIORNO della settimana da 0x01 a 0x07

Wire.write((byte)0x21); //5° byte GIORNO del mese da 0x00 a 0x31

Wire.write((byte)0x03); //6° byte MESE da 0x00 a 0x12

Wire.write((byte)0x12); //7° byte ANNO 0x00 a 0x99

Wire.endTransmission();

wtv020sd16p.reset();

delay(1000);

wtv020sd16p.setVolume(7);

}

void loop(){

int val_Adc = analogRead(Pin_TMP36);

float voltage = (val_Adc /1024.0) * 5.0;

float temp = (voltage - .5) * 100;

delay(1000);

Wire.beginTransmission(0x68);

Wire.write((byte)0x00);

Wire.endTransmission();

Wire.requestFrom(0x68, 7);

byte secondi = Wire.read();

byte minuti = Wire.read();

byte ora = Wire.read();

byte giorno_sett = Wire.read();

byte giorno_mese = Wire.read();

byte mese = Wire.read();

byte anno = Wire.read();

delay(1000);

while (Serial.available()){

char c=Serial.read();

if (c==’#’){break;}

voice += c;

}

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

else if(voice=="*ora"||voice=="*che ore sono"){wtv020sd16p.asyncPlayVoice(ora);

wtv020sd16p.asyncPlayVoice(1); // dice “e”

wtv020sd16p.asyncPlayVoice(minuti);}

else if(voice=="*quanti gradi ci sono"||voice=="*quanto caldo fa"){

wtv020sd16p.asyncPlayVoice(temp);

wtv020sd16p.asyncPlayVoice(2);} // dice “gradi centigradi”

}

è sbagliatissimo perché ti sei messo a scrivere codice senza l hardware >:(