Professional Documents
Culture Documents
Deber llevar el circuito funcionando con todos sus componentes para probarlo
cmodamente en el saln.
Deber entregar un reporte del trabajo que contenga al menos: Texto del
problema, Diagrama de Flujo, Diagrama del Circuito, Cdigo con comentarios,
Simulacin en Proteus, y Conclusiones.
Se presiona el botn de inicio, los leds se encienden uno a uno por un segundo
indicando el inicio del juego. La persona elige un botn y lo presiona
produciendo el sonido y la luz correspondiente, un segundo despus el PIC
repite el sonido y elige aleatoriamente un segundo sonido, la persona tiene que
repetir la secuencia y elegir un tercer sonido, ahora el PIC repite la secuencia y
elige un cuarto sonido y as sucesivamente hasta que la persona logra una
secuencia de 8 sonidos correctos donde por consiguiente se gana, al ganar el
PIC enciende uno a uno los LEDS y sonidos, como si se presionara el botn de
inicio. Si al estar la persona alimentando los sonidos toca algn error el PIC es
el que gana indicando esto con 4 sonidos del DO y terminando el juego. Para
volver a comenzar se presiona el botn de inicio de juego.
Cdigo en lenguaje C
Examen y Proyecto Final
int compara[8];
int tonos[4];
int random=0;
short ini=0;
int ciclos=0;
int ready=0;
int usuario=0;
short i = 0;
short numero;
int ag=0;
switch (random)
Sound_Play(random, 500);
PORTA.F0=0;
PORTA.F1=0;
PORTA.F2=0;
PORTA.F3=0;
void botones(){
sonido(tonos[0]);
sonido(tonos[1]);
sonido(tonos[2]);
sonido(tonos[3]);
void perder()
ciclos=0;
usuario=0;
sonido(261);
sonido(261);
sonido(261);
sonido(261);
void ganar()
ciclos=0;
usuario=0;
sonido(261);
sonido(293);
sonido(329);
sonido(350);
void agregar()
ag=0;
//usuario++;
ciclos++;
while(ag==0)
if (Button(&PORTB,4,1,1))
secuencia[usuario]=261;
//comprobar[usuario]=
sonido(secuencia[usuario]);
ag=1;
if (Button(&PORTB,5,1,1))
secuencia[usuario]=293;
sonido(secuencia[usuario]);
ag=1;
if (Button(&PORTB,6,1,1))
secuencia[usuario]=329;
sonido(secuencia[usuario]);
ag=1;
if (Button(&PORTB,7,1,1))
secuencia[usuario]=350;
sonido(secuencia[usuario]);
ag=1;
}
void turnopc()
for(i=0;i<=ciclos;i++)
delay_ms(500);
ciclos++;
numero = rand() % 4;
secuencia[ciclos]=tonos[numero];
sonido(secuencia[ciclos]);
delay_ms(500);
usuario=0;
ready=0;
while(usuario<=ciclos)
if (Button(&PORTB,4,1,1))
compara[usuario]=261;
ready=1;
if (Button(&PORTB,5,1,1))
{
compara[usuario]=293;
ready=1;
if (Button(&PORTB,6,1,1))
compara[usuario]=329;
ready=1;
if (Button(&PORTB,7,1,1))
compara[usuario]=350;
ready=1;
if((compara[usuario]==secuencia[usuario])&&(ready==1))
sonido(compara[usuario]);
usuario++;
ready=0;
if(usuario==8)
ganar();
ready=0;
}
}
if((ready==1)&&(compara[usuario]!=secuencia[usuario] ))
ready=0;
void juego() {
PORTA.F0=1;
delay_ms(250);
PORTA.F1=1;
delay_ms(250);
PORTA.F2=1;
delay_ms(250);
PORTA.F3=1;
delay_ms(250);
PORTA.F0=0;
PORTA.F1=0;
PORTA.F2=0;
PORTA.F3=0;
usuario=0;
ini=0;
ciclos=0;
for (i = 0; i < 8; i++)
secuencia[i] = 0;
compara[i] = 0;
while(ini==0)
if (Button(&PORTB,4,1,1))
secuencia[0]=261;
sonido(secuencia[0]);
if (Button(&PORTB,5,1,1))
secuencia[0]=293;
sonido(secuencia[0]);
if (Button(&PORTB,6,1,1))
secuencia[0]=329;
sonido(secuencia[0]);
if (Button(&PORTB,7,1,1))
secuencia[0]=350;
sonido(secuencia[0]);
}
if(secuencia[0]>0)
ini=1;
while(ini==1)
delay_ms(1000);
turnopc();
turnouser();
agregar();
ANSELH = 0;
TRISB = 0xF0;
TRISB.F2=1;
TRISA=0;
PORTA=0;
tonos[0]=261;
tonos[1]=293;
tonos[2]=329;
tonos[3]=350;
Sound_Init(&PORTB, 3);
while (1) {
inicio:
PORTA.F0=0;
PORTA.F1=0;
PORTA.F2=0;
PORTA.F3=0;
botones();
if (Button(&PORTB,2,1,1))
juego();
}
Diagrama elctrico del circuito de pruebas del
pic16f887
Conclusin
Cdigo de honor:
Yo, Leonardo Anaya, declaro que he realizado esta prctica con estricto apego
al cdigo UDEM.