Come spegnere Arduino

Alcuni dettagli: mantenendo Arduino attaccato al computer, per evitare di attaccare e staccare il cavetto USB troppe volte, non e' disponibile un interruttore per accendere e spegnere Arduino?! O almeno una maniera per terminare un programma...
Una curiosita': se scrivo un programma che compie una sola azione, supponiamo eseguire una sola misura, quando ha terminato, come faccio a comunicare ad Arduino di ripetere il programma?

Ciao Pulce; Ho iniziato un nuovo Topic con la Tua richiesta perché non aveva niente a che fare con la discussione precedente.

Ciao Uwe
Moderatore.

L'Arduino non ha un interruttore. Devi predisporlo tu.

Per rieseguire una funzione a "comando", basta inserirla in una subroutine che chiami al verificarsi di un evento esterno, ad esempio la pressione di un pulsantino o un segnale di un sensore

No, non é previsto un interuttore per Arduino.

Non é neanche previsto ne neccessario una procedura di spegnimento; basta togliere l'alimentazione.

Se vuoi che Arduino faccia una cosa su richiesta puoi mandargli un carattere/stringa via seriale e il programma di Arduino deve controllare l'arivo di dati sulla seriale e se corrispondono a quelle prestabilite eseguire l'azione. Puoi farlo anche con un semplice tasterino o qualsiasi altro sensore che puoi collegare a Arduino.

Ciao Uwe

Dubito che si possa "spegnere" un Arduino collegato all'USB, visto che non c'è un jumper che interrompe l'alimentazione, almeno a mia memoria; l'eventuale successiva accensione farebbe ripartire in automatico lo sketch, credo.

Ok, non c'e' un interruttore on/off su Arduino, pero' esiste un comando da shell [sto usando Linux] per spegnere o togliere l'alimentazione [e poi ridarla] alla porta USB collegata con Arduino?

menniti:
Dubito che si possa "spegnere" un Arduino collegato all'USB, visto che non c'è un jumper che interrompe l'alimentazione, almeno a mia memoria; l'eventuale successiva accensione farebbe ripartire in automatico lo sketch, credo.

Si potrebbe "hackerare" il cavetto interrompendo il filo VBUS, che porta l'alimentazione.... ipotesi...

Su arduino diecimila c'era il bellissimo pin per selezionare l'opzione dell'alimentazione

Potresti cercare un cavetto del genere: NewerTech 1.0 Meter (39") Sync Switch USB Extension... at MacSales.com

Permette di attivare o disattivare la ricarica dei telefonini e palmari.

Oppure questo: Amazon.com
Ma è molto più grezzo.

Edit: c'è anche la ciabatta usb :astonished: http://www.meritline.com/480-mbps-high-speed-4-ports-usb-2-0-hub-with-on-off-button-black---p-56409.aspx?source=nextaghdac

PaoloP:
Potresti cercare un cavetto del genere: NewerTech 1.0 Meter (39") Sync Switch USB Extension... at MacSales.com

Permette di attivare o disattivare la ricarica dei telefonini e palmari.

No, Hai frainteso.
Permette sempre la carica ma disabilita la sincronizzazione:

An in-line switch allows you to conveniently choose between "charge only" and "sync and charge" modes when you want to charge, but not sync with iTunes®.

Ciao Uwe

Penso che la soluzione migliore potrebbe essere la ciabatta USB con l'interruttore cosi' oltre a risolvere il caso in questione, evito di alzarmi dalla sedia e trafficare dietro al computer per inserire chiavette o altri dispositivi...
in alternativa compro un cavo USB e provo a mettere l'interruttore.
Grazie a tutti! :slight_smile:

pulce:
Ok, non c’e’ un interruttore on/off su Arduino, pero’ esiste un comando da shell [sto usando Linux] per spegnere o togliere l’alimentazione [e poi ridarla] alla porta USB collegata con Arduino?

Un comando specifico non so se esiste, puoi sempre crearti uno script che va a modificare il file /sys/bus/usb/devices/[PORTA USB]/power/level

I valori possibli sono AUTO/ON/OFF.

Stefanoxjx:
Un comando specifico non so se esiste, puoi sempre crearti uno script che va a modificare il file /sys/bus/usb/devices/[PORTA USB]/power/level

A livello porta USB c’è un comando low level specifico per togliere l’alimentazione, però è indispensabile che l’host controller supporti questo controllo e anche se è previsto potrebbe essere in modalità “ganged”, cioè vengono spente tutte le porte USB e non solo quella che ci interessa.
Non ultimo il fatto che in realtà su i pc le porte USB vere sono in numero limitato, poi ci sono degli hub integrati da due/quattro porte che non è detto gestiscano l’interruzione dell’alimentazione sulla singola porta.
Insomma la cosa è abbastanza complicata e non di facile gestione a livello software, questo vale sia per Windows che per Linux indistintamente.
Per Windows esistono varie utility, purtroppo tutte a pagamento, che analizzano le porte USB e dicono tutto quello che possono fare, inclusa la modalità controllo alimentazione e la corrente massima che possono erogare, non è detto che siano i 500 mA massimi previsti dallo standard, per Linux non conosco nulla di equivalente.

Il modo più semplice per risolvere il problema proposto è prendere un cavo USB, spellarlo superficialmente in un punto comodo, isolare il cavo rosso che porta il +5V interromperlo e mettere in mezzo uno switch.

Soluzione alternativa low cost è questo hub USB dotato di power switch per ciascuna porta.

astrobeed:

Stefanoxjx:
Un comando specifico non so se esiste, puoi sempre crearti uno script che va a modificare il file /sys/bus/usb/devices/[PORTA USB]/power/level

A livello porta USB c'è un comando low level specifico per togliere l'alimentazione, però è indispensabile che l'host controller supporti questo controllo e anche se è previsto potrebbe essere in modalità "ganged", cioè vengono spente tutte le porte USB e non solo quella che ci interessa.
Non ultimo il fatto che in realtà su i pc le porte USB vere sono in numero limitato, poi ci sono degli hub integrati da due/quattro porte che non è detto gestiscano l'interruzione dell'alimentazione sulla singola porta.
Insomma la cosa è abbastanza complicata e non di facile gestione a livello software, questo vale sia per Windows che per Linux indistintamente.
Per Windows esistono varie utility, purtroppo tutte a pagamento, che analizzano le porte USB e dicono tutto quello che possono fare, inclusa la modalità controllo alimentazione e la corrente massima che possono erogare, non è detto che siano i 500 mA massimi previsti dallo standard, per Linux non conosco nulla di equivalente.

Il modo più semplice per risolvere il problema proposto è prendere un cavo USB, spellarlo superficialmente in un punto comodo, isolare il cavo rosso che porta il +5V interromperlo e mettere in mezzo uno switch.

A suo tempo, quando feci delle prove sul mio pc, riuscivo a togliere alimentazione singolarmente ad ogni singola porta usb, ma ovvio questo dipende dall'hardware che c'è sotto.

astrobeed:
Soluzione alternativa low cost è questo hub USB dotato di power switch per ciascuna porta.

Ma a questo punto perchè spendere dei soldi inutilmente?
Non conviene modificare un cavo usb che si ha già in casa?

Stefanoxjx:

astrobeed:
Soluzione alternativa low cost è questo hub USB dotato di power switch per ciascuna porta.

Ma a questo punto perchè spendere dei soldi inutilmente?
Non conviene modificare un cavo usb che si ha già in casa?

Infatti ha scritto "soluzione alternativa"; il problema devi affrontarlo dal punto di vista di chi ce l'ha, non tutti sono i grado di aprire un cavo usb, localizzare l'alimentazione ed interromperla in maniera decente con uno switch; se lui lo è ora sa come fare, se non lo è sa che può comprare l'HUB.

Dunque ho provato ad hackerare il cavo. Questa e' una foto scattata durante l'operazione,

[pure un poco sfuocata] comunque i capi dei filo rosso sono saldati allo switch e il giochino funziona. Sono solo stato un poco abbondante nello sbrego.
Mi resta da isolare con nastro i cavi e trovare un piccolo recipiente dove sistemare l'interruttore [io pensavo a un paio di tappi in plastica in cui praticare due fori per il filo e uno per la levetta, pero' sono molto ben accetti consigli...] per evitare che i contatti restino "a portata di mano".
Un dettaglio: la stagnola e la rete metallica originaria intorno ai cavi per la protezione delle interferenze purtroppo e' andata persa: se avvolgo un poco di carta stagnola e un poco di filo di rame comune in sostituzione puo' funzionare?
Per i sostenitori della soluzione "software" ho studiacchiato intorno al problema e ci sono buone probablita' di riuscita, domani cerchero' di finire l'esperimento.

Intendi tappi di plastica tipo bottiglie d’acqua? un mini-contenitore plastico da 50c sarebbe troppo lusso per il tuo dispositivo? due fori passanti per il cavo ed un altro per far fuoriuscire l’interruttore o quel che hai usato, non ridurla a cocda-cola, ti prego :~

menniti:
Intendi tappi di plastica tipo bottiglie d'acqua? un mini-contenitore plastico da 50c sarebbe troppo lusso per il tuo dispositivo? due fori passanti per il cavo ed un altro per far fuoriuscire l'interruttore o quel che hai usato, non ridurla a cocda-cola, ti prego :~

:smiley: :smiley: