Banco di guida con Arduino Uno

Ottimo, proprio quello che speravo grazie 1000

Mi sorge un dubbio, nelle specifiche di Arduino Leonardo c' è scritto che la tensione di input raccomandata è 7 volt, mentre dalla presa usb che io sappia ne escono solo 5.

Leggi bene ... si parla di alimentazione dal Jack nero o dal pin Vin ... che passa attraverso un regolatore di tensione, da cui la caduta di tensione e la richiesta di minimo 7V (... ed io aggiungo massimo 9V ... 12 sono già troppi).

La scheda lavora a 5V.

Guglielmo

Grazie della precisazione, appena reperisco tutto il materiale comincio la costruzione del banco, posterò i miei progressi!

ho trovato su internet questo schema, sarebbe all' incirca lo stesso che volevo realizzare io. Nel mio progetto utilizzerò 5 potenziometri avendo 5 uscite analogiche, quanti pulsanti momentanei potrei inserire? In questo schema ne utilizza solo 6 uno dei quali usando l' uscita 11, potrei aggiungerne altri utilizzando anche le uscite 3, 5, 6, 9 ,10 oltre quelle già usate in questo schema?

Basta leggere le specifiche di Arduino Leonardo ...
.. in tutto hai 20 pin di I/O di cui 12 possono essere utilizzati come analogici.

Ora, 20 - 5 analogici = 15 pin di I/O disponibili.

Tieni conto che la porta USB, sulla Leonardo, NON è collegata ad alcun pin quindi non ne occupa, mente, se usi la seconda seriale (Serial1) occupi 2 pin di I/O.

Ora vedi tu :wink:

Guglielmo

ti ringrazio della risposta ma non capisco molto di quello che scrivi, non sono pratico di elettronica e mi ci sto avvicinando ora per la prima volta volendo provare a realizzare il sopracitato banco. Se non interpreto male il tuo consiglio i pulsanti avranno il gnd in comune e un filo per pulsante ad ogni pin numerati da 0 13, considerati gli altri 6 da A0 a A5 disponibili per i potenziometri. Correggimi se sbaglio, vorrei evitare di bruciare la scheda Arduino alla prima accensione.

Se i pulsanti chiudono verso massa (GND) ricorda che o su ogni pin metti una resistenza di pull-up per tenerlo a +Vcc quando il pulsante è aperto oppure usate le pull-up interne.

Utilizzando dei pulsanti dovrai anche preoccupari del "debouncing" ... ::slight_smile:

Comunque, poichè mi sembrano più che evidenti (per tua stessa ammissione) le tue scarse conoscenze in materia, mi permetto di consigliarti, prima di avventuarati in qualsiasi progetto, lo studio di QUESTO poi di QUESTO e l'acquisto qualche buon libro (es. QUESTO).

Per la parte vera e propria di elettronica, puoi fare questa ricerca con Google "imparare l'elettronica partendo da zero pdf" ... sicuramente troverai un bel libro, in .pdf, che pubblico molto tempo fa Nuova Elettronica. Non posso metterti il link perché ... pur essendo Nuova Elettronica ormai fallita, comunque il materiale è soggetto a copyright ... ma vedrai che con una ricerca su Google lo trovi al primo colpo ...

Buono studio :slight_smile:

Guglielmo

Ti ringrazio nuovamente per i consigli, sul tuo suggerimento ho guardato subito e quindi si, inserirò una resistenza , questo dovrebbe aiutarmi anche per le interferenze. Ora consulterò tutta la documentazione di base che mi hai suggerito ed insieme al tutorial per principianti che ho trovato, voglio provare a buttare giù uno schema di base. Si le mie conoscenze sono più che scarse, sono elettricista ma non elettronico,e sono qui appunto per imparare

ho messo giù uno schema preliminare, spero di aver capito la posizione delle resistenze sui pulsanti ed il loro valore, grazie per eventuali consigli

Dallo schema hai usato delle pull-down verso GND mentre il tuo pulsante chiude verso Vcc, confermi? In tal caso il pulsante darà normalmente LOW e, quando premuto, darà HIGH.

Se ti andasse bene il contrario (normalmnete HIGH e premuto LOW), allora potresti semplificare il circuito eliminando tutte le resistenze esterne ed i collegamneti esterni verso Vcc ed utilizzare quelle interne al chip (si attivano con un comando da software), che sono di pull-up (vanno verso Vcc) per tenere il pin normalmente ad HIGH e portarlo a LOW chiudendo il pulsante ad esso connesso verso GND.

Scegli tu quale delle due soluzioni ti è più comoda ...

Guglielmo

se invece spostassi la resistenza sul Vcc prima del pulsante realizzerei la PULL Up diciamo via hardware, nella guida che ho letto dice che limita la corrente sul microprocessore ( cosa positiva ) ed aiuta nella gestione del debouncing che successivamente va regolato anche via software. Confermi?

Diciamo che a livello pratico non so cosa sia meglio, nel mio dispositivo la pressione di un pulsante serve ad attivare una funziona isolata che normalmente è attivata da un tasto della tastiera.
A differenza di un joystick per retroconsole io non ho necessità di avere pressioni ripetute molto ravvicinate dello stesso tasto.
Ad esempio un tasto azzurro mi inserirà la marcia avanti, questa rimarrà inserita finchè non premo il tasto nero che la disinserirà. Allo stesso modo gli altri tasti. Detto questo non so quale configurazione sia meglio, il grosso del lavoro lo fanno le leve ( potenziometri )che verranno usate in continuazione.

La resistenza di pull-up/pull-down nulla ha a che vedere con il "debouncing" ... purtroppo il 90% delle guide su internet scrive delle emerite bojate.

Se vuoi evitare di compilcarti la vita, usa le pull-up interne alla MCU ed, esternamente, metti una rete R/C per fare "debouncing" come da schema che ti allego (dei tre possibili schemi che vedi devi usare il primo a sinistra, cambiando i valori rispetto a quelli indicati ... R va bene 100Ω, mentre per C metti 100nF).

Per attivare le pull-up interne, quando nel setup() dichiari i pin di input con la pinMode() usa la sintassi:

pinMode(NumeroPin, INPUT_PULLUP);

... dove NumeroPin è il numero del pin che definisci di input e INPUT_PULLUP indica che lo vuoi, appunto, in INPUT ma con la pull-up attiva.

A questo punto, se il pulsante NON è premuto, tu leggerai HIGH grazie alla pull-up, mentre quando lo premi, esso dovrà chiudere verso GND e leggerai LOW.

Spero sia tutto chiaro.

Guglielmo

debouncing_hw.pdf (22.8 KB)

si è tutto chiaro, sei stato tempestivo e prezioso nelle risposte e nei consigli. A questo punto direi che lo schema elettrico è definito e posso cominciare la ricerca componenti e l' assemblaggio.

Ciò che dice Guglielmo, come sempre, è vero; in questo caso, però, se non devi leggere due pressioni consecutive dello stesso tasto ma ogni pressione ripetuta è ignorata essendo in attesa di un tasto diverso, puoi non porti il problema dell'antirimbalzo. Usa le resistenze di pull-up interne con i pulsanti verso massa e basta.

Datman:
... puoi non porti il problema dell'antirimbalzo.

Dato che male non fa ed è quello che si deve sempre fare quando si usa un pulsante su una porta logica, molto meglio NON diseducare un utente (... alle prime armi che sta imparando), che dare consigli validi si, ma solo per casi specifici ... non credi ? ? ? ::slight_smile:

Guglielmo

DatMan la condizione che hai descritto è valida solo in parte, forse mi sono spiegato male.

Premendo il tasto blu avviene una commutazione verso l' avanti, quindi la leva di direzione che normalmente si trova in posizione neutra si sposta in avanti su posizione di marcia avanti. Premendo il tasto nero la leva si sposta indietro tornando su posizione neutra, premendo di nuovo il tasto nero la leva si sposta di nuovo indietro su posizione marcia indietro. I due tasti quindi attivano lo spostamento in una direzione o l' altra, quando la leva si trova all'estremità ( tutta avanti o tutta indietro ) avrò bisogno di due pressioni dello stesso tasto (non ravvicinate) per raggiungere l' opposto. Questa commutazione avviene in simulazione, vorrei assegnare un tasto a ogni direzione eliminando di fatto la pressione dello stesso tasto due volte. Tutto questo è valido solo per i pulsanti dedicati alla marcia, gli altri pulsanti invece hanno la funzione On-OFF quindi una pressione attiva la successiva disattiva. Scusate se mi sono dilungato ma volevo chiarire il concetto della funzione.

Ora mi sorge un dubbio "meccanico". Ho comprato buona parte del materiale, i potenziometri hanno una corsa di circa 280 gradi, diciamo che tenendo buono il punto zero io gli voglia far fare una corsa di appena 140 gradi, quindi circa la metà. Sarà possibile tramite la programmazione della funzione escludere la percentuale non usata?
Quindi assegnando la funzione al potenziometro potrò dirgli di considerare come range di funzionamento 0-100% la corsa compresa tra 0 e 512? Se ciò non fosse possibile dovrei girare l' asse di corsa della leva legata al potenziometro cambiando di fatto il layout del banco.

Un potenziometro non ha una corsa di 360° (almeno io personalmente non ne conosco), ma comunque il cursore da un lato chiude con un contatto e dall'altro chiude con l'altro quindi hai comunque l'intero range di valori di resistenza nell'intervallo del valore massimo del potenziometro.

Se tu invece dei 240° ne usi solo una parte ... dovrai via software considerare l'estremo a cui arrivi come tuo massimo e quindi rimappare il tutto in modo che dal valore minimo assunto dal potenziometro, al valore massimo, tu consideri un valore da 0% a 100% :wink:

Guglielmo

Grazie Guglielmo era quello che supponevo, in realtà mi aspettavo che la corsa meccanica del potenziometro fosse più limitata, a conti fatti forse per il mio utilizzo sarebbero andati meglio potenziometri a scorrimento, anziché rotativi.

Eccomi di nuovo al pezzo, allora ho cominciato a scrivere lo " sketch ", posso continuare qui o è meglio spostarmi sulla zona software aprendo una nuova discussione? Grazie