Click this for NoviceGuard main page
If you haven't "met" NoviceGuard yet.... start with the introduction?. That will open in a new tab or window... just close it to come back to here.
For normal use of the NoviceGuard, you have to provide pull up resistors to use inPUR and inPLR as "digital" inputs. (We'll discuss the finer points of what that means later in this page. For now, don't worry if you don't understand why "digital" was in quotes... stay blissful, but note...
Until you know why you would need to do otherwise, provide some resistors on inPUR and inPLR. About 10k should be fine. The value isn't critical.
The resistors go between the center and bottom pins of SkN1 and SkN3... the sockets associated with inPUR, inPLR. The resistors may be soldered directly to the board, or provided on a short strip of 0.1" pins and plugged into sockets soldered to the pads. (The former would be best with unreliable novices who can't be trusted not to fiddle with things; the latter would leave going to more complex configurations easier. (The former is easily undone, if you change your mind.))
When getting started with NoviceGuard, users are told there are four inputs, controlled by the buttons on the NoviceGuard board. The ones on inPUL and inPLL do indeed drive "simple" digital inputs, inputs which NovGrdCore (or the prescribed pinMode statements, for those not using NovGrdCore) has connected to the internal pull ups inside the chip at the heart of the Arduino.
The standard-to-NoviceGuard function (Delivered by NovGrdCore) boInHigh() returns the state of a given input. Use boInHigh(inPUL) and boInHigh(inPLL) to read the buttons on the upper left and lower left of the NoviceGuard.
The inputs on inPUR and inPLR are in fact analog inputs.
The standard-to-NoviceGuard function boInHigh() returns the state of these inputs, too... as if they were also digital inputs. Use boInHigh(inPUR) and boInHigh(inPLR) to read the buttons on the upper right and lower right of the NoviceGuard.
Someday, I hope your users will advance beyond NG Lev0. Specifically, I hope they will advance to the point of using analogRead(inPUR) and analogRead(inPLR).
When they do, the pull up resistors will have to be unplugged, and something supplying a variable voltage between 0 and Vcc will be needed. The simplest device for introducing analog inputs is the potentiometer. The wiper would go to pin 3, the middle pin, of SkT1 or SkT3, and the other two connections from the potentiometer to pins 1 and 5.
Here's the theory, etc, behind the above...
The "real" digital inputs, the ones on inPUL and inPLL, (left hand two) were configured with pinMode statements which connected the inputs internal pull ups inside the chip.
In order to leave open the opportunity to use the analog inputs on inPUR and inPLR, (right hand two), and avoid any "messing with" pinMode statements, those two inputs were left in their default states. The Arduino expects an analog input on them. So the big internal pull-up resistor we were able to connect to inPUL and inPUR would not be helpful.
If there is no pull-up resistor on the line, it floats, which is unacceptable.
Thus the need, for basic NoviceGuard use, of the external pull up resistors on inPUR and inPLR, when we want to use it as a "digital" input. And, inside boInHigh(), if the line we are checking is UR or LR, instead of a digitalRead, we do an analogRead... and return "true" or "false" depending on the voltage seen. (The button on the NoviceGuard pulls the signal to ground when pressed, resulting in a reading of zero. With the input simply tied through 10k to Vcc, we get quite a low reading, because of the high impedance of the input, but it is sufficiently above zero for our needs.)
Page has been tested for compliance with INDUSTRY (not MS-only) standards, using the free, publicly accessible validator at validator.w3.org. Mostly passes, just a few "No attribute" issues, arising from Google code.
....... P a g e . . . E n d s .....