Memory Game

This project is a memory game incorporating a keypad, a speaker (and amp) playing audio off an SD card. This games tests your memory in rounds until you can't remember anymore.

/media/uploads/Osherif/touchpad.jpg /media/uploads/Osherif/sd_card.jpg /media/uploads/Osherif/mosfet.jpg /media/uploads/Osherif/ulcd.jpg /media/uploads/Osherif/amp.jpg

include the mbed library with this snippet

#include <mbed.h>
#include <mpr121.h>
#include <vector>
#include "uLCD_4DGL.h"
#include "SDFileSystem.h"
#include "wave_player.h"
//#include  "Speaker.h"
AnalogOut DACout(p18);
wave_player waver(&DACout);
SDFileSystem sd(p5, p6, p7, p8, "sd");
Serial pc(USBTX,USBRX);
PwmOut motr(p22);
// Create the interrupt receiver object on pin 26
InterruptIn interrupt(p26);
// Setup the i2c bus on pins 9 and 10
I2C i2c(p9, p10);
// Setup the Mpr121:
// constructor(i2c object, i2c address of the mpr121)
Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);
uLCD_4DGL uLCD(p9,p10,p11);
// Key hit/release interrupt routine
vector<int> plyr;

void fallInterrupt() {
  motr.period(0.0020);
  motr.write(1);
  wait(0.05);
  double value = mpr121.read(0x00);
  value += mpr121.read(0x01)<<8;
  value = log(value)/log(2.0);
   motr.period(0.0020);
    if (value < -12.0 || value > 12){
      value = -1.0;
      }
  if (value >= 0){
      plyr.push_back(value);
      }
      motr.write(0);
}
 
int main() {
  interrupt.fall(&fallInterrupt);
  interrupt.mode(PullUp);
  srand(time(0));
  bool live = true;
  vector< int > comp;
  int rnd = 1;
  int iRand = 0;
  while (live) {
      plyr.clear();
      //pc.printf("player array: %i\n\r",plyr.size());
      //wait(5);
      iRand = rand() % 10;
      pc.printf("Round %i\n\r",rnd);
      uLCD.cls();
      uLCD.locate(5,0);
      uLCD.printf("Round %i\n\r",rnd);
      comp.push_back(iRand);
      wait(5);
      pc.printf("Try and remember this: \n\r");
      uLCD.locate(0,5);
      uLCD.printf("Try and remember this:");
      for (int disp = 0; disp < comp.size(); disp++){
          pc.printf("%i",comp[disp]);
          uLCD.printf("%i",comp[disp]);
          }
      pc.printf(" \n\r");
      wait(5);
      pc.printf("What was the sequence?\n\r");
      uLCD.cls();
      uLCD.locate(0,0);
      uLCD.printf("What was the sequence?\n\r");
      wait(10);
      pc.printf("You entered: \n\r");
      uLCD.cls();
      uLCD.locate(0,0);
      uLCD.printf("You entered: \n\r");
      uLCD.locate(0,5);
      for (int disp = 0; disp < plyr.size(); disp++){
          pc.printf("%i",plyr[disp]);
          uLCD.printf("%i",plyr[disp]);
          }
      wait(5);
      pc.printf(" \n\r");
      wait(5);
      //pc.printf("Size: %i\n\r",plyr.size());
      //wait(5);
      if(plyr.size()==comp.size())
      {
          for(int indx = 0; indx < comp.size(); indx++){
              if (comp[indx]!= plyr[indx]){
                  uLCD.cls();
                  uLCD.locate(5,0);
                  uLCD.printf("Game Ended!\n\n\r");
                  pc.printf("Game Ended!\n\r");
                  live = false;
                  uLCD.printf("Your Score: %d \n" , rnd-1 );
                  pc.printf("Your Score: %d \n" , rnd-1 );
                  break;
                  }
              }
          rnd++;
       }
       else {
        uLCD.cls();
        uLCD.locate(5,0);
        uLCD.printf("Game Ended!\n\n\r");
        uLCD.printf("Your Score: %d \n" , rnd-1);
        pc.printf("Game Ended!\n\r");
        pc.printf("Your Score: %d \n" , rnd-1 );
        live = false;
 {{/media/uploads/Osherif/ulcd.jpg}}         }
      }
      FILE *wave_file = fopen("/sd/eyes.wav", "r");
      waver.play(wave_file); //Plays *.wav audio file
      fclose(wave_file);
}


Please log in to post comments.