esklar81 wrote:I tried looking at the software side, to see how NewSoftSerial works. I haven't yet found straightforward instructions, so please post a link to what you have.
All I have is the newsoftserial.h library. I don't profess to understand it but presume it has been used here as it allows the inclusion of multiple serial devices (LCD and GPS in this case) more easily?
What I did find indicates that the first argument of the function is the receive pin and the second is the transmit pin.
That is how I am given to understand it.
however, the line of code I found waswhich differs substantially from the syntax in the code you posted.
Code: Select all
NewSoftSerial sLCD = NewSoftSerial(3, 14); /* Serial LCD is connected on pin 14 (Analog input 0) */
Which is correct, rxPin is ignored as there is no return channel, TxPin is the physical Analog0 pin which is configured as Digital14. The serial LCD only requires RX, GND and VCC. It has no TX.
So, here're a few questions:
1) What pin is "14"? It appears to be an analog input pin, which is an odd choice for sending data to a display.
I can't say why that pin was chosen here but the shield uses a large number of digital pins for the Canbus communication, joystick, LEDs etc?
2) What's connected to pin 3, which appears to be a digital I/O pin? Is it possible that your code is hanging waiting for a particular response on that pin? Does grounding it help?
Looking at the schematic, as far as I can tell nothing is connected?
3) If you change both pins to DI/O pins, do you get the same result?
Pin 14 is already a digital pin?
4) If you change to different serial driver software, do you get the same result?
I'm pretty new to this so am just working from the example sketches given as a starting point. Given that the 16x2 works with this setup and those pin assignments I can't see how the code could be at fault? The 16x2 and 20x4 use the same serial configurations and have the same power requirements?