Sei sulla pagina 1di 7

UNIVERSIDAD AUTONOMA DEL ESTADO DE

MEXICO
FACULTAD DE INGENIERIA
INGENIERIA ELECTRONICA

Acstica
ELABORADO POR:

CRUZ GARCA LAURA


LPEZ BERENICE

REPORTE DE PROYECTO:
JUEGO SIMON SAY CON ARDUINO

DICIEMBRE DE 2014

Introduccin
En este proyecto, se mostrara cmo hacer el juego de Simon Dice, consiste en
memorizar una secuencia aleatoria de colores que genera el programa, e intentar
reproducirla sin equivocarse. La secuencia se va complicando en cada paso.
Se ha puesto alguna funcin especfica, tales como que para reiniciar el Simon se
tiene que pulsar a la vez los tres pulsadores, o que cuando se equivoquen en la
secuencia de colores, parpadean los tres leds a la vez tres veces.

Materiales
3 leds
3 pulsadores
1 bocina (optativo, ya que solo es para dar sonido al juego)
1 Arduino uno
Jumper
Protoboard

Desarrollo
Se tendr que armar el circuito como se muestra.Se pondrn los botones y estos
se conectaran directamente a los 5V. El otro lado de los botones se conectara a
los pines del arduino de las salidas digitales 12,10 y 8.
Se pondrn los leds de modo que estn conectados con una resistencia de 220 ,
se conectara de la salida de la tierra una resistencia que valla al led en la parte del
ctodo y en el nodo se conectaran las salidas 13,11 y 9 del arduino.
Finalmente conectamos el altavoz el cable negro se conectara a tierra y el cable
rojo en el pin 7

Circuito armado en prctica.

El programa a ejecutar con Arduino se muestra a continuacin. Se edit el programa para que
despus de cada ronda se notara el cambio de nivel del juego. Cada vez que se gana el nivel de
dificultad va aumentando.
#define LEVELS 3
#define COLORS 3
#define TIME_INTERVAL 1500
#define TONO_1 1700
#define TONO_2 1432
#define TONO_3 956
#define TONO_ERROR 600
//-------------------------------------------------// Variables SIMON
//-------------------------------------------------doublestatus_simon = 0;
intnivel = 0;
double secuencia = 0;
intcolores_pulsados = 0;
//-------------------------------------------------// Puertos

//-------------------------------------------------// LEDS
doubleled_Rojo = 13; //Declarar Pin LED
Rojo
doubleled_Verde = 11; //Declarar Pin LED
Verde
doubleled_Amarillo = 9; //Declarar Pin LED
Amarillo
// PULSADORES
doublepulsador_Rojo = 12;
doublepulsador_Verde = 10;
doublepulsador_Amarillo = 8;
//ZUMBADOR
double zumbador = 7;

//-----------------------------------// Funcion principal


//-----------------------------------voidsetup() // Se ejecuta cada vez que el
Arduino se inicia
{
Serial.begin(9600);
randomSeed(analogRead(0));
pinMode(pulsador_Rojo,INPUT); // Pulsador
1 como entrada
pinMode(led_Rojo,OUTPUT); //El LED 1
Rojo como salida
pinMode(pulsador_Verde,INPUT); // Pulsador
2 como entrada
pinMode(led_Verde,OUTPUT); //El LED
Verde como salida
pinMode(pulsador_Amarillo,INPUT); //
Pulsador 3 como entrada
pinMode(led_Amarillo,OUTPUT); //El LED
Rojo como salida
pinMode(zumbador,OUTPUT); // El
zumbador como salida
}
//-----------------------------------//Funcionciclicla
//-----------------------------------voidloop() // Esta funcion se mantiene
ejecutando
{
// cuando se da energia al Arduino
if(digitalRead(pulsador_Rojo) == HIGH
&&digitalRead(pulsador_Verde) == HIGH
&&digitalRead(pulsador_Amarillo) == HIGH)
{
nivel = 0;
status_simon = 0;
delay(TIME_INTERVAL*2);
return;
}
// Reproducirsecuencia
if(status_simon == 0){
Serial.println("\n\n-------------------------\nMODO IMPRESION SEC.");
if(nivel == 0 )
{
nivel = 1;
randomSeed(analogRead(0));
secuencia = random(1,COLORS+1);

}
else
{
nivel++;
randomSeed(analogRead(0));
doubledouble_rand = random(1,COLORS+1);
doubledouble_exp = (double)pow(10,nivel-1
);
//double value = double_rand *
double_exp;
//secuencia = secuencia + value;
secuencia = (secuencia * 10) + double_rand;
}
Serial.print("\nlvl: ");
Serial.print(nivel);
Serial.print("\n");
Serial.print("Secu.: ");
Serial.print(secuencia);
Serial.print("\n");
imprimir_secuencia();
status_simon = 1;
colores_pulsados = 0;
}
// Secuencia del usuario - Registro de los
pulsadores
else if(status_simon == 1){
if(digitalRead(pulsador_Rojo) == HIGH){
Serial.println("Rojo pulsado");
pulsar_elemento('1');
colores_pulsados++;
verificar_secuencia('1');
}
elseif(digitalRead(pulsador_Verde) == HIGH){
Serial.println("Verde pulsado");
pulsar_elemento('2');
colores_pulsados++;
verificar_secuencia('2');
}
elseif(digitalRead(pulsador_Amarillo) ==
HIGH){
Serial.println("Amarillo pulsado");
pulsar_elemento('3');
colores_pulsados++;
verificar_secuencia('3');
}
}
}
//-----------------------------------//Funcion Verificar secencia
//------------------------------------

voidverificar_secuencia(char color)
{
String string = String(round(secuencia) );
Serial.print("\nColorusuario:");
Serial.print(color);
Serial.print(" Seq. Valor:");
Serial.print(string[colores_pulsados-1]);
if(string[colores_pulsados-1] == color){
if(nivel == colores_pulsados){
Serial.print("\nFin del lvl: ");
Serial.print(nivel);
status_simon = 0;
}
else{
// CONTINUA MODO USUARIO
Serial.print("\nContinuar modo usuario");
}
}
else{
// ERROR DE USUARIO
Serial.print("\nERROR DE USUARIO");
status_simon = 4;
error_usuario();
}
}

sonarTono(TONO_1,TIME_INTERVAL*0.5);
digitalWrite(led_Rojo,LOW);
Serial.println("PulsadorRojo OFF");
break;
case '2':
Serial.println("\nPulsador Verde ON");
digitalWrite(led_Verde,HIGH);
sonarTono(TONO_2,TIME_INTERVAL*0.5);
digitalWrite(led_Verde,LOW);
Serial.println("Pulsador Verde OFF");
break;
case '3':
Serial.println("\nPulsador Amarillo ON");
digitalWrite(led_Amarillo,HIGH);
sonarTono(TONO_3,TIME_INTERVAL*0.5);
digitalWrite(led_Amarillo,LOW);
Serial.println("Pulsador Amarillo OFF");
break;
}
}

//-----------------------------------//Funcion Imprimir secuencia


//-----------------------------------voidimprimir_secuencia()
{
String string = String(round(secuencia) );
Serial.print("\nIMPRIMIR SERIE: ");
Serial.print(string);
for(inti = 0 ; i<nivel ;i++)
{
delay(TIME_INTERVAL*0.5);
pulsar_elemento(string[i]);
}
}

//-----------------------------------// ERROR USUARIO


// Realiza una secuencia de luz y sonido
diez veces seguidas para indicar que
// el usuario ha errado al introducir la
// secuencia
//-----------------------------------------voiderror_usuario()
{
for(inti=0; i<3; i++)
{
delay(TIME_INTERVAL*0.3);
digitalWrite(led_Rojo, HIGH); // turn the LED
on (HIGH is the voltage level)
digitalWrite(led_Verde, HIGH); // turn the
LED on (HIGH is the voltage level)
digitalWrite(led_Amarillo, HIGH); // turn the
LED on (HIGH is the voltage level)
digitalWrite(zumbador,HIGH);

//-----------------------------------// PULSAR ELEMENTO


// Luce el led del indicador pasdo por
parmetro
//-----------------------------------voidpulsar_elemento(charnum_color)
{
switch(num_color){
case '1':
Serial.println("\nPulsadorRojo ON");
digitalWrite(led_Rojo,HIGH);

sonarTono(TONO_ERROR,TIME_INTERVAL
);
digitalWrite(zumbador,LOW);
digitalWrite(led_Rojo, LOW); // turn the LED
off by making the voltage LOW
digitalWrite(led_Verde, LOW); // turn the
LED off by making the voltage LOW
digitalWrite(led_Amarillo, LOW); // turn the
LED off by making the voltage LOW
}
}

//-----------------------------------// SONAR TONO


//-----------------------------------voidsonarTono(int tono, intduracion)

{
tone(zumbador,tono,duracion);
delay(duracion);
}

El nivel lo va mostrando en la pantalla. Cada vez que se introduzcan mal el orden de los colores se
regresa al primer nivel.

Conclusiones
En este proyecto se obtuvieron los resultados esperados, ya que el programa solo se modific un
poco para que tardara en cambiar de colores y as poner ms difcil el juego en poder recordar el
orden de los colores.Es un juego entretenido que se puede construir con arduino uno y es muy
sencillo de armar y de conseguir fcilmente el material.

Potrebbero piacerti anche