Kesem, My 4yr old son is home for over a month now due to the corona virus out there. I was looking for more ways to keep him active and entertained at the same time.
I started with one LED and 6 panels that were connected to an MPR121
If you never used one before, I got a great video for that
The code is pretty straight forward.To communicate with the mp3 I use software serial on pins 8 and 9. This module is really easy to use and theaudio feedback is a great add on to the game.
I use the FastLED library for the addressables. And the bare conductive library for the MPR121.
Each time a game starts a random color is selected, and shown on the LED.
void setSystemState(byte newState) {
//set newState
systemState = newState;
switch (newState) {
case SYS_STATE_START:
currentColorIndex = 0;
currentColor[currentColorIndex] = getRandomColor(99);
Serial.println(currentColor[currentColorIndex]);
leds[currentColorIndex] = colour[currentColor[currentColorIndex]];
for (byte i = 1; i < NUM_LEDS; i++)
leds[i] = CRGB::Black;
FastLED.show();
break;
case SYS_STATE_WIN:
serialmp3_play(5);
blinkSuccess();
setSystemState(0);
Serial.println("system state - success");
break;
case SYS_STATE_FAIL:
serialmp3_play(6);
blinkFail();
setSystemState(0);
Serial.println("system state - fail");
break;
} //end switch
}
If the correct pad is touched another color is added and shown.
If a wrong pad is touched or a pad is left – it’s fail
And when all 4 are touched correctly – it’s a win
if (MPR121.touchStatusChanged() && systemState == 0) {
MPR121.updateTouchData();
for (int i = 0; i < NUM_BUTTONS; i++) {
if (MPR121.isNewTouch(i)) {
if (buttonColor[i] == currentColor[currentColorIndex]) {
addColor();
break;
}
else
{
setSystemState(SYS_STATE_FAIL);
break;
} //end if
} else if (MPR121.isNewRelease(i)) {
for (byte z = 0; z < currentColorIndex; z++) {
if (currentColor[z] == buttonColor[i]) {
setSystemState(SYS_STATE_FAIL);
break;
} //end if
} //end for
} //end if
} //end for
} //end if
When I started the project what I had in mind was creating a big Simone like game, with more than just 4 colors and spread across the room – so I can have Kesem run around. The major obstacle was the wiring, and I had no desire to go into wireless. So the next best thing was to create a surface – which is what I ended up doing.
After seeing his Ninja move, I realized I got a better result, one that will help Kesem work on his balance and planning of moves.
I had a few suggestions given, like adding a physical rolling element for the color picking, making it look similar to the Twister game. Also adding hand/foot instructions.And I thought of adding points as well, for success vs fails.
Comments