Problema sull'uso di un pulsante.

Ciao a tutti, sono nuovo sia nel forum che nel mondo di arduino, infatti a quanto pare ho cominciato già a far danni :P. Allora vi espongo il mio problema, ho acquistato un arduino Mega 256 r3 da poco, dopo aver provato ad a far lampeggiare un led (quello del pin 13) ho deciso di provare ad accenderlo con un pulsante, il problema è che essendo elettricista a intuito ho collegato il pin dei 5v tramite il pulsante al pin 7 digitale, ho dato qualche impulso ma niente, credevo che se non premo è 0 se premo e riceve i 5v è 1 XD. Ma a quanto pare non è così infatti nn ha funzionato, e per giunta cercando in rete oltre a trovare il modo giusto per usare un pulsante cn arduino ho letto anche che il modo usato da me è sbagliatissimo, ora vorrei sapere da voi cosa ho combinato in realtà a livello hardware, se ho bruciato qualcosa... anche se la scheda continua a funzionare e a vederlo il pin non sembrerebbe bruciato inoltre l'ho riprovato col giusto collegamento e funziona. Vi prego toglietemi questo dubbio!!! Grazie in anticipo.

Maxduino:
Ciao a tutti, sono nuovo sia nel forum che nel mondo di arduino, infatti a quanto pare ho cominciato già a far danni :P. Allora vi espongo il mio problema, ho acquistato un arduino Mega 256 r3 da poco, dopo aver provato ad a far lampeggiare un led (quello del pin 13) ho deciso di provare ad accenderlo con un pulsante, il problema è che essendo elettricista a intuito ho collegato il pin dei 5v tramite il pulsante al pin 7 digitale, ho dato qualche impulso ma niente, credevo che se non premo è 0 se premo e riceve i 5v è 1 XD. Ma a quanto pare non è così infatti nn ha funzionato, e per giunta cercando in rete oltre a trovare il modo giusto per usare un pulsante cn arduino ho letto anche che il modo usato da me è sbagliatissimo, ora vorrei sapere da voi cosa ho combinato in realtà a livello hardware, se ho bruciato qualcosa... anche se la scheda continua a funzionare e a vederlo il pin non sembrerebbe bruciato inoltre l'ho riprovato col giusto collegamento e funziona. Vi prego toglietemi questo dubbio!!! Grazie in anticipo.

cerca di essere ottimista non credo che tu l'abbia bruciato :slight_smile:
...semplicemente non funziona bene perchè ci sono correnti parassite: se tocchi il pin, non avendo una resistenza di pulldown che ti scarica a massa lui vede 1 anche se è 0... comunque non dovrebbe bruciare nulla perchè dentro hanno messo anche un diodino zener che eventualmente scarica l'eccesso se non si esagera.
a livello di sorgente dovresti assicurarti di non aver dichiarato il pin dell'interruttore come output: l'ideale sarebbe dichiararlo come input ma se lo lasci da dichiarare (istruzione pinmode) dovrebbe di standard prendere l'input...
penso che tu abbia capito cosa devi fare: una resistenza tra pin e massa per scaricare a terra le spurie o l'uso della resistenza interna attivabile via software (che però funziona contraria)

Se colleghi un entrata tramite un pulsant a +5V hai 5V sull'entrata quando azioni il pulsante ma niente di definito quando non lo premi. Puoi dare un valore definito all'entrata collegando una resistenza tra entrata e massa. Se il pulsante non é premuto la resistenza lo porta a LOW. Se premi il pulsante quello la porta a HIGH e (circola una corrente attraverso la resistenza). La resistenza in questo caso viene chiamata pulldown. Se metti il pulsante a massa e la resistenza a +5V ottieni valori invertiti come stato del pulsante e la resistenza si chiama Pullup.
Arduino ha delle resistenze interne pullup che attivi scrivendo digitalWrite(pin,HIGH) al pin precedentemente desso come entrata. Con digitalWrite(pin,LOW) lo spegni.

Ciao Uwe

Uwe ma la resistenza non ? solo sul piu 13?

Le resistenze interne che dice Uwe stanno integrate dentro l'atmega, quella del pin 13 che dici tu è un'altra cosa, serve solo per limitare la corrente al led montato sull'arduino

Ah ok,
Ma il principio ? lo stesso no?
Solo che ? fatto a livello di micro, giusto?

Sono resistenze di pullup, quindi collegate al pin e all'alimentazione.
Non si possono usare per limitare la corrente di led o altro

francesco84:
Uwe ma la resistenza non ė solo sul piu 13?

Se intendi la resistenza per poter collegare un LED direttamente al pin 13: non esiste piú dalla versione Arduno NG.
Gli Arduini fino al 2009 compreso hanno un LED collegato con una resistenza su pin 13. L'Arduino UNO ha anche un amplificatore operationale per disacoppiare il LED dal pin e percui il LED non carica il pin.
Ciao Uwe

uwefed:
L'Arduino UNO ha anche un amplificatore operationale per disacoppiare il LED dal pin e percui il LED non carica il pin.

Questo dal modello R3, i precedenti hanno ancora la linea con resistenza e LED parallela al pin D13 .

Ok raga ora mi è tutto chiaro...solo che dovevo informarmi prima anzichè fare di testa mia XD!! Quindi ricapitolando, il fatto che io abbia mandato col pulsante 5v direttamente sul pin digitale 7 (con digitalWrite, INPUT) senza alcuna resistenza, e dato che i pin digitali possono assorbire massimo 40mA in teoria avrei danneggiato qualcosa?? Perchè in pratica sembrerebbe di no... Poi avrei un'altra curiosità, nella maggior parte dei tutorial sui pulsanti sia in pull-up che in pull-down trovo sempre una resistenza da 10k, è un caso o c'è una regola da rispettare?? Come mai si usa una da 10k? Grazie per la vostra consulenza... :slight_smile:

Maxduino:
Ok raga ora mi è tutto chiaro...solo che dovevo informarmi prima anzichè fare di testa mia XD!! Quindi ricapitolando, il fatto che io abbia mandato col pulsante 5v direttamente sul pin digitale 7 (con digitalWrite, INPUT) senza alcuna resistenza, e dato che i pin digitali possono assorbire massimo 40mA in teoria avrei danneggiato qualcosa?? Perchè in pratica sembrerebbe di no... Poi avrei un'altra curiosità, nella maggior parte dei tutorial sui pulsanti sia in pull-up che in pull-down trovo sempre una resistenza da 10k, è un caso o c'è una regola da rispettare?? Come mai si usa una da 10k? Grazie per la vostra consulenza... :slight_smile:

  1. i pin sono fatti per lavorare a 5V per cui se colleghi 5V ad un pin non fai nessun danno.
  2. i 40 mA sono riferiti alla corrente che un pin può EROGARE
  3. è il valore minimo per dare il segnale a pin non collegato senza che passi eccessiva corrente. Valori corretti sono sui 10/20/30K.