Hi Don,
Thank you so much for looking into this! I tested all of my wires again and rewired the entire thing and now it seems to be working! Thanks for pointing out that it may be the connection, I just needed someone to pinpoint it to that.
A
floresta:
OK - I found the code on github https://github.com/arduino/Arduino/blob/master/build/shared/examples/10.StarterKit/p11_CrystalBall/p11_CrystalBall.ino and it could use some work.
The code would be better if, in loop(), it didn't continually clear the display and then rewrite the same information back to line 1.
Try something like this:
- Put a delay at the end of what is currently in setup()
- Move the code that prints "the ball says" to setup(), after the newly added delay. Also move the second 'setCursor' statement.
- Pad each of the possible replies so they are all the same length.
New code (untested):
EDIT: Sorry about the poor formatting - this is my first shot at using the horrible code editor in the recently botched up forum software.
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// set up a constant for the tilt switchPin
const int switchPin = 6;
// variable to hold the value of the switchPin
int switchState = 0;
// variable to hold previous value of the switchpin
int prevSwitchState = 0;
// a variable to choose which reply from the crystal ball
int reply;
void setup() {
// set up the number of columns and rows on the LCD
lcd.begin(16, 2);
// set up the switch pin as an input
pinMode(switchPin,INPUT);
// Print a message to the LCD.
lcd.print("Ask the");
// set the cursor to column 0, line 1
// line 1 is the second row, since counting begins with 0
lcd.setCursor(0, 1);
// print to the second line
lcd.print("Crystal Ball!");
delay (2000);
// clean up the screen before printing a new reply
lcd.clear();
// set the cursor to column 0, line 0
lcd.setCursor(0, 0);
// print some text
lcd.print("the ball says:");
// move the cursor to the second line
lcd.setCursor(0, 1);
}
void loop() {
// check the status of the switch
switchState = digitalRead(switchPin);
// compare the switchState to its previous state
if (switchState != prevSwitchState) {
// if the state has changed from HIGH to LOW
// you know that the ball has been tilted from
// one direction to the other
if (switchState == LOW) {
// randomly chose a reply
reply = random(8);
// choose a saying to print based on the value in reply
switch(reply){
case 0:
lcd.print("Yes ");
break;
case 1:
lcd.print("Most likely ");
break;
case 2:
lcd.print("Certainly ");
break;
case 3:
lcd.print("Outlook good ");
break;
case 4:
lcd.print("Unsure ");
break;
case 5:
lcd.print("Ask again ");
break;
case 6:
lcd.print("Doubtful ");
break;
case 7:
lcd.print("No ");
break;
}
}
}
// save the current switch state as the last state
prevSwitchState = switchState;
}
Don