I have an issue. I throw this onto my Arduino Mega(with a joystick shield and a piezo buzzer attached) and the code is supposed to spit out a random number between 1 and 4.
But it isn't random. When I do it, it repeats, each time.
here is the code:
#include <LiquidCrystal_I2C.h>
#include <JoystickShield.h> // include JoystickShield Library
#include <TrueRandom.h>
JoystickShield joystickShield; // create an instance of JoystickShield object
const int buzzer = 11;
boolean isAny = false;
double t;
int score = 0;
int randomNumber;
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
randomSeed(analogRead(0));
Serial.begin(9600);
pinMode(buzzer, OUTPUT);
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(1,0);
lcd.print("Block It");
lcd.setCursor(0,1);
lcd.print("Press F to start");
delay(100);
// new calibration function
joystickShield.calibrateJoystick();
joystickShield.processEvents();
while(!joystickShield.isFButton()){
joystickShield.processEvents();
}
tone(buzzer, 1750, 500);
delay(750);
tone(buzzer, 1750, 500);
delay(750);
tone(buzzer, 1750, 500);
delay(750);
tone(buzzer, 2500, 500);
delay(150);
}
void loop() {
Serial.print("We made it");
lcd.clear();
lcd.setCursor(0, 8);
lcd.print(score);
if(score > 249){
lose();
Serial.print("YOU SUCK");
while(true){}
}
delay(500); // process events
gameManage();
}
void gameManage(){
randomNumber = round(random(1000,5000)/1000);
delay(100);
Serial.println(randomNumber);
Serial.println();
delay(100);
switch(randomNumber){
case 1: upIt();
case 2: leftIt();
case 3: downIt();
case 4: rightIt();
}
}
void upIt(){
lcd.setCursor(0,9);
lcd.print("Up It");
Serial.print("BEEP");
tone(buzzer, 1000, 100);
Serial.print("beeped");
delay(100);
int d = 0;
boolean pressed = false;
while(d < 200 - (score * 3) && !pressed){
Serial.print("waiting");
delay(1);
d++;
joystickShield.processEvents();
if(joystickShield.isUpButton()) {
pressed = true;
tone(buzzer, 1000, 100);
delay(100);
}}
if(!pressed){
lose();
while(true){}}
score++;
}
void leftIt(){
lcd.setCursor(0,9);
lcd.print("Up It");
Serial.print("BEEP");
tone(buzzer, 1500, 100);
Serial.print("beeped");
delay(100);
int d = 0;
boolean pressed = false;
while(d < 200 - (score * 3) && !pressed){
Serial.print("waiting");
delay(1);
d++;
joystickShield.processEvents();
if(joystickShield.isLeftButton()) {
pressed = true;
tone(buzzer, 1500, 100);
delay(100);
}}
if(!pressed){
lose();
while(true){}}
score++;
}
void downIt(){
lcd.setCursor(0,9);
lcd.print("Up It");
Serial.print("BEEP");
tone(buzzer, 2000, 100);
Serial.print("beeped");
delay(100);
int d = 0;
boolean pressed = false;
while(d < 200 - (score * 3) && !pressed){
Serial.print("waiting");
delay(1);
d++;
joystickShield.processEvents();
if(joystickShield.isDownButton()) {
pressed = true;
tone(buzzer, 2000, 100);
delay(100);
}}
if(!pressed){
lose();
while(true){}}
score++;
}
void rightIt(){
lcd.setCursor(0,9);
lcd.print("Up It");
Serial.print("BEEP");
tone(buzzer, 2500, 100);
Serial.print("beeped");
delay(100);
int d = 0;
boolean pressed = false;
while(d < 200 - (score * 3) && !pressed){
Serial.print("waiting");
delay(1);
d++;
joystickShield.processEvents();
if(joystickShield.isRightButton()) {
pressed = true;
tone(buzzer, 2500, 100);
delay(100);
}}
if(!pressed){
lose();
while(true){}}
score++;
}
void lose(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("You lose");
lcd.setCursor(0,1);
lcd.print("Score: ");
lcd.setCursor(0,9);
lcd.print(score);
tone(buzzer, 1500, 1000);
delay(1000);
tone(buzzer, 1250, 1000);
delay(1000);
tone(buzzer, 1000, 2000);
}