Documente Academic
Documente Profesional
Documente Cultură
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.