Need help for A0 - A7 pins

I got a new spark core and my A0- A7 pins, when used as INPUT always display 4095 no matter what is connected to pins.
I have even tried connecting A pins to GND, still 4095. My code is as follows:

#include "application.h"

int a, b, c, d, e, f, g, h;
void setup()
{
     pinMode(A0,INPUT);
     pinMode(A1,INPUT);
     pinMode(A2,INPUT);
     pinMode(A3,INPUT);
     pinMode(A4,INPUT);
     pinMode(A5,INPUT);
     pinMode(A6,INPUT);
     pinMode(A7,INPUT);
     
     //analogWrite(A7,0);
     Serial.begin(9600);
     
     }
     
     
void loop()
{
   a=analogRead(A0);
   b=analogRead(A1);
   c=analogRead(A2);
   d=analogRead(A3);
   e=analogRead(A4);
   f=analogRead(A5);
   g=analogRead(A6);
   h=analogRead(A7);
   
   Serial.println(a);
   Serial.println(b);
   Serial.println(c);
   Serial.println(d);
   Serial.println(e);
   Serial.println(f);
   Serial.println(g);
   Serial.println(h);
     delay(1000);
     
    
     }

I am programming my core over USB. All my other functions work great, Analog port works fine for output but the input is ALWAYS 4095.

Please help me out here.
Thanks

Sid

I’m not sure if this could be a timing thing, but just to exclude this from the list of posdible causes, try to put the respective Serial.println() statements and a very brief delay between each analogRead().
And just for test purposes try to set the pinMode(A0, INPUT_PULLDOWN) to see if you at least then get a zero reading.

And another blind shot, could you try to flash your test sketch via the WebIDE, too? (Don’t forget to comment out the #include "application.h" for it)

Thank you for your reply, I tried it and still no luck.
Tried with pinMode as INPUT_PULLDOWN still it displays 4095
Also tried with delay, even for single pin it gives the same result.
Also tried with WebID.
Is my port damaged by any means? I am sure I did not hook it up to any 5 V sensor. The port works well as output with analogWrite.

This doesn’t sound good - but not all is lost yet :wink:

Could you try to do a factory reset - which will reflash Tinker firmware - and then test your pins with the Tinker App?
Just use the bare Core with nothing attached but power and then do some Tinker analogRead AND digitalRead.
The analogRead should give you random readings, since the pins are floating and most digitalReads should give you LOW (at least on my Core this is the case).

Since not all the analog pins share the same GPIO port, I’d not necessarily assume that all pins would be dead even if you had blown one pin.

I’m remembering an analog reading thread from a while back, I think the default ADC read mode can cause a little interaction with other analog readings when done very frequently. What happens when you read just one of the pins? And can you try outputting the values with something like Serial.println(String(e)); just to make sure it’s not a casting / conversion error?

And you might need to ground those pins, or the core. Maybe try changing your power supply / usb cable, or removing the core from the breadboard?

Thanks,
David

Tried this as well. Tinker by factory reset, it shows 4095 on my iPad too. Just once some pin A5 arbitrarily flashes 0 or 2047 (no other values other than these). I checked if there is any short circuit using a multimeter, it looks all good. changed the USB cable, new code:

#include "application.h"

int a, b, c, d, e, f, g, h;
void setup()
{
     pinMode(A7,INPUT_PULLDOWN);
    
     //analogWrite(A7,0);
     Serial.begin(9600);
     
     }
     
     
void loop()
{
   h=analogRead(A7);
   
   Serial.println(String(h));
     delay(1000);
     
    
     }

Also unplugged from breadboard, connected the analog input to ground.
Still the same.
This is quite weird, isn’t it?

You see me completely clueless :astonished: :stuck_out_tongue_winking_eye: :thought_balloon:

Folks, the analog pins cannot be set for “INPUT” in the regular way since they require “special” treatment. In the analogRead() function, pinMode is called:

pinMode(pin, AN_INPUT);

Try without doing any pinMode settings. I am not sure why Tinker would give you readings you got but give it a shot anyway. :slight_smile:

Darn, @peekay123 is right with the pinMode() - totally missed that.
But it still shouldn’t cause any troubles if you do, since analogRead() would set wrong pinMode() right implicitly anyway.
And Tinker App does not do any wrong pinMode() setting either.

So there must still be something fishy here.

1 Like

Also tried un commenting the pinMode here, I have uploaded my code and serial output as well.
Now I am actually curious as why I am getting this error rather than getting it fixed :stuck_out_tongue:

Thank you Spark community for all your helpful suggestions.

Also tried grounding the pin A7, as well as floating it.

Hello, I still need some help here. I tried every possible thing but am still out of luck.

You see me out of options - so I’d guess you’ve got a hardware issue.

Especially if all your A pins behave that way.

Maybe @Dave has got some other suggestions.

1 Like

@sid drop us a line at hello@spark.io referencing this post and we’ll see if a replacement can be sent.

Thanks!

Note, have you tried using the analog input pins as digital inputs? If so, what happens?

1 Like

Thank you, I will definitely drop a line.
Yes, I have tried them using digital input. It always shows the same value. When connected to ground 4095
When connected to 3.3V of spark core via a resistor - still the same.

When using the pins as output, they work fine.
analogWrite(A0,0) - no buzz ( Buzzer is connected to A0)
analogWrite(A0,50) - little buzz
analogWrite(A0,150) - bit more buzz
analogWrite(A0,200) - loud one.

It works fine with all outputs, but never accepts an input. All the pins A0 - A7

Hey All,

Yea, I agree with @harrisonjones, sounds like we should send a replacement. :slight_smile:

Thanks!
David