Autor Tema: Dado electronico  (Leído 3473 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Dado electronico
« Respuesta #15 en: 09 de Agosto de 2017, 14:00:38 »
En el else ( para cuando no es 6 el numero, escribi todo de nuevo y borra.. Es decir cada ves que deba escribir algo borralo... quedaria asi:

Código: C
  1. #include <16f648a.h>            //pic a utilizar
  2. #define RAND_MAX  6               //De 0 a 5
  3. #include <STDLIB.H>               //libreria donde esta la funcion rand();          
  4. #use delay (clock=4000000)         //Fosc=4Mhz
  5. #use standard_io(B)
  6. #use fast_io(A)
  7. #define use_portb_lcd TRUE         //definir portb lcd
  8. #include<lcd.c>                  //libreria manejo lcd
  9.      
  10. ///PROGRAMA
  11. void main(void)
  12. {
  13.    char num=0;                  //variable almacena numero aleatorio
  14.  
  15.    set_tris_a(0xFF);            //porta como entrada  
  16.    disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas
  17.    
  18.    lcd_init();                  //inicializa lcd
  19.    
  20.    srand(7);                  //maximo hasta 6
  21.    lcd_putc("Dado Electronico\nPulse boton...");
  22.    
  23.    while(input(PIN_A0)){}         //Se mantiene cabecera hasta que se pulse el boton
  24.      
  25.    lcd_putc("\fDado:\nIntenta otra vez"); // mensaje de texto
  26.    lcd_gotoxy(7,1);            //Coordenadas dond se muestra el numero
  27.    
  28.    
  29.    for(;;){                  //bucle...
  30.       if(!input(PIN_A0))         //¿se ha pulsado el boton?
  31.          {
  32.             do{                     //SI -> elimina...
  33.                num=rand() + 1;            //genera numero pseudo-aleatorio        
  34.                }while(!input(PIN_A0));   //...rebotes
  35.             if(num==6)
  36.             {
  37.                 int j;
  38.                 printf(lcd_putc,"");
  39.                 lcd_putc("\fDado: 6\n   Felicidades!"); // Borro, el LCD y escribo el mensaje de texto
  40.                
  41.                 for(j=0;j<8;j++) // Repito 8 veces, cada vuelta es de 100ms, por lo que 30*100ms = 3s
  42.                 {
  43.                      output_high(PIN_B3);      //activa buzzer(beep)
  44.                      delay_ms(50);            //tiempo de escucha del beep
  45.                      output_low(PIN_B3);         //desactiva buzzer(beep)
  46.                      delay_ms(50);            //tiempo de escucha del beep
  47.                  }
  48.             }
  49.             else
  50.             {              
  51.                 lcd_putc("\fDado: %d\nIntenta otra vez",num); // Borro el LCD y escribo el mensaje de texto
  52.                 output_high(PIN_B3);      //activa buzzer(beep)
  53.                 delay_ms(50);            //tiempo de escucha del beep
  54.                 output_low(PIN_B3);         //desactiva buzzer(beep)
  55.             }
  56.          }                            
  57.       }                     //...infinito
  58. }

Desconectado kmc

  • PIC10
  • *
  • Mensajes: 13
Re:Dado electronico
« Respuesta #16 en: 09 de Agosto de 2017, 15:12:36 »
hola: KILLERJC  solucione el problema, la secuencia que dejo abajo la repetí  después del mensaje y los pitidos y ahora sale muy bien gracias por tu aporte sin ti no lo habría logrado, muchísimas gracias amigo.   
secuencia:

 while(input(PIN_A0)){}         //Se mantiene cabecera hasta que se pulse el boton
     
   lcd_putc("\fDado:\nIntenta otra vez"); // mensaje de texto
   lcd_gotoxy(7,1);            //Coordenadas dond se muestra el numero

Desconectado kmc

  • PIC10
  • *
  • Mensajes: 13
Re:Dado electronico
« Respuesta #17 en: 10 de Agosto de 2017, 11:23:22 »
hola: KILLERJC puedes ayudarme a ver el error en la imagen que te dejo abajo, bueno te lo agradecería mucho, no me deja crear el HEX.  gracias


* error82.png
(26.57 kB, 921x400 - visto 246 veces)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Dado electronico
« Respuesta #18 en: 10 de Agosto de 2017, 14:11:57 »
Seguramente es por que use lcd_putc y deberia haber usado printf(lcd_putc

cambia :

Código: C
  1. lcd_putc("\fDado: %d\nIntenta otra vez",num);

por

Código: C
  1. printf(lcd_putc,"\fDado: %d\nIntenta otra vez",num);

Ya que usamos el %d
« Última modificación: 10 de Agosto de 2017, 14:24:41 por KILLERJC »

Desconectado kmc

  • PIC10
  • *
  • Mensajes: 13
Re:Dado electronico
« Respuesta #19 en: 10 de Agosto de 2017, 15:22:54 »
se soluciono el error 82 ,pero a la hora de compilar salio error 83, ya falta poquito para terminar el código sin errores, en esta parte final gracias


* error 83.png
(24.96 kB, 656x402 - visto 274 veces)


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Dado electronico
« Respuesta #20 en: 10 de Agosto de 2017, 15:26:04 »
Te falto el punto y coma del printf, todas las instrucciones terminan en un punto y coma

Desconectado kmc

  • PIC10
  • *
  • Mensajes: 13
Re:Dado electronico
« Respuesta #21 en: 10 de Agosto de 2017, 15:40:24 »
gracias ya lo corregi te agradezco muchisimo amigo  saludos.....ATTE: kimer


 

anything