Enorme problema.... arduino non funziona :O

No, ascolta, hai aperto un Topic con un problema chiaro, hai ascoltato alcuni suggerimenti ed il tuo Arduino sembra funzionare, se poi ti metti a fare il funambolo da circo non puoi pretendere che ti si dia spiegazione alle stravaganze che fai.
T'abbiamo chiesto più volte lo schema elettrico di ciò che hai realizzato, se è possibile vederlo allora si può tentare di suggerirti qualcosa, magari aggiungendo qualche spiegazione, se invece tu pensi di sparare che tanto un piccione cade sempre, sappi che non sempre uno può sparare in Piazza S. Marco. :wink:

lo schema del circuito è semplice... un interruttore che va dal pin 3 impostato come output al pin 7 impostato come input.... non mi pare che sia necessario disegnarlo.....
teoricamente il pin 13 dovrebbe spegnersi appena (o subito dopo) stacco l'interruttore e invece resta aperto per 7 8 secondi

void setup() {                
  pinMode(13, OUTPUT);     
  pinMode(7, INPUT);     
  pinMode(3, OUTPUT);     
}
void loop() {
  digitalWrite(3, HIGH);
if(digitalRead(7)==HIGH){
  digitalWrite(13, HIGH);
}
else{
  digitalWrite(13,LOW);
}
}

e questo è il codice caricato

OK, bastano come info. Hai due problemi:
1 – quando usi un pin di Arduino come ingresso, considerando che è ad alta impedenza, devi mettere una R di pull, in base al segnale che vai a leggere: se leggi un segnale HIGH metti una pull-down (cioè collegata a GND), se leggi un segnale LOW metti una pull-up (cioè collegata a 5V); in caso contrario quel pin ti legge di tutto.
2 – tutti i tipi di interruttori e pulsanti meccanici hanno la problematica dei cosiddetti rimbalzi, cioè a fronte di un qualsiasi movimento generano decine o centinaia di contatti, quindi è sempre necessario inserire un debounce software per ignorare questo effetto.
Almeno per ora, per veder funzionare il tuo circuito:
1 – metti una R da 10K circa tra il pin 3 e GND
2 – dopo la tua riga:
digitalWrite(3, HIGH);
aggiungi
delay(200);
Dovrebbe andare decisamente meglio la cosa.
Fammi sapere.

NON mi sono mai lamentato della lentezza del Forum ma ora è davvero troppo, è la terza volta che tento di pubblicare sto zz di post, la prima volta l’ho dovuto riscrivere di nuovo, spero di farcela prima o poi ]:smiley:

ok grazie mille.... ricapitolando.... a parte il delay che sapevo di doverlo mettere ma avendo scritto questo codice solo per testare il mio problema ero andato a risparmio :stuck_out_tongue:
per resistenza di pull-down/up ... se non ho capito male... sono resistenze normalissimo posta in modo da collegare il pin al ground.... in poche parole.... io ho nella mia tastierina 4 collegamenti impostati come output e 4 come input.... ai 4 come input metto lateralmente una resistenza di 10kohm che termina al gnd esatto?
GRAZIE MILLE...
domani vi faccio sapere se funziona :wink:

Come, come? Se è una tastiera da 16 tasti ognuno dei quali deve inviare il proprio carattere al microcontrollore, alla fine devi trovarti una matrice di 8 poli che andranno collegati ad altrettanti pin del micro, TUTTI impostati come INPUT, altrimenti hai voglia di scrivere!!
Sicuro di aver capiro bene lo schema da cui hai ricavato la tua tastiera? :fearful:

Se vai a vedere funziona cosi... 4 righe e 4 colonne le righe di input e colonne di output accendo la prima colonna e controllo che riga si accende... Se nn succede niente seconda colonna si accende e controllo righe... E via andare per tutte le colonne... Cosi posso controllare 16 tasti con 8 pin... (Scusa le abbreviazione ma sono sul cellulare)

Allora starai usando il 74C923, ok, io mi riferisco ad una comune tastiera passiva, 16 tasti a matrice 4x4 che poi controllo comunque con 8 pin di Arduino, ma tutti in modalità input, ogni tasto attiva due diversi pin ed è fatta, c'è pure una lib facile facile.
Ok, fammi sapere com'è andata con le prove.
Ciao

scusa... ma ti sbagli.... se i pin sono 8 (4+4) se sono tutti di input non trasmettono corrente ma la inviano, che segnale leggono?
Questa tastierina NON utilizza un encoder
la tastierina (che poi ho rifatto perchè mi si è rotta) è questa

e la spiegazione del funzionamento è questo

Comunque ultima domanda... secondo te usando le resistenze come mi hai detto scompare anche il problema dei tempi "secolari"

Quello che chiami ritardo secondo me è proprio l'effetto dei rimbalzi, quindi secondo me lo risolvi all'istante; riguardo la tastiera ho letto i link ed ho capito il funzionamento di ciò che stai facendo; io tempo fa ho testato un metodo un po' diverso, ma effettivamente lo standard attuale si basa sul sistema colonne/OUT e righe/IN.
Ciao.