INSTITUTO TECNOLOGICO SUPERIOR
DE TAMAZUNCHALE
INGENIERIA EN SISTEMAS COMPUTACIONALES
MATERIA: PRINCIPIOS ELCTRICOS Y
APLICACIONES DIGITALES
CATEDRATICO: ING. SUSANA GONZALES ZAMUDIO
UNIDAD 4 LENGUAJES HDL
REPORTE DE PRCTICA:
APLICACIN DE LA PLACA ARDUINO
TEMTICA JUEGO SIMON SAYS
RACIEL RAMREZ CERVANTES
13ISC108
ESTEBAN GUERRERO HERNNDEZ
13ISC086
SABINO DE LA CRUZ CRUZ
13ISC089
ESPERANZA MARTNEZ HERRERA
13ISC095
4 SEMESTRE VESPERTINO
03/06/2015
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
ELABORO:
RACIEL RAMREZ CERVANTES
ESTEBAN GUERRERO HERNNDEZ
SABINO DE LA CRUZ CRUZ
ESPERANZA MARTNEZ HERRERA
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
APLICACIN DE LA PLACA ARDUINO.
PRESENTACIN DEL PROYECTO SIMON SAYS
Simn dice es un juego en el cual debes obedecer una orden slo cuando comience
con las palabras Simn dice. Este puede ser un juego desafiante, especialmente
cuando las acciones ganan complejidad.
Objetivo de la prctica:
Con motivo de conocer y estudiar la placa arduino (especficamente arduino uno)
en la presente practica se pretende hacer el juego de Simon Says, ese famoso
juego de memorizar una secuencia aleatoria de colores.
El esquema que debemos hacer es muy fcil, solo necesitamos tres leds, tres
pulsadores y un zumbador (optativo, ya que solo es para dar sonido al juego):
Materiales:
MATERIAL:
1 placa Arduino
1 protoboard
Cable UTP para realizar conexiones
5 LEDs Rojos
5 LEDs verdes
5 LEDs amarillos
6 resistencias de 220 ohm
1 Zumbador
3 push
IDE
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
DESARROLLO:
El esquema que debemos hacer es muy fcil, solo necesitamos tres leds (en nuestro caso
usaremos 5 leds rojos, 5 leds verdes y 5 leds amarillos) tres pulsadores y un zumbador para
dar sonido al juego:
ESQUEMA DE SIMON DICE(FRITZING):
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
La parte en la que se utiliza el IDE que es el entorno de desarrollo integrado se
escibira el codigo para que nuestro circuito montado en la protoboard funcione.
En esta se declaran los tonos para el zumbador, se declaran las variables de
entrada y de salida para los leds y los push, las sentencias o condiciones para que
el juego tenga continuidad.
PRESENTACIN DEL CODIGO:
//Materia de principios elctricos y aplicaciones digitales
//Equipo----ESTEBAN---RACIEL---SABINO---ESPERANZA
//Gracias a los posteadores de E-elektronic
#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
//-------------------------------------------------double status_simon = 0;
int nivel = 0;
double secuencia = 0;
int colores_pulsados = 0;
//-------------------------------------------------// Puertos
//-------------------------------------------------// LEDS
double led_Rojo = 13; //Declarar Pin LED Rojo
double led_Verde = 11; //Declarar Pin LED Verde
double led_Amarillo = 9; //Declarar Pin LED Amarillo
// PULSADORES
double pulsador_Rojo = 12;
double pulsador_Verde = 10;
double pulsador_Amarillo = 8;
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
//ZUMBADOR
double zumbador = 7;
//-----------------------------------// Funcion principal
//-----------------------------------void setup() // 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
}
//-----------------------------------//Funcion ciclicla
//-----------------------------------void loop() // 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;
}
// Reproducir secuencia
if(status_simon == 0){
Serial.println("\n\n--------------------------\nMODO IMPRESION SEC.");
if( nivel == 0 )
{
nivel = 1;
randomSeed(analogRead(0));
secuencia = random(1,COLORS+1);
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
}
else
{
nivel++;
randomSeed(analogRead(0));
double double_rand = random(1,COLORS+1);
double double_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');
}
else if(digitalRead(pulsador_Verde) == HIGH){
Serial.println("Verde pulsado");
pulsar_elemento('2');
colores_pulsados++;
verificar_secuencia('2');
}
else if(digitalRead(pulsador_Amarillo) == HIGH){
Serial.println("Amarillo pulsado");
pulsar_elemento('3');
colores_pulsados++;
verificar_secuencia('3');
}
}
}
//-----------------------------------Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
//Funcion Verificar secencia
//-----------------------------------void verificar_secuencia(char color)
{
String string = String(round(secuencia) );
Serial.print("\nColor usuario:");
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();
}
}
//-----------------------------------//Funcion Imprimir secuencia
//-----------------------------------void imprimir_secuencia()
{
String string = String(round(secuencia) );
Serial.print("\nIMPRIMIR SERIE: ");
Serial.print(string);
for(int i = 0 ; i < nivel ;i++)
{
delay(TIME_INTERVAL*0.5);
pulsar_elemento(string[i]);
}
}
//-----------------------------------// PULSAR ELEMENTO
// Luce el led del indicador pasdo por parmetro
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
//-----------------------------------void pulsar_elemento(char num_color)
{
switch(num_color){
case '1':
Serial.println("\nPulsador Rojo ON");
digitalWrite(led_Rojo,HIGH);
sonarTono(TONO_1,TIME_INTERVAL*0.5);
digitalWrite(led_Rojo,LOW);
Serial.println("Pulsador Rojo 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;
}
}
//-----------------------------------// ERROR USUARIO
// Realiza una secuencia de luz y sonido diez veces seguidas para indicar que
// el usuario ha errado al introducir la
// secuencia
//-----------------------------------------void error_usuario()
{
for(int i=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);
sonarTono(TONO_ERROR,TIME_INTERVAL);
digitalWrite(zumbador,LOW);
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
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
//-----------------------------------void sonarTono(int tono, int duracion)
{
tone(zumbador,tono,duracion);
delay(duracion);
}
//FIN DEL PROGRAMA
RESULTADOS:
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.
PRINCIPIOS ELECTRNICOS Y APLICACIONES DIGITALES
PROYECTO FINAL
CONCLUSIONES:
Con la presente practica se logro crear un juego que puede ayudar al aprendizaje
ya que es un claro ejercitador de la memoria, al seguir secuencias de luces.
El aprendizaje puede adaptarse, en este caso para el aprendizaje de colores y para
poner a prueba la memoria. Pero con una modificacin puede servir para aprender
las figuras geometricas.
Elaborado por:
Sabino de la Cruz, Esperanza Martnez,
Raciel Ramrez, Esteban Guerrero.