Go Down

Topic: Digital Input Problem (Read 529 times) previous topic - next topic

  I'm having problems with a program I wrote and in the troubleshooting process I've narrowed it down to a digital input issue.  My initial program used several digital inputs (with the internal pull-up resister).  I installed switches to switch the input to ground.  Unfortunately one and then two of the inputs quit working.  It did work in the past, but no longer.
  I wrote a test program to verify, see below.   DI1 and DI3 no longer operate correctly.

Code: [Select]
void setup()  {

Serial.begin(9600);
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
}

void loop(){

int DI0 = digitalRead(0);
int DI1 = digitalRead(1);
int DI2 = digitalRead(2);
int DI3 = digitalRead(3);
int DI4 = digitalRead(4);
int DI5 = digitalRead(5);
int DI6 = digitalRead(6);
int DI7 = digitalRead(7);
  Serial.print("DI0 = ");
  Serial.print(DI0);
  Serial.print(",  DI1 = ");
  Serial.print(DI1);
  Serial.print(", DI2 = ");
  Serial.print(DI2);
  Serial.print(", DI3 = ");
  Serial.print(DI3);
  Serial.print(", DI4 = ");
  Serial.print(DI4);
  Serial.print(", DI5 = ");
  Serial.print(DI5);
  Serial.print(", DI6 = ");
  Serial.print(DI6);
  Serial.print(", DI7 = ");
  Serial.println(DI7);
 
}



Serial monitor results:
DI0 = 1,  DI1 = 0, DI2 = 1, DI3 = 0, DI4 = 1, DI5 = 1, DI6 = 1, DI7 = 1
DI0 = 1,  DI1 = 0, DI2 = 1, DI3 = 0, DI4 = 1, DI5 = 1, DI6 = 1, DI7 = 1
DI0 = 1,  DI1 = 0, DI2 = 1, DI3 = 0, DI4 = 1, DI5 = 1, DI6 = 1, DI7 = 1
DI0 = 1,  DI1 = 0, DI2 = 1, DI3 = 0, DI4 = 1, DI5 = 1, DI6 = 1, DI7 = 1
DI0 = 1,  DI1 = 0, DI2 = 1, DI3 = 0, DI4 = 1, DI5 = 1, DI6 = 1, DI7 =à1
DI0 = 1,  Dy1 ý 0, Dyþî?b"%Íîþ

DI1 and DI3 will always display 0.  Grounding DI3 has no affect and when I ground DI1 I get the last line from above.

Any suggestions (short of a blown chip)?  Thanks in advance for your help.

Brian




johnwasser

I don't know about DI3 but DI0 and DI1 are the serial I/O pins and will conflict with your use of Serial.
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e


I don't know about DI3 but DI0 and DI1 are the serial I/O pins and will conflict with your use of Serial.


  I understand this "could" be an issue however it transmits great when I transition DI0 to ground and it use to do well when I set DI1 to ground as well.  Something has changed and I suspect it's the same thing as that went wrong when DI3 quit working. 
  I find it hard to believe I'm blowing this pin on the chip, but If I am I wish I knew how so I could prevent it.
  Any ideas?

brendanh

I think I am seeing a similar problem on my freetronics eleven. I configured pins 2 and 3 as digital inputs with an internal pullup. The pins where then connected to a switch that could ground them out.

For some reason it worked originally and then stopped. I now find that all pins on that port read digital inputs as low. Interestingly they still work as output pins though.

Other pins on different ports still work.

I have no solution, just wanted to say that I am facing a similar problem.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy