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);
}