Aiutino valore non risolto in I2C

Ciao scusate la domanda, forse sto andando in tilt... nei 2 sketch che ho creato tutto funziona tranne che non mi da un valore giusto la temperatura. Qualcuno sarebbe cosi cortese da dirmi dove sbaglio? grazie mille..

Sicuro è un errore stupido ma credo sto andando in tilt hahahahah :o

Arduino_uno__Slave__v.1.0.ino (980 Bytes)

Arduino_Yun__Master__v.1.0.0.ino (422 Bytes)

Magari un minimo di spiegazione di cosa fanno i due programmi e di cosa in particolare non funziona (passi la temperatura tra i due Arduino ) ?

Si scusa. Con arduino uno (slave) leggerei lo stato del pulsante e la temperatura, con arduino Yun (master) interrogo lo slave e chiedo stato del pulsante e temperatura. in più dico al slave si accendere e spegnere il led. Per il collegamento breadboards non ho problemi, il problema è quando mi ritorna il valore della temperatura non lo leggo e mi inserisce punti di domanda.

Grazie mille

Tu spedisci con Wire.write("Temperatura");
ovvero spedisci la parola Temperatura, non il contenuto della variabile Temperatura :o
Comunque la Wire.write spedisce byte, se passi una frase, spedisce i singoli caratteri, se gli passi un valore non byte, esempio Temperature che è float, ne spedisce solo una "porzione".

Il codice lo puoi anche postare, visto che è corto, usando il tag code ovvero pulsante </>
Tuo codice Arduino Uno:

#include <Wire.h>

int Pulsante = 2; //Inizializza la variabile di nome Pulsante
int Led = 9;      //Inizializza la variabile di nome Led
const int Sensore = A0;  //Inizializza la variabile di nome Sensore
float Temperatura = A0;

void setup() {
  Wire.begin(10);
  Wire.onRequest(statoPulsante);  //interroga lo stato del pulsante
  Wire.onReceive(valoreSensore);  //ricevi valore dal sensore TMP36
  pinMode(Pulsante, INPUT);
  pinMode(Led, OUTPUT);
  }

void loop() {
  int Sensore = analogRead(A0);
  Temperatura = ((Sensore*0.00488)-0.5)/0.01;
  Wire.write("Temperatura");
}

void statoPulsante()
{ if(digitalRead(Pulsante) == HIGH)
  { Wire.write("Premuto");
  }else
  { Wire.write("Non premuto");
  }
} 

void valoreSensore()
{ String comando = "";
  while(Wire.available())
  { comando += char(Wire.read());
  }
  if(comando == "on")
  { digitalWrite(Led, HIGH);
  }else if(comando == "off")
  { digitalWrite(Led, LOW);
  }         
}

Tuo codice Yun:

#include <Wire.h>

void setup() 
{ Serial.begin(9600);
  Wire.begin();
}

void loop() 
{ Wire.requestFrom(10, 40);
  while(Wire.available())
  { char c =Wire.read();
    Serial.print(c);
  }
  Serial.println();

  Wire.beginTransmission(10);
  Wire.write("on");
  Wire.endTransmission();
  delay(1000);

  Wire.beginTransmission(10);
  Wire.write("off");
  Wire.endTransmission();
  delay(1000);
}