Problema Easy Transfer

Buonasera a tutti!

Sto avendo un piccolo problema con un codice (abbastanza lungo e che riporterò integralmente) il quale dovrebbe essere il pilota (assieme ad un PC per i comandi vocali) di un progettino di domotica. Allego il codice in basso.

Allora errori di compliazione non ne ottengo, tuttavia l’errore che riscontro è alla parte di codice seguente e presente nel loop() :

  if(ETemp.receiveData()){ // In caso di ricezione temperatura
    getTemp();
    Temp2PC();
  }

Questa funzione dovrebbe ricevere la temperatura da un Attiny collegato ad Arduino con la SoftEasySerial; essa ha funzionato correttamente fino ad alcune modifiche fa ma da poco non ha voluto più saperne di stamparmi la temperatura (e controllando con l’accensione di un led, il codice non arriva mai a quell’if) quindi suppongo il problema sia di collegamenti, e non credo perchè ho sempre fatto così, oppure sia di qualche ritardo eccessivo nel loop() che non fa in tempo per la ricezione dall’Attiny. Che cosa ne pensate?

Grazie mille a tutti,
MA

P.S. Scusate, il codice è un po’ lungo e se riscontrate la mancanza di alcune variabili è perchè fa parte di un codice ancora più lungo che ho dovuto sfoltire.
A proposito come posso dividere un codice in più file? Troppo O.T.? :slight_smile:

TempTrouble.ino (5.49 KB)

Se il codice è lungo meglio allegarlo a post. Banalmente, sicuro non hai esaurito la sram (su arduino uno solo 2kb) ?

nid69ita: Banalmente, sicuro non hai esaurito la sram (su arduino uno solo 2kb) ?

Sinceramente è probabile, queste sono tutte le variabili che ho dichiarato e il codice si aggira intorno ai 10k totali (non so se queste informazioni possano servire...) :

// SEZIONE COMUNICAZIONI
char output[6]; 
int yesno = 0; // 1 = true      2 = false     0 = null
byte length;
byte type;
int bytesAvailable = 0;
String input;

//SEZIONE TEMPERATURA ATTINY
SoftEasyTransfer ETemp; // Comunicazione ATTiny Temperatura
SoftwareSerial TempComm(10, 11);
int tempReads[4];
int tempDS, tempCount, tempSum;
byte requested = 0;  // Indica se la temperatura è richiesta (1) o no (0)
char tempCH[2]; // Temperatura temporanea in char
struct TEMP_STRUCTURE{ // I valori da ricevere dall'ATTinyTemp
  float temp; // Temperatura
  int request; // Richiesta
};
TEMP_STRUCTURE TempData; // Assegno un nome alla struct

//SEZIONE CAPACITIVO ATTINY APRI/CHIUDI
SoftEasyTransfer ECap;
SoftwareSerial CapComm(3, 4);
struct CAP_STRUCTURE 
{
  int pressed; // impostato su 1 se il capacitivo è premuto
};
CAP_STRUCTURE CapData;
int goout; // Presente nella stanza : 1      Assente : 0

// SEZIONE DICHIARAZIONI PIN
int relay1 = 2;

//SEZIONE CREPUSCOLARE
const int sensorValue = 420;  //imposta il valore del sensore
int ledCrepuscolo = 5; // connettere il LED al pin digitale 10

//SEZIONE STRINGA SERIALE
char inData[20]; // Stringa di lettura
char inChar=-1; // Il char appena letto
byte index = 0; // indice contatore

//SEZIONE MILLIS
unsigned long CrepuscoloRefresh = 10000;
unsigned long Restore1 = 20000;
unsigned long RequestTime = 3600000;
unsigned long previousMillis = 0;  
unsigned long previousRestore = 0;  
unsigned long previousRequest = 0;  
unsigned long currentMillis;

//SEZIONE CONDIZIONATORE
int CondState = 0; // Stato condizionatore :  0 = Spento   1 = Acceso
int SeasonState = 0; // Stagione attuale :  0 = refrigerazione/estate   1 = riscaldamento/inverno
boolean condRequested = false;

//SEZIONE RESTORE
int restore = 0;
int op = 0;

Prova con questa:

int freeRam () {
  extern int __heap_start, *__brkval; 
  int v; 
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
}

Dovrai mettere nella loop() una Serial.print del valore che ti da.

Mi dà come risultato 1451. Suppongo siano i byte di sram liberi giusto? Quindi il problema non è questo?

Grazie mille della risposta, ;) MA

P.S. Riporto una mia domanda precedente : come posso dividere un codice in più file? Sono OT?

No, non sei OT. Penso che devi usare le tab e che poi l'IDE ti mette i vari sorgenti nella stessa cartella. (credo)

nid69ita: No, non sei OT. Penso che devi usare le tab e che poi l'IDE ti mette i vari sorgenti nella stessa cartella. (credo)

Grazie dell'informazione! :)

Riguardo al problemino. Qualche idea?

MA

Up