Problema con caricamento Applicativo

Ciao,
ho un problema che non mi è mai capitato, di solito sono autonomo nella risoluzione ma questa volta non ci riesco :frowning:
Vi espongo il problema:

Arduino Mega

Questa funzione legge un valore analogico da un sensore e restituisce una risposta in seriale:

void lettura() {  
  int sensorReading = analogRead(A7);
  Serial.println(sensorReading);
  if (sensorReading <= 256) {    
      Serial.println("XXXX");
  }
  if (sensorReading > 256 && sensorReading <= 512) {    
      Serial.println("XXXX");
  }
  if (sensorReading > 512 && sensorReading <= 768) {
      Serial.println("XXXX");
  }
  if (sensorReading > 768) {
      Serial.println("XXXX");
  }
}

Il problema è che non riesco a caricarlo su arduino e l’IDE si blocca su “Caricamento in corso”
Se elimino gli if non ci sono problemi.
Ho anche provato a creare un programma solo con questo pezzo di codice ma non cambia nulla.
Oramai è un po’ che lavoro con Arduino ma una cosa simile non mi era mai capitata.

Grazie a chi potrà aiutarmi

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento se non lo hai già fatto: Regolamento Qui una serie di link utili, non inerenti al tuo problema: - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Cambia quei XXXX con qualche altro messaggio. Mi pare che tre o quattro X avessero un significato particolare per il compilatore. E’ solo un ricordo. Prova.

Grazie nid, (Presentazione fatta)

ho riportato le X per non rendere più complesso il codice ma nel programma ci sono delle semplici frasi.

Che versione di IDE ? L'IDE quando compila calcola quanto è grande il programma come codice (spazio occupato in memoria flash), quanto ti dà ? E di memoria SRAM ? Provato ad usare F() ? Serial.println( F("XXXX") );

Anche utilizzando Serial.println(F("Testo)) non cambia nulla.

la verifica: Lo sketch usa 12.834 byte (5%) dello spazio disponibile per i programmi. Il massimo è 253.952 byte. Le variabili globali usano 612 byte (7%) di memoria dinamica, lasciando altri 7.580 byte liberi per le variabili locali. Il massimo è 8.192 byte.

Utilizzo la IDE 1.6.8

il fatto è che se elimino la parte dove eseguo il controllo degli IF riesco a caricarlo senza problemi.

ho provato ad utilizzare anche switch (var) ma senza successo, resta bloccato durante la fase di caricamento

Prova con l'IDE 1.6.5r5 oppure con la 1.6.9, la 1.6.8 ha dei bug "strani".

abilita il log del compilatore dal menu di Arduino IDE. Una volta compilato postalo , tramite gli appositi tag code, in questo thread

vbextreme: abilita il log del compilatore dal menu di Arduino IDE. Una volta compilato postalo , tramite gli appositi tag code, in questo thread

Più che il log del compilatore, quello del caricamento visto che la compilazione va a buon fine.

Ecco il LOG del caricamento, va in timeout durante il caricamento... ma se commento la parte degli if carica senza alcun problema. Ho provato L'IDE 1.6.9 ma senza successo, mi sto per arrendere

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega2560
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Wiring
         Description     : Wiring
         Programmer Model: AVRISP
         Hardware Version: 15
         Firmware Version Master : 2.10
         Vtarget         : 0.0 V
         SCK period      : 43.5 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9801
avrdude: reading input file "C:\Users\ALESSA~1\AppData\Local\Temp\buildee05df1415cafbe33700f4d8fa19de51.tmp/Main.ino.hex"
avrdude: writing flash (12742 bytes):

Writing | #################################################avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout

Ah dimenticavo, una cosa sono riuscito a farla:

void perdite() { 
  int sensorReading = analogRead(A7);
  //Serial.println(sensorReading);
  //int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
  if (sensorReading >= 1000) {
    Serial.println("1");
  }
  if (sensorReading < 1000 && sensorReading >= 300) {
    Serial.println("2");
  }
  if (sensorReading < 300 && sensorReading >= 200) {
    Serial.println("3");
  }
  if (sensorReading < 200) {
    //Serial.println("4");
  }
}

Commentando un solo “serial.print” lo carica, quasi avesse un limite

posta il log completo del compilatore

Se può aiutare, questo è il report del compilatore, che comunque va a buon fine

lo metto su pastebin perchè eccede il limite di caratteri:

http://pastebin.com/eQepEeXS

dal log che hai postato sembra che non hai abilitato i warning, ma sono sul cellulare e quindi fatico a leggerlo, cerca nel menu compile warning e mettilo su All e show verbose output su si.