Go Down

Topic: Leggere un digital in (Read 382 times) previous topic - next topic

erpomata

Sep 28, 2012, 06:23 am Last Edit: Sep 28, 2012, 06:30 am by erpomata Reason: 1
Ciao a tutti.
Non è la prima volta che lo faccio ma questa volta mi fa un comportamento strano.
Devo leggere 3 input digitali ma quando ne metto uno alto se ne mette anche un altro.
Dove sbaglio?

Sembrerebbe che me lo fa solo col pin 9, mi dice che è acceso anche il 10.
Se al posto del 9 imposto il 12 funziona regolarmente.
Anche se imposto 5/6/7 com pin tutto ok.
Problemi con la scheda?

Questo il codice:

Code: [Select]

int a = 8;
int b = 9;
int c = 10;
int aVal = LOW;
int bVal = LOW;
int cVal = LOW;
int general = 13;

void setup()  
{
 // Open serial communications and wait for port to open:
 Serial.begin(57600);
 while (!Serial) {
   ; // wait for serial port to connect. Needed for Leonardo only
 }


 Serial.println("Pronti");

 pinMode(a, INPUT);
 pinMode(b, INPUT);
 pinMode(c, INPUT);
 pinMode(general, OUTPUT);
 digitalWrite(general, LOW); // Spengo il led L sulla scheda
}

void loop() // run over and over
{
 aVal = digitalRead(a);  // read input value
 bVal = digitalRead(b);  // read input value
 cVal = digitalRead(c);  // read input value

 if (aVal == HIGH) {         // check if the input is HIGH (button released)
   Serial.write("a accesa\n\r");
 }
 else {
   Serial.write("a spenta\n\r");
 }

 if (bVal == HIGH) {         // check if the input is HIGH (button released)
   Serial.write("b accesa\n\r");
 }
 else {
   Serial.write("b spenta\n\r");
 }

 if (cVal == HIGH) {         // check if the input is HIGH (button released)
   Serial.write("c acceso\n\r");
 }
 else {
   Serial.write("c spento\n\r");
 }


 delay(1000);
}
http://www.paologiammarco.it
http://www.valentinamagni.it

erpomata

Non mi sembra, mi sembrano corrette.
Anche perchè darebbe errore in compilazione
http://www.paologiammarco.it
http://www.valentinamagni.it

ale92

hai messo delle resistenze di pull-down sui vari input?

uwefed

Le entrate misurano disturbi e possono essere letti sia H che L o scambiare lo stato durante il tempo se:
non sono collegati a niente e se non é messo una resistenza pullup o pulldown e non é attivata la resistenza pullup interna. per attivare la pullup interna :

pinMode(a, INPUT);
digitalWrite(a,HIGH);

Ciao Uwe

erpomata

Infatti c'era una resistenza sul pin sbagliato della breadboard   :smiley-yell:

Scusate
http://www.paologiammarco.it
http://www.valentinamagni.it

Go Up