Enorme problema.... arduino non funziona :O

Ragazzi ho un enorme problema.
Il mio arduino inizia a dare di matto.... se io imposto un pin digitale come OUTPUT questo mi da corrente sia che sia in HIGH sia che sia in LOW. Inoltre, secondo me, anche i pin settati come INPUT me li segna sempre come HIGH.

Quindi le opzioni sono due:

  1. O arduino è da cestinare...
  2. O io non so più come programmare...

datemi una mano... idee? può essere che sie partito l'atmega328?
come faccio a capire se il problema è lui ?

Grazie e BUONE FESTE

POST SBLOCCATO....

Iniziamo dal banale, oppure aspettiamo Uwe che ha la sfera di cristallo per leggere nel tuo pensiero...
Cosa succede se su Arduino carichi il blink?

Sono quá.
Di quale pin stiamo parlando? del PIN 0 o 1?
Togli tutto dal Arduino e riprova.
Ciao Uwe

Allora vi spiego... Alcuni pin (secondo me) funzionano... perche facendo andare uno schermo lcd che mi utilizza 4 pin digitali funziona... Pero stavo provando a far funzionare un tastierino 4*4 e niente non funzionava... Allora ho scritto un codice veloce... Ho settato il pin 2 come input... E il pin 13 come output
E ho messo una if che, se il pin 2 riceve corrente (e ció lo facevo collegando il pin 2 ai 5 v) mi doveva accendere il pin 13... Bhe qualsiasi cosa facessi... Appena accendevo la scheda il pin 13 (sia con un led esterno che con il led integrato nella arduino uno) si accendeva... Diventando più luminoso se collegavo il pin 2 ai 5v

Schema elettrico e codice per favore.

Hai messo una resistenza tra pin 2 e massa (pulldown)?
Ciao Uwe

Sicuramente questo può essere un problema, per questo chiedevo lo schema.

Però se dice che i led sono accesi e dando il segnale al pin la luminosità aumenta, mi viene da pensare che sul pin 13 all'inizio venga attivata la pull-up interna, che riesce a far illuminare leggermente i led, per questo pensavo ad un errore di codice e chiedevo anche lo sketch.

Vi mando tutto tempo 10 minuti.

Allora ho provato a caricare il blink e funziona alla perfezione su tutti i pin... mi sa che ieri sera ho scritto qualche porcata allora...
mi sorge una domanda... se va bene come stò cercando di affrontare il problema
io ho un tastierino numerico 4x4 (costruito da me su imitazione di quello di robotitaly) da pilotare con 8 pin: 4 per le colonne e 4 per per righe.
Io pensavo di fare una funzione del genere

//righe pin 0-3
//colonne pin 4-7
int tastiera(){
int out;
for(r=0,r<4,r++){
digitalWrite(r, HIGH);
for(c=0,c<4,c++){
if(digitalRead(c+4) == HIGH)
out=(r*10)+c;
}
}
return out;

in modo che ala fine la funzione mi ritorni un numero di due cifre dove la prima cifra mi indica la riga e la seconda la colonna, ad esempio 23 = riga 2 colonna 3 = numero 6

O hai scritto del codice errato oppure ci sono dei falsi contatti nella tastiera che hai costruito.

La logica mi pare corretta, anche se così facendo leggi sempre l'ultimo pulsante premuto in caso l'utente si diverta a premerne più di uno contemporaneamente perché non hai messo un'uscita forzata alla prima lettura positiva.

bhe mi accontento di questo per ora...
però il problema è che NON FUNZIONA....
VI trascrivo un codice di prova che ho caricato...

void setup() {                
    pinMode(0, OUTPUT);
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(4, INPUT);
    pinMode(5, INPUT);
    pinMode(6, INPUT);
    pinMode(7, INPUT);
  
}

void loop() {
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
if((digitalRead(7) == HIGH)||(digitalRead(6) == HIGH)||(digitalRead(5) == HIGH)||(digitalRead(4) == HIGH)){
digitalWrite(13, HIGH);
}
else{
digitalWrite(13, LOW);
}
}

il risultato è che spesso, tastiera connessa oppure no, il led 13 di arduino emette una quasi impercettibile luce dal led del pin 13 inserito sulla board. poi magari muovo un po la board e la luce si spegne, attacco la tastiera, premo un tastino e riemette questa lucina poi resta fissa, poi si spegne, a volte segue quello che premo sulla tastiera a volte va per i cavoli suoi... come se sul pin 13, nonostante il low ci fosse una corrente che va e che viene sufficientemente alta da permettere l'accensione del pin 13 (che teoricamente è normale...) ma questo pin non si accende più di così!!

P.S. arduino è alimentato con una batteria da 9v

E la dichiarazione del pin 13 come OUTPUT dove la mettiamo? :stuck_out_tongue_closed_eyes:
Serve anche quella altrimenti non funziona ed il pin si comporta come ti ho detto, ossia attivi la pull-up interna col risultato di avere una flebile lucina dal led.

2 cose....
dichiarata e funziona.... solo che i tempi tra accensione e spegnimento del led sono di 12 secondi circa :fearful:
come se impiegasse 12 secondi a fare un ciclo....

Se il codice è quello che hai messo, non vedo cose che possono generare un tale ritardo. Pubblica lo schema del circuito e ricontrolla la tastiera: non vorrei tu avessi qualche falso contatto.

ormai ho abbandonato la tastiera e utilizzavo un semplice contatto volante.... può essere che arduino sia diventato "super sensibile"?
mi spiego meglio io ho modificato il codice lasciando un contatto in input(il 7) e 2 in output( 13 e 3)
se collego con un cavetto 3 e 7 mi si accende il led per 7 secondi, ma il problema è un'altro se sfioro a mani libere lo strip (i buchini dove si inseriscono i fili per intenderci) all'altezza dell pin 7(quello di input) si illumina il led 13 e si spegne appena mi allontano.
o è diventato talmente sensibile da sentire le radiazioni che emetto ed illuminarsi.... oppure emetto corrente elettrica.
mi sorge una domanda.... a me un giorno fa mi è caduto arduino e mi si è staccato il chip... non è che megari lo ho montato al contrario? (mi pare assai strano ... non riuscirei ad uppare codice)

Se l'avessi montato al contrario non ti funzionava nulla, l'atmega328 non è uno specchio.
Semplicemente NON stai usando le resistenze di pull-up e quando tocchi i fili è come se mettessi gli ingressi sul LOW, quindi tranquillo che non sei improvvisamente diventato magico :wink:

Si ma non tocco nulla... tocco la plastica che isola il contatto!!!.... e poi al massimo io scaricherei a terra una piccola quantità di corrente.... e invece il 7 è in input e dovrebbe verificare che io gli stia inviando corrente..... e rimane il problema dei 7 secondi di ritardo ... adesso vado a procurarmi delle corde... mi appendo al soffitto per i piedi (così diventa materialmente impossibile che io scarichi a terra) e verifico se toccando arduino succede ancora....

P.S. qualcuno mi spiega velocemente cosa sono e come funzionano le resistenze pull-up e pull-down ?

So che non dovrei postare tanti post per richiamare attenzione... ma ci stò diventando matto e vorrei sapere se devo ordinare un nuovo arduino o cosa