pin 0 perchè non va?

Ciao, ho un led ed un pulsante se lascio il pulsante sul pin 0 il led è sempre acceso se invece metto BUTTON 1 funzia tutto correttamente....qualche dritta?

#define LED 4
#define BUTTON 0

int val = 0;

void setup() {
pinMode(LED, OUTPUT);
pinMode(BUTTON, INPUT);
}

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

if (val == HIGH) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}

Il pin 0 e il pin 1 sono utilizzati dalla comunicazione seriale, utilizzane altri!

Il pin 0 e il pin 1 sono utilizzati dalla comunicazione seriale, utilizzane altri!

Ma bl4d3 nel suo sketch non usa la seriale, quindi i pin 0 e 1 potrebbe usarli.

Come hai collegato il pulsante ed il led e su quali pin di arduino?

il pulsante a 5v ed a gnd con resistenza, il led è sul pin 4 e gnd.
grazie

sa la USB è collegata, non vorrei che comunque su TX e RX arrivi GND...
il led ha la resistenza vero?!?!

il pulsante a 5v ed a gnd con resistenza

Non si riesce comunque a capire come hai fatto il circuito, sicuro di aver fatto bene i collegamenti?
Il pulsante dove lo hai collegato su arduino, pin 1 o 0?
Guarda ad esempio come viene collegato il pulsante in questo link: http://www.arduino.cc/en/Tutorial/Button

ripeto; non usate i pin 0 e 1. Sono riservati per il collegamento alla USB.
I pin hanno delle tensioni e per questo influenziano il pulsante.
Ciao Uwe

Ok, grazie mille a tutti, devo passare ad un arduino mega allora, è possibile collegare l'ethernet shield? Qualche tutorial?

Ciao bl4d3, frena un attimo

Se a progetto finito fai il pcb e inserisci solo l'atmega programmato da un arduino i pin 0 e 1 puoi usarli eccome, diventano come due pin normali quindi non ha senso usare un mega se i pin di un 2009 o di un uno ti bastano.

L'unica accortezza è quella di non usare in fase di progettazione i pin 0 e 1, usi altri due pin che ne so, 2 e 3 poi a fine programma quando devi scrivere sul microcontrollore rimetti a posto le cose.

Se prevedi di usare la seriale oppure di fare uno shield da incastrare sopra un arduino, allora come non detto.

Se usi un l'ethernet shield quello usa i pin 0 e 1 perché collegato in seriale. Non si pone la discussione di LED o pulsanti sul pin 1 e 0. é impossibile da principio. Edit: ho sbagliato e mi pento :wink: :wink:
I pin analogici possono essere usati come pin digitali. Semplicemente usandoli come quelli digitai (pinMode(), digitalWrite() e digitalRead()) e diventano i PIin 14 a 19.
Ciao Uwe

Uwefed, l'ethernet shield non usa la seriale ma si collega tramite i pin digitali 10, 11, 12 e 13 (SPI)
Non è da te fare queste cappellate, vedi se hai la febbre :slight_smile:
Ovviamente scherzo Uwe... grande lo stesso come sempre

Pelletta, ma sei sicuro che tutti gli ethernet shield usano la SPI??

OK. ho sbagliato. Buona notte. Uwe

ma sei sicuro che tutti gli ethernet shield usano la SPI?

Non ne ho la certezza, ho soltanto l'ethernet shield ufficiale prima versione e quella non ufficiale di nuelectronics, ma queste due non usano la seriale
Ho anche fatto una scheda relè, se fai caso sotto l'ethernet shield c'è il max 232 e il connettore seriale e fin'ora non ho riscontrato problemi (non ho ancora finito di programmarla però)

uwefed:
I pin analogici possono essere usati come pin digitali. Semplicemente usandoli come quelli digitai (pinMode(), digitalWrite() e digitalRead()) e diventano i PIin 14 a 19.

Giusto per ricordarlo e perche' io mi trovo bene con questa nomenclatura, dagli ultimi IDE puoi usare al posto di 14 15 ecc per i pin analogici, A1 A2 fino ad A5.

quindi il pin 0 che credevo analogico può essere utilizzato come digitale
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);

pinMode(A0, INPUT);
digitalRead(A0);

?

Si stava parlando del pin 0 collegato alla seriale, quindi D0. Quello è digitale.

Cmq, quelli definiti "analogici" (da A0 a A5) lo sono solo in ingresso, in uscita funzionano come pin digitali. Solo alcuni pin marcati "~" o "PWM" possono essere usati in uscita in modulazione di larghezza d'impulso.