Vorrei mettere un puldown sui piedini che uso in input.
Leggo che "A pin may also be configured as an INPUT with pinMode, and subsequently made HIGH with digitalWrite, this will set the internal 20K pullup resistors"
Come ti hanno già spiegato il micro prevede solo delle pull up integrate, i casi sono due o metti esternamente delle pull down oppure inverti la logica di lettura dell'ingresso digitale e usi le pull up integrate.
Qui sotto un esempio di collegamento in pull-down su un dip-switch 8pin (che poi ho modificato in pull-up così mi risparmio 8 resistenze, lo spazio sul pcb ed ho solo invertito la logica dello sketch che lo legge):
Perche' secondo me' e' un sano esercizio
Nella pratica comune attuale degli impianti di automazione si usa il negativo come comune ( Input ed Output ) connesso pure a terra
Creando quindi un impianto FULL PNP
Il vantaggio consiste che infili il puntale negativo del tester su qualsiasi presa di negativo/massa e col puntale positivo testi ingressi ed uscite senza dover pensare come infilare i suddetti puntali
Almeno questo e' il mio pensiero
Anche perche' scrivere if not per identificare qualcosa che esiste ....
Perche' secondo me' e' un sano esercizio
Nella pratica comune attuale degli impianti di automazione si usa il negativo come comune ( Input ed Output ) connesso pure a terra
Creando quindi un impianto FULL PNP
Il vantaggio consiste che infili il puntale negativo del tester su qualsiasi presa di negativo/massa e col puntale positivo testi ingressi ed uscite senza dover pensare come infilare i suddetti puntali
Almeno questo e' il mio pensiero
Non vedo il problema del puntale che devi spostare. Basta sapere cosa misuri e dove misuri.
brunol949:
Anche perche' scrivere if not per identificare qualcosa che esiste ....
È un problema che Ti fa Tu, ma in realtá non é un problema.
Come è stato detto, l'Atmega ha resistenze interne solo di pull-up.
La libreria è stata scritta da uno degli sviluppatori del software per le schede Wiring per cui probabilmente queste forse hanno dei chip che supportano anche tali resistenze, non lo so. Sta di fatto che per togliersi i dubbi, basta aprire la libreria ed andare a vedere le funzioni incriminate. Vedrete che la pulldown non fa niente:
|| Set pin HIGH as default
*/
void Button::pullup(void){
mode=PULLUP;
digitalWrite(pin,HIGH);
}
/*
|| Set pin LOW as default
*/
void Button::pulldown(void){
mode=PULLDOWN;
//digitalWrite(pin,LOW);
}
digitalWrite(pin, LOW) è commentato per cui non è funzionante. Ciò perché sull'Arduino esiste solo la modalità interna pullup.
Comunque non fa altro che modificare la logica di lettura del bottone.
Secondariamente. Cmq, NON attiva nessuna pull-down interna perché non c'è.
Ma, dico io, ma ti serve proprio questa libreria? Siccome mi pareva che tu la usassi perché volevi mettere una pull-down, e visto che ti è stato detto che le pull-down interne non ci sono e che quindi devi usare quella esterna, a che ti serve questa libreria?
Metti una R da 10K verso massa sulla linea in ingresso al pin e poi leggi il pulsantino con un if verso HIGH. Tutto qui.
Si leo è chiaro che non c'è nessuna digitalWrite da commentare...
Probabilmente rispetto al codice che hai postato tu avendola portata su Arduino han proprio tolto anche la riga commentata proprio perchè non c'è alcuna pulldown.
La documentazione definisce:
void pullup()
Changes the Button mode to a pullup configuration
void pulldown()
Changes the Button mode to a pulldown configuration
Quindi non è altro, come ho detto, che una modifica alla logica di lettura del bottone.
In ultimo, non devi chiedere a me se mi serve o no la libreria. La libreria è saltata fuori perchè l'esempio di acik la utilizzava e quindi lui, vedendo pulldown è stato portato a credere certe cose. Per quanto riguarda me non conoscevo nemmeno l'esistenza di tale libreria.