Arduino console di debug

Nel momento che collego l'arduino alla usb, parte il programma caricato.
Ogni volta che accedo alla console di debug il programma riparte dall'inizio. Quindi è come se l'apertura della console provocasse un 'soft reset'.
Come si può fare la stessa cosa da software ? Qualè comando utilizzare ?

gcam:
Ogni volta che accedo alla console di debug il programma riparte dall'inizio. Quindi è come se l'apertura della console provocasse un 'soft reset'.

Quando apri la console, o comunque apri una comunicazione seriale verso Arduino, viene effettuato un vero e proprio reset a causa di come funziona il sistema di Autoreset per la programmazione.
Il reset software lo puoi fare in due modi, un salto all'indirizzo 0, riavvi il programma però non vengono resettati i registri macchina del 328, in realtà vengono riportati alle condizioni iniziali previste da Arduino e poi inizializzati come previsto dallo sketch, stack e heap vengono reinizializzati a 0 dallo startup (quello che non si vede) previsto dal compilatore.
Il secondo modo è usare il watchdog, in questo caso è un vero e proprio reset hardware, impostandolo per un tempo relativamente breve senza ricaricarlo, allo scadere della temporizzazione avviene il reset, però è utilizzabile solo con la UNO perché sulla 2009 il bootloader non resetta il watchdog e Arduino continua a resettare da solo.

Sei stato chiaro, ma non ho capito, e quindi non so come applicarlo.

Comunque ho la leggera impressione che quando apro una connessione seriale sul pc (processing o altro software) il programma sull'arduino non parte dall'inizio.
Per intenderci nell'arduino ho questo listato:

vodi setup()
{
calibrate();
}

void loop()
{
// acquisizione
val=analogRead(1);
Serial.print(val);
}

void calibrate()
{
digitalWrite(red, HIGH);
// taratura
....

digitalWrite(red, LOW);
}

quando collego l'arduino alla usb si accende il led rosso e poi si spegne. Se avvio processing ed apro la seriale, il led rosso non si accende e inizio a ricevere i valori dall'arduino.
Praticamente, il programma non è ripartito dall'inizio.

Mentre ogni volta che apro la console di debug il led si accende.

scusate, mi intrometto per un leggero spin-off.

ho letto “debug”. è per caso una funzione dell’IDE V1.0?

Nel momento che collego l'arduino alla usb, parte il programma caricato.

non capisco cosa vuoi dire .... sembra che arduino smetta di funzionare se la usb è scollegata, a me risulta nuova sta cosa.

inoltre non è chiaro cosa vuoi fare, un reset delle variabili, un ricaricamento totale di arduino o cosa?

Se vuoi un reset simulando la pressione del tastino sulla board, la soluzione più semplice e veloce via software è sacrificare un pin e rigirarlo con qualche componente sul pin reset.
Modificare il bootloader è possibile ma duretta
Il salto all'indirizzo 0 non è un reset hardware

ciao

per debug intendo la finestra o form (dir si voglia) che ti permette di interaggire con arduino.
dove vedi le serial.print o invii i comandi ad arduino.

ma l'ide a cui ti riferisci è nuovo?

@pablos71
se l'arduino viene alimentato dalla usb, nel momento che lo scolleghi, si ferma l'esecuzione del programma.
lo ricolleghi e riparte il programma che c'è caricato.

Vorrei far ripartire il programma dall'inizio, incluso setup, quando da pc avvio processing e apro la seriale.
Oppure ogni volta che devo far partire il programma dall'inizio. (operazione che si può eseguire scollegando e collegando la usb).

si, è la nuova versione dell'IDE dopo la 0023. ma anocra non l'ho provata.....solo scaricata!

guarda, non ho ben chiaro il concetto che esprimi, ma leggendo l'ultimo post, io risolverei con un loop di attesa sulla seriale. non appena arriva ad esempio "ok", il programma parte! Se arriva magari "reload", parte da capo!

una soluzione grezzina e sempliciotta che userei io!

infatti credo che alla fine, farò cosi. Invio un comando che mi richiama un metodo tipo void initialize() che fa quello che fa il setup.

ma posso eventualmente richiamare il setup.

da pc verso arduino per dividere due sequenze di byte successive, in modo che vengano considerati come due comandi, con carattere o codice ascii si utilizza ?

Quello che tu chiami "debug" è in realtà il monitor seriale dell'IDE, un emulatore di terminale seriale che serve per leggere i dati spediti dall'Arduino via seriale e per poter inviare dati alla scheda.
Ogni volta che avvii l'IDE questa resetta le porte USB, il monitor seriale non mi pare la resetti.

Per evitare di perdersi dei dati ma anche per evitare che l'Arduino possa bloccare la porta seriale è buona norma mettere un delay(2000); o delay(3000); per far attendere 2/3 secondi prima dell'inizio delle trasmissioni seriali.

Può darsi che Processing non resetti l'Arduino se lo trova già collegato al PC, a differenza dell'IDE.