Alternating Pattern and user input in memory game
i have been trying create memory game (kind of simon) on arduino, using 3x3 led grid , corresponding grid of switches. problem code. have been able create code generate random pattern of 5 leds player copy, have been able create code translate player's inputs led flashes on grid, , i'm (pretty sure) have created code remember generated pattern , player's inputs , compare them check success or failure.
but
the program 1 function or other.
the sequence of events should be:
1. program generates 5 random led flashes, , remembers them
2. waits player input
3. player presses 5 buttons, i.e lights 5 leds in attempt copy pattern
4. program checks generated pattern against user input
5. program indicates if user correct or not, (i.e. via flash of leds or that, or playing new pattern. specific behavior not important)
the problem step 2 never seems happen; code either generates patterns, or if try rearrange things, allows input.
i have never programmed before, , pretty first arduino program, i'm quite novice. of sort welcome!
(i apologize ugliness of code. said, i'm new this, , not formatting)
code:
thanks!
but
the program 1 function or other.
the sequence of events should be:
1. program generates 5 random led flashes, , remembers them
2. waits player input
3. player presses 5 buttons, i.e lights 5 leds in attempt copy pattern
4. program checks generated pattern against user input
5. program indicates if user correct or not, (i.e. via flash of leds or that, or playing new pattern. specific behavior not important)
the problem step 2 never seems happen; code either generates patterns, or if try rearrange things, allows input.
i have never programmed before, , pretty first arduino program, i'm quite novice. of sort welcome!
(i apologize ugliness of code. said, i'm new this, , not formatting)
code:
code: [select]
#include <keypad.h> //use keypad library
const byte rows = 3; //three rows
const byte cols = 3; //three columns
char keys[rows][cols] =
{
{'1','2','3' }, //touchpad grid
{'4','5','6' },
{'7','8','9' }
};
byte rowpins[rows] = {
2, 3, 4}; //the row pin of touchpad
byte colpins[cols] = {
5, 6, 7}; // column pin of touchpad
keypad keypad = keypad( makekeymap(keys), rowpins, colpins, rows, cols );
int ledcol1 = 8; //identify pins
int ledcol2 = 9;
int ledcol3 = 10;
int ledrow1 = 11;
int ledrow2 = 12;
int ledrow3 = 13;
int memoryrow[5];
int memorycol[5];
int pressedrow[5];
int pressedcol[5];
void setup()
{
serial.begin(9600);
pinmode(ledcol1, output); //define pin states,
pinmode(ledcol2, output);
pinmode(ledcol3, output);
pinmode(ledrow1, output);
pinmode(ledrow2, output);
pinmode(ledrow3, output);
digitalwrite (ledcol1, low);
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, low);
digitalwrite (ledrow2, low);
digitalwrite (ledrow3, low);
memoryfunc();
for(int t=0; t<5; t++)
{
serial.println(memorycol[t]);
//serial.println(memoryrow[t]);
}
for(int x=0; x<5; x++)
{
playerfunc(x);
}
}
///////////memory
void memoryfunc()
{
for(int i=0; i<5; i++)
{
memoryrow[i]=random(11, 14);
memorycol[i]=random(8, 11);
lightmemory(i);
delay(500);
}
digitalwrite (ledcol1, low); //all off
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
}
///////////mem inf
int lightmemory(int j)
{
if(memoryrow[j]==11 && memorycol[j]==8)
{
digitalwrite (ledcol1, high); //light led 1
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, low);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, high);
}
else if(memoryrow[j]==12 && memorycol[j]==8)
{
digitalwrite (ledcol1, low); //light led 2
digitalwrite (ledcol2, high);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, low);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, high);
}
else if(memoryrow[j]==13 && memorycol[j]==8)
{
digitalwrite (ledcol1, low); //light led 3
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, high);
digitalwrite (ledrow1, low);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, high);
}
else if(memoryrow[j]==11 && memorycol[j]==9)
{
digitalwrite (ledcol1, high); //light led 4
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, low);
digitalwrite (ledrow3, high);
}
else if(memoryrow[j]==12 && memorycol[j]==9)
{
digitalwrite (ledcol1, low); //light led 5
digitalwrite (ledcol2, high);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, low);
digitalwrite (ledrow3, high);
}
else if(memoryrow[j]==13 && memorycol[j]==9)
{
digitalwrite (ledcol1, low); //light led 6
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, high);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, low);
digitalwrite (ledrow3, high);
}
else if(memoryrow[j]==11 && memorycol[j]==10)
{
digitalwrite (ledcol1, high); //light led 7
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, low);
}
else if(memoryrow[j]==12 && memorycol[j]==10)
{
digitalwrite (ledcol1, low); //light led 8
digitalwrite (ledcol2, high);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, low);
}
else if(memoryrow[j]==13 && memorycol[j]==10)
{
digitalwrite (ledcol1, low); //light led 9
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, high);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, low);
}
}
///////////input
void playerfunc(int z)
{
char key = keypad.getkey(); //keypad detection
serial.println(key);
if (key == '1')
{
pressedrow[z]=11;
pressedcol[z]=8;
digitalwrite (ledcol1, high); //light led 1
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, low);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, high);
delay (220); //wait 220
int off1 = off(); //send off
}
else if (key == '2')
{
pressedrow[z]=12;
pressedcol[z]=8;
digitalwrite (ledcol1, low); //light led 2
digitalwrite (ledcol2, high);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, low);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, high);
delay (220); //wait 220
int off1 = off(); //send off
}
else if (key == '3')
{
pressedrow[z]=13;
pressedcol[z]=8;
digitalwrite (ledcol1, low); //light led 3
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, high);
digitalwrite (ledrow1, low);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, high);
delay (220); //wait 220
int off1 = off(); //send off
}
else if (key == '4')
{
pressedrow[z]=11;
pressedcol[z]=9;
digitalwrite (ledcol1, high); //light led 4
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, low);
digitalwrite (ledrow3, high);
delay (220); //wait 220
int off1 = off(); //send off
}
else if (key == '5')
{
pressedrow[z]=12;
pressedcol[z]=9;
digitalwrite (ledcol1, low); //light led 5
digitalwrite (ledcol2, high);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, low);
digitalwrite (ledrow3, high);
delay (220); //wait 220
int off1 = off(); //send off
}
else if (key == '6')
{
pressedrow[z]=13;
pressedcol[z]=9;
digitalwrite (ledcol1, low); //light led 6
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, high);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, low);
digitalwrite (ledrow3, high);
delay (220); //wait 220
int off1 = off(); //send off
}
else if (key == '7')
{
pressedrow[z]=11;
pressedcol[z]=10;
digitalwrite (ledcol1, high); //light led 7
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, low);
delay (220); //wait 220
int off1 = off(); //send off
}
else if (key == '8')
{
pressedrow[z]=12;
pressedcol[z]=10;
digitalwrite (ledcol1, low); //light led 8
digitalwrite (ledcol2, high);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, low);
delay (220); //wait 220
int off1 = off(); //send off function
}
else if (key == '9')
{
pressedrow[z]=13;
pressedcol[z]=10;
digitalwrite (ledcol1, low); //light led 9
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, high);
digitalwrite (ledrow1, high);
digitalwrite (ledrow2, high);
digitalwrite (ledrow3, low);
delay (220); //wait 220
int off1 = off(); //send off
}
}
int off() //function turns leds off
{
digitalwrite (ledcol1, low); //light none
digitalwrite (ledcol2, low);
digitalwrite (ledcol3, low);
digitalwrite (ledrow1, low);
digitalwrite (ledrow2, low);
digitalwrite (ledrow3, low);
}
void loop()
{
}
thanks!
code: [select]
int ledcol1 = 8; //define variablesthese not...variables.
can suggest stop, slow down, , break problem down simpler stages, deug them separately, , bring them together?
Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > Alternating Pattern and user input in memory game
arduino
Comments
Post a Comment