EEEHHHH vai funziona tutto...
Grazie a tutti ma un grazie particolare a Cyberhs...
Ho riscritto gli sketch e li ho modificati per il mio uso...
Codice per Arduino A in trasmissione
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
byte Decimali = 1; // numero decimali
unsigned long Timer = millis(); // timer partito
const unsigned long TimeOut = 5000;// tempo di invio dati in ms (4 min = 4*60*1000)
int Temp1=0 ; //dichiarazione della variabile Temp1
int Temp2=0 ; //dichiarazione della variabile Temp2
int Temp3=0 ; //dichiarazione della variabile Temp3
int Temp4=0 ; //dichiarazione della variabile Temp4
int Temp5=0 ; //dichiarazione della variabile Temp5
void setup() {
Serial.begin(9600);
Serial.println("seriale tx inizio");
mySerial.begin(19200);
mySerial.println("seriale virtuale tx inizio");
}
void loop() {
if (millis() - Timer > TimeOut) {
Temp1 = analogRead(A0);
Temp2 = analogRead(A1);
Temp3 = analogRead(A2);
Temp4 = analogRead(A3);
Temp5 = analogRead(A4);
Serial.println(Temp1, Decimali);
Serial.println(Temp2, Decimali);
Serial.println(Temp3, Decimali);
Serial.println(Temp4, Decimali);
Serial.println(Temp5, Decimali);
mySerial.println(Temp1, Decimali);
mySerial.println(Temp2, Decimali);
mySerial.println(Temp3, Decimali);
mySerial.println(Temp4, Decimali);
mySerial.println(Temp5, Decimali);
Timer = millis(); // timer resettato
}
}
Codice per Arduino B in ricezione
#include <SoftwareSerial.h> // libreria creazione porta seriale virtuale
SoftwareSerial mySerial(2, 3); // RX, TX
int I = 0;
int J = 0;
String Z = "";
byte Decimali = 1;
String SerRx = ""; // azzera buffer ricezione
const unsigned long TimeOut = 5000; // timeout 1 s
unsigned long Timer = millis();// timer partito
int Temp1=0 ;
int Temp2=0 ;
int Temp3=0 ;
int Temp4=0 ;
int Temp5=0 ;
void setup() {
Serial.begin(9600); // inizializza porta seriale
Serial.println("seriale rx inizio");
mySerial.begin(19200);
mySerial.println("seriale virtuale rx inizio"); // inizializza porta seriale ausiliaria
}
void loop() {
SerRx = ""; // azzera buffer ricezione
Timer = millis(); // timer partito
while (millis() - Timer < TimeOut) { // attesa timeout
while (mySerial.available() > 0) { // ricezione da modulo
SerRx += char(mySerial.read()); // aggiungi carattere al buffer
Timer = millis(); // reset timer
}
}
if (SerRx.length() > 0) { // ci sono dei dati nel buffer (Temp1<CR><LF>Temp2<CR><LF>...Temp5<CR><LF>
J = 0;
I = SerRx.indexOf(13, J); // cerca CR (carriage return) a partire dal carattere J
if (I > 0) {
Z = SerRx.substring(J, I); // sotto stringa dal carattere J al carattere I-1
Temp1 = Z.toInt();
J = I + 2; // nuova posizione di ricerca
mySerial.println(Temp1, Decimali);
Serial.print("Temp1 = ");
Serial.println(Temp1, Decimali);
}
I = SerRx.indexOf(13, J); // cerca CR (carriage return) a partire dal carattere J
if (I > 0) {
Z = SerRx.substring(J, I); // sotto stringa dal carattere J al carattere I-1
Temp2 = Z.toInt();
J = I + 2; // nuova posizione di ricerca
mySerial.println(Temp2, Decimali);
Serial.print("Temp2 = ");
Serial.println(Temp2, Decimali);
}
I = SerRx.indexOf(13, J); // cerca CR (carriage return) a partire dal carattere J
if (I > 0) {
Z = SerRx.substring(J, I); // sotto stringa dal carattere J al carattere I-1
Temp3 = Z.toInt();
J = I + 2; // nuova posizione di ricerca
mySerial.println(Temp3, Decimali);
Serial.print("Temp3 = ");
Serial.println(Temp3, Decimali);
}
I = SerRx.indexOf(13, J); // cerca CR (carriage return) a partire dal carattere J
if (I > 0) {
Z = SerRx.substring(J, I); // sotto stringa dal carattere J al carattere I-1
Temp4 = Z.toInt();
J = I + 2; // nuova posizione di ricerca
mySerial.println(Temp4, Decimali);
Serial.print("Temp4 = ");
Serial.println(Temp4, Decimali);
}
I = SerRx.indexOf(13, J); // cerca CR (carriage return) a partire dal carattere J
if (I > 0) {
Z = SerRx.substring(J, I); // sotto stringa dal carattere J al carattere I-1
Temp5 = Z.toInt();
mySerial.println(Temp5, Decimali);
Serial.print("Temp5 = ");
Serial.println(Temp5, Decimali);
}
}
}
In ricezione sulla seriale dell'Ide di Arduino B ricevo perfettamente i 5 valori di temperatura per il momento sotto forma di variabile intera ma mi và bene anche così....sono contentissimo...
E ora passiamo alla parte forse ancora più difficile:mandare i dati sul sito Pachube-COSM...
Ora però vado a nanna...