Hi guys,
I am a relatively new to the Arduino...2 weeks since I completed my first project:A quiz buzzer.
It was working all fine. The Arduino's pin 14-19 (6 inputs, pin14=team01, pin15=team02, till team06) configured as digital input. the pins from 2-13 (12 pins in 4 sets of 3 pins) configured as digital BCD outputs to 4 sets of 7 segment displays, each driven by its own IC7447. In the setup() loop all output pins were written LOW. This showed zeroes on the four 7 segment displays. And as each input went high, the output showed the number of the pin going high (ie, if pin15=team02 went high first=>then 2 is displayed on 7 segment display marked 1st, and so on)....ie, uptil the first four inputs...due to pin limitations.
Anyway my Duemilanove is USB powered thru a laptop and I have a cheapo wall-wart which can output voltage in 1.5V multiples uptil 12V. So i usually use a IC7805 voltage regulator in between.
All this was 2 weeks back. Then I was bitten by the bug to load a bootloader on one of many empty brand-new ATMEGA328s, so that it could function as a stand alone circuit. I tried bootloading the 328 on a breadboard with 8Mhz internal clock thru my Arduino. It seemed to have bootloaded. Then it said remove ur original 328 so that the FTDI can talk with the 328 on the breadboard. I did it, but then got the dreaded:
"avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51". Never figured out what the issue was, though i found a lengthy thread on this forum. No solutions!!
A couple of days later, I thoughtI should go back to my original 328. But to my horrors the circuit didnt seem to work. The 7 segments never showed 0 as they should right at the beginning. Then I thought let me go back to blinking pin13/led. It worked fine.
Again, today I tried loading the quiz buzzer program. It wouldnt pull the pins of the IC7447 low. Never ever.
(One thing i forgot to mention is that IC7447 requires very less current drive and hence can go high simply due to noise, ie open pin almost always is HIGH. for low you gotta pull it to GND:the reason for the output pins being written LOW in the setup() in the first place)
Then I began manually checking the voltages on the pins on the Arduino one by one. To my surprise the program was still working correctly. Ie, the output pins gave the correct BCD code of the input pin going HIGH.
Then what I stumbled upon semmed totally non-sensical.... there was a voltage difference between the ground on my wall-wart and the ground on my Arduino. The Arduino was 9-10.5 volts higher!!!! I thought it must be the computer spike buster's design causing it. And yes indeed, i switched off my 5.1 speakers... the difference dropped to 7V. Then went back to a simple extention cord, the difference dropped to zero.
But still the Arduino wouldnt pull the IC7447's pins low. Although connect the IC7447's pins to the wallwart's ground pulled them low. Can anyone explain whats going on here??
I think powering the Arduino thru the wall-wart may solve the issue, but i dont trust the wall-wart with my Arduino! ;D
In any case, it did work a couple of weeks back... have i damaged my Arduino in some way? How do i check?
And sorry for rambling on for so long...