led e pulsanti

salve a tutti, dopo un anno di esercito riprendo da 0 con il mio Arduino Uno, starter kit! (:

Ho deciso che dopo ogni progetto, con le cose che ho imparato, voglio fare tutte le prove possibili, solo con le conoscenze acquisite alla fine del progetto.

Dubbio: 3 led, 4 pulsanti, ogni pulsante accende un led, se li premo contemporaneamente, accendo i 3 led insieme. Con il 4° pulsante, vorrei farli accendere contemporaneamente.
Bene, proprio non ci arrivo.

Grazie (:

Scusa, hai 4 pin in ingresso, li leggi uno dopo l'altro e ti comporti di conseguenza ...

... primo premuto? accendo led 1; secondo premuto? accendo led 2; terzo premuto? accendo led 3; quarto premuto? accendo led 1, 2 e 3

O ho capito male quello che vuoi far ? ? ?

Guglielmo

Sto usando arduino solo come alimentazione, è ancora pura elettronica

... vuoi farlo con componenti discreti ? ? ? ... bastano 3 diodi e 3 resistenze :smiley:

Guglielmo

Quindi 3 led, 3 pulsanti e una resistenza non mi permette di farlo? E inutile che impazzisco a provarci? :grin:

... è già concettualmente sbagliato il pensare di collegare 3 LED con una sola resistenza, dato che li devi accendere in tempi differenti ... poi .. come faresti con il 4° bottone ? ? ? :smiling_imp:

Guglielmo

Chiedo scusa per lo schifo… :slight_smile:

(allegato)

Approfitto per fare un’altra domanda:
perchè il libro nello starter kit, quando uso arduino come alimentazione mi fa mettere la resistenza dal + all’anodo del led, e quando invece uso i pin digitali, me la fa mettere dal catodo a massa?

11653214_10207311703537477_436347321_n.jpg

I LED funzionano in "corrente" ... NON puoi mettere UNA resistenza ... ne devi mettere UNA per ciascun LED in modo che la corrente che in esso scorra sia come da specifiche del LED !!!

I diodi ti serviranno per accenderli tutti e tre con il 4° bottone ...

Guglielmo

Però se dovessi accenderli uno alla volta, quella resistenza andrebbe bene, no?

Ho aggiunto una domanda al post precedente (:

Non ha importanza se la resistenza la metti sull’anodo o sul catodo, tanto il suo scopo è comunque quello di limitare la corrente.

Il valore della resistenza è funzione della tensione di alimentazione e del colore del LED … guarda la tabella allegata.

Guglielmo

Perfetto. Ora nel progetto 2, mi parla di resistenza di pull-down. Gia quando la sentii la prima volta, andai a cercare il significato, e chiesi anche qui, ma non mi è ancora chiaro. Una sua funzione (in parole molto povere) è quella di evitare errori nella lettura di HIGH o LOW. Ma le altre funzioni, proprio non riesco a capirle...

NO, la funzione è una sola, tenere il pin a cui è collegata in uno stato determinato (se è pull-up lo tiene HIGH, se è pull-down lo tiene LOW).

I pin in ingresso sono ad alta impedenza e, se lasciati liberi, senza nulla collegato ... percepiscono anche il volare di una mosca :smiley: :smiley: :smiley:

Per dargli quindi una condizione stabile (HIGH o LOW che sia) si usano le resistenze.

Guglielmo

Ho capito. Ma lo stesso non mi è ben chiaro cosa succede praticamente.

E guardando questo http://arduinotutorial.altervista.org/resistenza-di-pull-updown/ comunque non capisco come vanno collegati praticamente… E poi la resistenza in questo caso come va scelta?
Purtroppo il libro dello starter kit trascura alcune cose

… e cosa vuoi che succeda ? :smiley:

Colleghi un pin verso massa o verso Vcc con una resistenza ed è chiaro che quello starà o HIGH o LOW. Se poi con una “resistenza” più bassa (circa ZERO nel caso di un interruttore) lo colleghi al segnale opposto (… e non creerai un corto perché la corrente verrà appunto limitata dalla resistenza) avrai che leggerai la condizione in cui il pulsante lo porta :slight_smile:

Come ti ho detto … servono a creare una “situazione stabile e determinata”.

Per la scelta, normalmente considera 10K … senza che ci addentriamo in calcoli teorici sulle impedenze di ingresso :wink:

Questo valore può cambiare in casi particolari, es. per il bus I2C … ma li il discorso si complica ancora di più … ::slight_smile:

Guglielmo

Mi sento veramente stupido, ma continuo a non capire…
Se collego un pin (settato su input) verso massa, con la resistenza o senza, non leggerà sempre LOW?
Cos’è “Vcc”?
E in che senso collegare il pin con un pulsante al segnale opposto?!
(sono proprio alle basi… :-[ )

Approfitto per un’altra domanda:

Progetto 02: premendo il pulsante, i led lampeggeranno in un certo modo. Ho fatto le mie prove, i miei esperimenti. Cioe 3 pulsanti e 3 led; premendo un pulsante, i led lampeggiando in un certo modo, premendo l’altro pulsante, lampeggiando in un altro modo, e in un modo diverso per il 3.
Domanda stupida:

se il pulsante non e premuto, il led verde è accesso e i 2 led rossi sono spenti, ma se lo premo, i due rossi lampeggiano simultaneamente

puls3 = digitalRead (9);
if (puls3 == HIGH) {

  digitalWrite (4, LOW);
  digitalWrite (5, LOW);
  delay(500);
 
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  delay (500);

ora, se volessi far lampeggiare due volte il verde, poi spegnerlo e iniziare con il lampeggio dei due rossi, devo fare qualcosa di particolare?

mattoide:
...
(sono proprio alle basi... :-[ )

Emmm ... anche meno delle basi ...

Guarda, fermati un attimo e fai 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.

Sono le basi, dagli una bella letta e poi riprendiamo :wink:

Guglielmo

P.S.: Non posso metterti il link perché ... pur essendo Nuova Elettronica ormai fallita, comunque il materiale è soggetto a copyright ... ma vedrai che lo trovi al primo colpo :wink:

SI molto meno delle basi!
Comunque gia lo studio quel libro. E vado passo passo anche con "Linguaggio di programmazione C" di Kernighan e Ritchie. E faccio riferimento anche al "Deitel"

… GND è la massa di riferimento, Vcc è la tensione di alimentazione, nel caso di Arduino UNO vale 5V.

Poi, ecco un esempio di come usare una pull-down …

                 +Vcc
                  |
                   /   Switch
                  | 
pinInInput -------+
                  |
                  <
                  >    Resistenza
                  <
                  |
                 GND

… quando il pulsante è aperto il pin viene tenuto LOW dalla resistenza, quando il pulsante è chiuso viene portato HIGH.

Chiaro adesso ?

Guglielmo

Limpido, grazie mille.!!!

E se non si usasse questa resistenza, oltre al fatto di una lettura errata, cosa potrebbe succedere?

E per la resistenza di pull up?

mattoide:
E se non si usasse questa resistenza, oltre al fatto di una lettura errata, cosa potrebbe succedere?
E per la resistenza di pull up?

Se non usi quella resistenza, quando lo switch è aperto ... sul pin NON hai una condizione stabile, quindi ... una volta leggi LOW e un altra leggi HIGH completamente a caso ... :smiley:

Per la pull-up ... semplicemente inverti lo switch con la resistenza ... il pin viene tenuto normalmente HIGH dalla resistenza verso +Vcc e viene portato LOW quando chiudi lo switch ... tutto qui :wink:

Guglielmo