Pages: [1]   Go Down
Author Topic: Leggere un digital in  (Read 308 times)
0 Members and 1 Guest are viewing this topic.
Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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);
}
« Last Edit: September 27, 2012, 11:30:59 pm by erpomata » Logged


Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non mi sembra, mi sembrano corrette.
Anche perchè darebbe errore in compilazione
Logged


Offline Offline
Jr. Member
**
Karma: 2
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20281
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Scusate
Logged


Pages: [1]   Go Up
Jump to: