Mi sa di aver fatto danni...

Avevo collegato tutto ad arduino con uno schema (IN ALLEGATO) e poi ho caricato uno sketch per leggere dal pin 7. Il problema e che nello sketch non avevo dichiarato che il pin 7 doveva essere di input e perciò quando sono andato a testare il programma non succedeva nulla. Pensate che ho fatto qualche danno in quanto il pin 7 non era dichiarato come input? :o :confused:

All'Accensione ( e fino a che non lo dichiari ) il pin è automaticamente come INPUT, quindi non puoi aver fatto danni

NO, non hai fatto danni ...
... magari leggiti QUESTO simpatico articolo. :slight_smile:

Guglielmo

Brunello:
All'Accensione ( e fino a che non lo dichiari ) il pin è automaticamente come INPUT, quindi non puoi aver fatto danni

E se invece lo avevo dichiarato come output?

Ernesto079569:
E se invece lo avevo dichiarato come output?

L'articolo sopra citato spiega anche quel caso :wink: ... studiatelo bene !

Guglielmo

{Modo n° 2: mettere in corto i pin fra di loro
COME
Configurate 2 pin di I/O come output e poi impostatene uno su high e l’altro su low. Adesso collegate tra di loro i pin. Avete creato una condizione di sovracorrente su entrambi i pin di I/O che li distruggerà entrambi.
PERCHE’
Il percorso della corrente è simile a quello illustrato nel Modo n° 1 illustrato qui sopra con la differenza che il percorso di ritorno verso massa è attraverso il microcontrollore. }

Comunque io non lo avevo dichiarato proprio quindi era come INPUT o OUTPUT?

Al "reset" (quindi all'avvio), tutti i pin digitali vengono posti in "Tri-State / INPUT / Hi-Z" (... ovvero, facendo riferimento al datasheet ed alle porte: DDRx = 0x00) quindi ... non ti preoccupare.

Guglielmo

Quindi era in input all avvio... ma allora perche il pulsante non andava quando lo premevo...

QUALE programma ? ? ? :o

Metti il codice( ... mi raccomando, in conformità al regolamento, punto 7, racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> ... primo a sinistra).

Guglielmo

const int BUTTON = 4;

int val = 0;

int old_val = 0;

int stato = 0;

void setup() {
  Serial.begin(9600);

pinMode(BUTTON,INPUT);

}
void loop() {
val=digitalRead(BUTTON);

if ((val==HIGH) && (old_val==LOW)){
  stato=stato+1;
  delay(1000);
}
old_val=val;

 Serial.println(stato);
}

Praticamente all'inizio i pin se non dichiarati sono input o output?? Qui sopra lo sketch che mi ha chiesto Guglielmo

Ernesto079569:
Praticamente all'inizio i pin se non dichiarati sono input o output??

Ancora con questa domanda ? Non so più in che lingua dirtelo ...

Ah ... OVVIAMNETE quel codice NON ha funzionato ... tu chiedi se hai fatto danni al pin 7 ... peccato che ne codice ... leggi il pin 4 ... mi avrebbe meravigliato se avesse funzionato ! :smiling_imp:

Guglielmo

No caro Guglielmo il pulsante era collegato al pin 7 ma ancora non ho capito e scusa se te lo richiedo i pin all'avvio sono input o output??

Certo che il bottone era collegato al pin 7 ... peccato che il TUO software legge il pin 4 ... !!! >:(

const int BUTTON = 4;

Per la domanda ... rileggiti il mio post #6.

Guglielmo

Risenti tutto allora...

-lo sketch legge il pin 7 (poi ho fatto una modifica e leggeva il pin 4) però non andava se il pin non era dichiarato come input...

  • Tu mi hai detto che all'inizio sono tri-state.. non cio capito molto percio sono input o output i pin non dichiarati?

-Ho fatto danni???

Tri-state = input (più o meno).

Mi auto-quoto:

gpb01:
... Tri-State / INPUT / Hi-Z"

... che parole vedi ? ... Tri-State, poi INPUT e poi Hi-Z ... quindi ... c'è ancora bisogno di chiedere ? ? ? >:(

Guglielmo

Toh ... carica questo programma :

void setup() {
  // put your setup code here, to run once:
  //
  // Come vedi NON metto il pinMode(7, INPUT) <<<<<<<<<<<
  pinMode(13, OUTPUT);
  digitalWrite(13,LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13, digitalRead(7));
}

e collega alternativamente il pin 7 a GND o a +Vcc e vedrai il LED seguire la cosa. Se lo lasci flottante, avrai idea di cosa succede solo avvicinando una mano al filo ad esso connesso (... al pin 7).

Guglielmo

Ma hai provato di usare il pin 7 attacandoci un LED con resistenza e mettendolo HIGH e LOW? funziona? sí? allora é ancora tutto funzionante.
Questa prova puoi fare con ciascun pin.
Ciao Uwe

gpb01:
NO, non hai fatto danni ...
... magari leggiti QUESTO simpatico articolo. :slight_smile:

Guglielmo

ciao Guglielmo, davvero bell articolo ti ho messo un +

sapero dei limiti da 20mA e 200 totali però avevo sempre pensato fossero sovradimensionati e non fossero un reale limite. un modulo come questo potrebbe danneggiare la scheda?

gpb01:
Toh ... carica questo programma :

void setup() {

// put your setup code here, to run once:
 //
 // Come vedi NON metto il pinMode(7, INPUT) <<<<<<<<<<<
 pinMode(13, OUTPUT);
 digitalWrite(13,LOW);
}

void loop() {
 // put your main code here, to run repeatedly:
 digitalWrite(13, digitalRead(7));
}



e collega alternativamente il pin 7 a GND o a +Vcc e vedrai il LED seguire la cosa. Se lo lasci flottante, avrai idea di cosa succede solo avvicinando una mano al filo ad esso connesso (*... al pin 7*).

Guglielmo

Ciao guglielmo si il tuo sketch funziona.. Ma non noto niente di strano per cio che dici tu.. :slight_smile: