Salve a tutti! da ieri sto avendo dei problemi con Arduino Mega. Non sapendo se e un problema software o hardware scrivo qua in "generale" sperando di non far incavolare nessuno.. . Essendo alle primissime armi, volevo far accendere e restare acceso un led tramite pulsante. Il problema nasce su un secondo pulsante installato sulla parte sinistra della breadboard( allego uno screen di fritzing). Questo pulsante quando e spento mostra, tramite il monitor seriale, valori altalenanti di 0 e 1 quando invece dovrebbe restare fisso su 0 se non premuto. Allego un altro screen in cui e visualizzato il codice e la finestra del monitor seriale. Premetto che i cavetti sono tutti ben collegati. Cosa puo essere successo? e la breadboard o arduino che fa difetto? vi ringrazio per la grossa mano che mi darete..
int pulsante;
int pulsante2;
int stato=0;
int stato2=0;
void setup(){
pinMode(6,OUTPUT);
pinMode(7,INPUT);
pinMode(11,INPUT);
Serial.begin(9600);
pinMode(8,OUTPUT);}
void loop(){
pulsante=digitalRead(11);
if ((pulsante==1) and (stato==0)){
digitalWrite(8,HIGH);
stato=1;
delay(300);}
else if ((pulsante==1) and (stato==1)){
 digitalWrite(8,LOW);
 stato=0;
 delay(300);}
Â
 pulsante2=digitalRead(7);
 Serial.println(pulsante2);
}
Premesso che l codice, in conformità al REGOLAMENTO, punto 7, DEVE essere racchiuso tra i tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra) e non tra i tag QUOTE, a me comunque sembra che il bottone coinvolto sia quello sulla parte "destra" della breadboard (... dato che leggi il pin 7).
Correttamente hai messo delle resistenze di pull-down verso massa, quindi, effettivamente, il valore del pin 7, in assenza di pressione dovrebbe essere LOW (0).
Un'oscillazione tra 0 e 1 di tale pin può indicare un cattivo contatto o un malfunzionamento della MCU.
Fai una prova, metti con un filo direttamente a massa il pin 7 e verifica che il valore sia stabile a LOW (0), così ti togli il dubbio sulla MCU ... se tutto va bene, riverifica il cablaggio ... magari hai sbagliato una connessione sulla breadboard.
ho collegato il pin 7 a massa e dal monitor seriale mi dice sempre la stessa cosa, valori oscillanti senza toccare nessun pulsante.. ho fritto arduino? l'altro pulsante funziona bene e accende e spegne il led.
cmigoni:
ho collegato il pin 7 a massa e dal monitor seriale mi dice sempre la stessa cosa, valori oscillanti senza toccare nessun pulsante.. ho fritto arduino?
.. beh ... un pin messo a massa che in lettura continua a dare valori a caso ... non è esattamente un buon segno
grazie a tutti per le risposte.. ma com'e possibile che dopo una settimana si frigga arduino? :o ho sempre e solo acceso e spento dei led e son stato sempre attento a polarità ..
cmigoni:
ho sempre e solo acceso e spento dei led e son stato sempre attento a polarità ..
Se il LED li hai collegati come nel tuo schema ... allora è normale !!!
I LED sono dei diodi e occorre LIMITARE la corrente che ci scorre quindi occorre mettere in SERIE (... come ti ha già indicato Uwe) una resistenza (... che non c'è sul tuo schema o che comunque è collegata male).
Ti rammento che ogni pin di Arduino può dare al massimo, a Vcc, 40 mA (... ma quello è veramente un limite, nel normale funzionamento occorre stare al 60-70% di detto valore) ed inoltre la somma di tutti i pin e dell'assorbimento del chip, non deve superare al massimo i 200 mA (... e anche qui massimo va considerato come valore limite, ma nel normale funzionamento occorre stare al 60-70% di detto valore). Assorbimenti oltre detti limiti possono danneggiare irrimediabilmente il chip.
Se tu colleghi il LED come lo hai disegnato ... praticamente crei un corto tra il pin 8 e la massa ...
... con le conseguenze del caso !
Guglielmo
P.S.: Consiglio la lettura di QUESTA traduzione di un articolo in inglese fatta da Leo
mi scuso ma per l'agitazione ho fatto male il disegno su fritzing, non fa massa col pin 8. Il test l'ho fatto sul pin 12 e i valori sono sempre oscillanti!
Mmmm ...
... senti facciamo una cosa, togli tutto collega solo il pin a massa, dopo di che fai girare questo programma :
const byte numeroPin = 7;Â // qui metti il pin che vuoi provare
void setup() {
 delay(1000);
 Serial.begin(9600);
 pinMode(numeroPin, INPUT);
}
void loop() {
 Serial.println(digitalRead(numeroPin));
 delay(100);
}
... cambiando solo il valore della costante che indica il pin puoi verificare i vari pin. Controlla con quali pin funziona (ovvero da sempre 0) e con quali no.
la ringrazio tantissimo! allora il risultato e che i pin tra il 2 e 13 collegati direttamente con la massa tramite il codice da lei indicato danno sempre zero..e ci siamo! :). Diverso e il discorso per la breadboard. collegando il gnd nella prima fila orizzontale e poi collegandoci nella stessa fila i pin risulta che: nella parte destra nessun problema.. nella parte sinistra il valore oscilla.
Ok ... hai una breadboard di quelle separate a metà ...
... dei fare un ponticello sia per i positivi che i negativi tra una metà e l'altra.
Guglielmo
*P.S.: Si, purtroppo esistono, sono quelle di più bassa qualità . Quelle un po' più serie hanno il collegamento che è continuo, quest'altre sono fatte unendo due pezzi separati *
Ci sono breadbord che non hanno collegato tutta lunghezza delle file esterne ma sono 2 pezzi divisi al centro. Fa un controllo e prelievi la massa per il pulsante dalla stessa metá dove hai collegato la massa del Arduino.
Ciao Uwe
si e proprio così! ho fatto un test e la massa non arrivo nella seconda metà ! Che sospiro di sollievo! mi sembrava strano che si potesse bruciare così facilmente!! Vi ringrazio tutti per il consulto!!