Arduino Micro Serial Monitor costantemente vuoto

Salve ragazzi,
Ho acquistato qualche giorno fa il mio primo Arduino Micro ( ho sempre usato degli uno fino adesso).
Appena testato, ho eseguito qualche sketch di prova e mi sembrava funzionare tutto perfettamente.
In realtà oggi mi sono accorto che ci sono dei problemi con il Serial Monitor. Qualsiasi cosa faccia, che si tratti di leggere o scrivere un dato, il serial monitor resta bianco. Nessun valore, nemmeno nel caso provi a fare una stampa di una stringa di testo nel setup o nel loop. Niente, niente di niente.
Ho eseguito un po di test "basic" e quello che sono riuscito a scoprire è questo:

I led TX e RX funzionano
il programma effettivamente funziona ( posto sotto il codice che ho usato per togliermi il dubbio ,credevo che non riuscisse a leggere gli input, allora ho fatto un semplice circuito con LDR e gli ho detto di accendere il led se la luminosità bla bla bla )
i valori sui pin misurati con multimetro sono corretti.

Qualcuno può illuminarmi? è la prima volta che mi trovo a lottare con un Atmega32u4....non capisco proprio perchè quel monitor resti intonso!!!!

Qui il codice di prova

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  Serial.println("Se leggi questa scritta, è gia un passo avanti");
}

// the loop routine runs over and over again forever:
void loop() {
  Serial.println("Se leggi questa scritta, ce l'hai fatta");
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  if (sensorValue>700) digitalWrite(13,HIGH);
 else if (sensorValue <700) digitalWrite(13,LOW); 
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1000);        // delay in between reads for stability
}[code]

[/code]

Il 32U4 ha 2 seriali: la Serial e la Serial1.
La Serial è connessa alla porta USB, la Serial1 ai pin 0 e 1.
A differenza della UNO la normale apertura della seriale non resetta il micro, deve essere aperta e chiusa a 1200 baud per azionare il reset.
Quindi semplicemente quando ti colleghi la scritta è già stata inviata.
Mentre dovresti leggere dalla USB la seconda scritta, una volta al secondo.

Infine controlla la porta COM a cui è connesso. Se usi WINDOWS non è infrequente che alla connessione e disconnessione della porta USB durante il boot il micro faccia cambire porta COM.

Ciao Paolo, intanto ti ringrazio per la risposta.
Ho provato anche utilizzando comandi come il while(Serial!) , ma niente. Ho eseguito il reset che tu citi, ma ancora nulla.
Il problema della COM l'ho riscontrato ma tengo sempre sotto la lista delle COM proprio per evitare questo inconveniente. Non c'è nulla da fare, quella scritta proprio non vuole venir fuori....
Inizio a pensare che ci sia qualche problema hw .....o magari ( spero) un problema dell'IDE..

Riguardo all'IDE puoi risolvere facilmente scaricando un'altra versione in formato zip e avviarla. (1.5.6 o Nigthly Build)
Comunque non mi risultano problemi in tal senso. Altrimenti la cosa sarebbe generalizzata e non sporadica.

Per i problemi hardware ricordo delle prove di loopback per la seriale, ma dovresti ripescarle cercando sul forum.

Il serial loopback è un test molto semplice, si tratta solo di mettere in corto i pin digitali 0 e 1, ossia TX e RX della seriale e poi provare ad inviare alcuni caratteri, automaticamente dovrebbero essere restituiti sul SM, altrimenti c'è un problema sul Convertitore USB-Seriale

Non sulla Micro Michele ...
... come da reference sulla Micro:

Note that on the Micro, the Serial class refers to USB (CDC) communication; for TTL serial on pins 0 and 1, use the Serial1 class.

... quindi, la Serial corrisponde alla seriale via USB, la Serial1 alla seriale sui pin 0 e 1, e ... se ponticelli lo 0 con 1 e poi trasmetti dalla USB ... non ottieni nulla ... :roll_eyes:

Guglielmo

@ funksoulbrother:

Su Windows, ogni volta che carichi un programma, la Micro fa un reset e capita che ... cambia numero di COMx: quindi, prima di aprire il monitor seriale, verifica che sia selezionata la giusta porta COMx:

Inoltre, sulla Micro come sulla Leonardo, è praticamente obbligatorio (... se si vogliono evitare strani problemi) usare la:
if( Serial ) ... aggiungi quindi il test all'inizio del tuo setup() come da esempio.

Guglielmo

Sorry, sono intervenuto su quanto diceva Paolo, senza aver letto che si tratta di Arduino Micro. :disappointed_relieved:

Ok ragazzi, vi ringrazio tutti per il supporto.
Credo di aver trovato il colpevole!.
Anche riscaricando la IDE nuova, la situazione non è cambiata. TUttavia, tanto per provare, ho aperto il monitor sulla porta non dall'ide ma con hyperterminal e.......si vede tutto!.
La cosa mi lascia un po perplesso ma almeno adesso vedo qualcosa e non devo fare debug a tentoni!

funksoulbrother:
La cosa mi lascia un po perplesso ma almeno adesso vedo qualcosa e non devo fare debug a tentoni!

Strano ...
... comunque questo non toglie che DEVI aggiungere la "if( Serial )" ... onde evitare strani problemi in futuro :wink:

Guglielmo

Guglielmo, la

while(!Serial){;}

blocca l'esecuzione del codice finché non viene aperta la seriale tramite Serial Monito o terminale.
Se uno non deve fare debug o non deve usare la seriale per altri motivi, quell'istruzione non è obbligatoria visto che bloccherebbe il micro in attesa di un evento che potrebbe non verificarsi.

Inoltre lui ha messo un Serial.print nel loop e quello deve funzionare.
Ricordatevi che in alcune condizioni il bootloader del 32U4 si piglia anche 8 secondi per l'avvio (non ricordo in quali, qui Leo potrebbe essere più preciso) quindi conviene aspettare un po'.

PaoloP:
Guglielmo, la while(!Serial){;} ...

Paolo ... lo vuoi insegnare a me ? :stuck_out_tongue: :grin: :stuck_out_tongue: XD

Io consiglio di usare la IF prima di usare la Serial e non la while messa così a cavolo che ti blocca il programma ... :wink:

Guglielmo

Premetto che il programmino che ho postato non è il programma che devo eseguire ma solo un piccolo test " ad minchiam" per capire se leggeva o no gli ingressi .

Nelle prove che ho eseguito ho provato sia il while(Serial!) che l'if (Serial) ma , mentre mi aspettavo come da documentazione, che la print nel setup non si vedesse, il loop continuava a non farsi trovare........
Prima volta che uso questa scheda ( ho provato a usare delle nano in passato ma con Win7 a 64 bit non c'è stato modo di farle partire) , comportamento veramente stranissimo. Anche con Putty funziona il monitor....solo con l'IDE non va. E la scheda è originale, non un clone cinese....

Baaaaaaaah, magari proverò con una disinstallazione più profonda dell 'IDE o a cercare versioni alternative...
Confermo comunque le osservazioni di Guglielmo, ci vogliono un buon 4-5 secondi di boot ogni volta che carico uno sketch.... sta pigrona!! :smiley:

funksoulbrother:
Anche con Putty funziona il monitor....solo con l'IDE non va. E la scheda è originale, non un clone cinese....

Che versione di IDE stai usando ? Installa, con il suo installer la 1.0.5-r2 che è una definitiva e non una beta, verifica di aver installato i driver corretti (quelli acclusi all'IDE e NON quelli di Win) e riprova :wink:

funksoulbrother:
ci vogliono un buon 4-5 secondi di boot ogni volta che carico uno sketch.... sta pigrona!! :smiley:

Se vuoi puoi ridurre il tempo (... a tuo rischio) ... leggi QUI :wink:

Guglielmo

Grazie Gugliemo, proverò con l'IDE che hai citato :slight_smile:
( La cosa strana comunque rimane, l'IDE che ho adesso con UNO funziona perfettamente, con MICRO non si vede nulla)

Per quanto riguarda il bootloader....diciamo che per ora aspetto quei 4-5 secondi volentieri :smiley:
Non vorrei buttare subito 18 euro nel water :smiley:
Grazie Mille davvero :slight_smile:

Prova ad inserire nel Setup un ritardo:

Serial.begin(9600); // Serial Monitor (MICRO virtual port)
unsigned long Timer = millis(); // timer started
while (millis() - Timer < 5000) { // attesa per eventuale connessione a Serial Monitor (5 secondi)
}

Un appunto... 18 euro? Ma non è il prezzo dell'originale...
Non è che è un clone cinese?

@ cyberhs , grazie del consiglio, provo con l'aggiunta del ritardo e poi vi faccio sapere :slight_smile:

cmq io l'ho preso da qui tempo fa :

[url=http://http://www.ebay.it/itm/ARDUINO-MICRO-con-microcontrollore-ATmega32U4-ART-CV07-/330894401531?pt=Componenti_elettronici_attivi&hash=item4d0ad7dffb&_uhb=1]http://www.ebay.it/itm/ARDUINO-MICRO-con-microcontrollore-ATmega32U4-ART-CV07-/330894401531?pt=Componenti_elettronici_attivi&hash=item4d0ad7dffb&_uhb=1

e si hai ragione, mi son sbagliato, non eran 18 ma 21 :smiley:

Update.

Ancora nulla. In compenso, sia gli UNO che i NANO vanno perfettamente sul serial monitor ( soprattutto i nano, che il pc mi riconosce come USB Serial Device , ma carica gli sketch ) .

Le magie di windows :sweat_smile: :sweat_smile:

:astonished: