After playing around with couple of sensors on the InduinoX we thought of doing a micro project together and finally settled on doing a Tic Tac Toe!
All those other ideas would hopefully make it into our next meetups!
Following spec was decided for our micro-project.
- A tic-tac-toe game with a mesh of 3×3 LEDs.
- Controlled via a TV Remote. (IR). 1-9 keys on remote denote the position of the LED.
- A player alternates using the TV Remote.
- The first player’s LED is always bright (solids) and the second player’s LED blinks. (a novel idea considering we had only 1 color LED’s.)

Building It
- We connected pins 2-10 of the Arduino Uno to a breadboard mounted with LED’s. Also the ground PIN was connected using jumpers. (as seen in the below pic.)
- A video below shows the game play!
#include <IRremote.h> |
int RECV_PIN = 11; |
IRrecv irrecv(RECV_PIN); |
decode_results results; |
int i = 0; |
int blinkarray[11]; |
int user=0; |
void setup() |
{ |
for(i=2;i<11;i++) |
{ |
pinMode(i,OUTPUT); |
} |
irrecv.enableIRIn(); // Start the Remote receiver |
Serial.begin(9600); |
} |
void loop() |
{ |
blinkOrNot(); |
if (irrecv.decode(&results)) { |
Serial.println(results.value); |
switch(results.value) // if the ‘+’ button is pressed |
{ |
case 2320: |
i=0; |
break;// 2320 is the value for ‘0’ |
case 16: |
i=1; |
setArray(); |
break;// 16 is the value for ‘1’ |
case 2064: |
i=2; |
setArray(); |
break;// 2064 is the value for ‘2’ |
case 1040: |
i=3; |
setArray(); |
break;// 1040 is the value for ‘3’ |
case 3088: |
i=4; |
setArray(); |
break;// 3088 is the value for ‘4’ |
case 528: |
i=5; |
setArray(); |
break;// 528 is the value for ‘5’ |
case 2576: |
i=6; |
setArray(); |
break;// 2576 is the value for ‘6’ |
case 1552: |
i=7; |
setArray(); |
break;// 1552 is the value for ‘7’ |
case 3600: |
i=8; |
setArray(); |
break;// 1552 is the value for ‘7’ |
case 272: |
i=9; |
setArray(); |
break;// 1552 is the value for ‘7’ |
} |
// while(digitalRead(7)==0); // wait till button is released to avoid incrementing the counter again |
delay(300); // small delay to avoid debounce |
irrecv.resume(); // Receive the next value |
} |
} |
 |
void blinkOrNot(){ |
for(int j=2;j<11;j++) { |
if(blinkarray[j]==1) |
{ |
digitalWrite(j,HIGH); |
} |
} |
for(int j=2;j<11;j++){ |
if(blinkarray[j]==2) |
{ |
digitalWrite(j,HIGH); |
} |
} |
for(int j=2;j<11;j++){ |
if(blinkarray[j]==2) |
{ |
delay(50); |
} |
} |
for(int j=2;j<11;j++){ |
if(blinkarray[j]==2) |
{ |
digitalWrite(j,LOW); |
} |
} |
for(int j=2;j<11;j++){ |
if(blinkarray[j]==2) |
{ |
delay(50); |
} |
} |
} |
void setArray(){ |
if(user==0){ |
blinkarray[i+1]=1; |
user=1; |
} |
else{ |
blinkarray[i+1]=2; |
user=0; |
} |
} |
For more detail: Arduino based Tic Tac Toe with TV Remote