Hot/Cold Game

Over the past week, I figured out how to make lights fade on and using sensors. So naturally, I went a completely different direction. I created a little game that generates a random value between 0-255 and lights up an LED with that value (0 being LOW and 255 being HIGH). The user must then control a photoreceptor so that it falls within a range of the generated value. If they are too high, a red light will come on (HOT) and if they are too low, a blue light will come on (COLD). If they fall within the range, they will be rewarded with a yellow light.

In this game’s production, I fell into some interesting problems and came up with solutions for a few of them. One was that the loop would go so fast that it would constantly be generating new values, thus rendering the game useless. However, I think this would make a great EXTREME MODE for the truly daring player. I fixed this by adding a button. The loop would only generate a new number if the button was pressed.

Here are my video and code 😀

const int ledPinR = 2;
const int ledPinG = 3;
const int ledPinB = 4;
const int ledPinWIN = 6;


int ledRState = LOW;
int ledGState = 0;
int ledBState = LOW;
int ledWINState = LOW;

int button = 7;
int buttonState = 0;

int randNumber = random(1,255);


void setup() {
  pinMode(ledPinR, OUTPUT);
  pinMode(ledPinG, OUTPUT);
  pinMode(ledPinB, OUTPUT);
  pinMode(ledPinWIN, OUTPUT);

  pinMode(button, INPUT);

  Serial.begin(9600);

    randomSeed(analogRead(0));

}


void loop() { 

if (buttonState == HIGH){

  randNumber = random(1,255);
  
}

  Serial.println(randNumber);

  ledGState = randNumber;

  int lightValue = analogRead(A0);


    

    
  if (lightValue < ledGState + 250){
    ledBState = !ledBState;
    ledRState = LOW;
    ledWINState = LOW;
  }
    if (lightValue > ledGState + 400){
      ledRState = !ledRState;
      ledBState = LOW;
      ledWINState = LOW;
   } 
   

   if (lightValue >= (ledGState + 250) && lightValue <= (ledGState + 400)){
      ledWINState = HIGH;
//      if in x range, start a timer, once timer is 3 seconds, do whatever
   }
  
digitalWrite(ledPinR, ledRState);
analogWrite(ledPinG, ledGState);
digitalWrite(ledPinB, ledBState);
digitalWrite(ledPinWIN, ledWINState);
buttonState = digitalRead(button);
}

 

 

Leave a Reply