Debounce e Alimentazione

Scusate il titolo non volevo aprire due post per un paio di domande poco impegnative.
Intanto vorrei sapere come vi comportate quando "smanettate" con il circuito su Arduino; togliete il cavo USB tutte le volte togliendo di fatto l'alimentazione oppure cablate direttamente col cavo inserito. Semmai lo fate con il rimuovi periferica ? (due scatole :slight_smile: )

Inoltre, ma nelle istruzioni Arduino non c'è una funzione per il debounce dei pulsanti? Non mi sembra di averlo trovato nelle reference .
Bye
Paolo

Non puoi fare rimuovi periferica perchè quella procedura di chiusura vale solo ed esclusivamente per le memorie queli pen drive etc...quindi togli e via...
per lalimentazione usi un alimentatorino non ha senso se lo usi in un progetto finito alimentarlo con il pc ....:slight_smile:

  1. sfili il cavo direttamente
  2. basta mettere 2 letture del pin digitale intervallate da un delay(50). Se le letture risultano identiche non si è trattato di un "rimbalzo" ma di una pressione reale. Questo è un metodo spartano ma funzionante. Esistono altri metodi più raffinati ma consumano risorse e portano allo stesso risultato con diverse righe di codice in più

Peccato LEO :slight_smile:
ci sarebbe stata proprio bene una funzione di Debounce (ogni riferimento a PIC è del tutto casuale :slight_smile: )

Ok estrazione brutale del cavo già operativo, basta solo che a furia di tacca/stacca non causo problemi.
Senti Leo già che ci sono, ma nel Chip resta sempre l'ultimo programma caricato, e se volessi cancellare il chip (intendo il programma) ?
Non è che mi serva per carità, è solo una curiosità.

@Ratto93
si si chiaro, su un progetto finito per forza ci vuole l'alimentazione esterna. Nessun problema.

Per cancellare la Flash devi preparare il chip in standalone e connetterlo all'Arduino che abbia precaricato lo sketch ArduinoISP.
A questo punto hai 2 strade:

  1. usi l'IDE e carichi il bootloader sul chip in standalone. Quando si carica il bootloader, l'IDE imposta avrdude (il programma da terminale che esegue materialmente il caricamento dei dati sui chip Atmel) di erasare prima anche il chip.

  2. usi direttamente avrdude contenuto nell'IDE di Arduino (vai nella cartella /hardware/arduino/tools) da terminale passando l'opzione "-e" che erasa il chip. Devi dare un comando tipo questo (vado a mente):

./avrdude -b 19200 -c stk500v1 -C ./avrdude.conf -p m328p -P /dev/ttyACM0 -e

La differenza tra i 2 sta nel fatto che mentre con il primo carichi il bootloader, con il secondo no.

C'é la libreria per il debounce: Arduino Playground - Bounce

In pratica non c'é bisogno di cancellaer il programma; quando non ti serve piú ci metti uno nuovo. Se dai Arduino a qualcune e non vuoi che possa vedere il Tuo programma mettici un esempio come BLINK
Ciao Uwe

Grazie Uwe :slight_smile:
che bello..........meglio di cosi (però ancora non l'ho provato )

Bye

leo72:
2) basta mettere 2 letture del pin digitale intervallate da un delay(50). Se le letture risultano identiche non si è trattato di un "rimbalzo" ma di una pressione reale. Questo è un metodo spartano ma funzionante. Esistono altri metodi più raffinati ma consumano risorse e portano allo stesso risultato con diverse righe di codice in più

Personalmente per un debounce sono contro l'appesantimento del codice. La Bounce introduce circa 300 byte di codice in più: su un micro con 32/64 kB di flash magari la cosa non ti dà fastidio ma se stai lavorando su un piccolo Tiny con 2 kB è un consumo non accettabile.

non trovo il post ma si diceva che il problema del debounce era stato ovviato con un trigger di shimdt, ho provato a verificare con un oscilloscopio e un minimo di vantaggio si notava

ciao
stefano

Le porte di Arduino sono già triggerate.

Ma mettere un delay fa così schifo? Non capisco perché si vogliono complicare le cose semplici... :roll_eyes: