TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Halcon_de_Fuego en 09 de Noviembre de 2010, 20:13:54

Título: caracteres al azar en un lcd ?
Publicado por: Halcon_de_Fuego en 09 de Noviembre de 2010, 20:13:54
Hola es posible mostrar caracteres al azar en un lcd ? como ?
Título: Re: caracteres al azar en un lcd ?
Publicado por: Suky en 09 de Noviembre de 2010, 20:26:24
Hola es posible mostrar caracteres al azar en un lcd ? como ?
Puedes generar un numero aleatorio, y realizar un lcd_putc(Valorrand);



Saludos!
Título: Re: caracteres al azar en un lcd ?
Publicado por: Halcon_de_Fuego en 09 de Noviembre de 2010, 20:39:22
por ejemplo tengo esto

Código: [Seleccionar]
   if (contadorSegundos == 59)
      {
      lcd_gotoxy(1,3);
   lcd_send_byte(1,0b00101000);

si quiero hacerlo con una variable la defino pero con que sentencia la ago aleatoria ?? probe con random pero no existe en ccs ? :D

saludos !!
Título: Re: caracteres al azar en un lcd ?
Publicado por: migsantiago en 09 de Noviembre de 2010, 20:42:47
por ejemplo tengo esto

Código: [Seleccionar]
   if (contadorSegundos == 59)
      {
      lcd_gotoxy(1,3);
   lcd_send_byte(1,0b00101000);

si quiero hacerlo con una variable la defino pero con que sentencia la ago aleatoria ?? probe con random pero no existe en ccs ? :D

saludos !!

Hola, CCS sí cuenta con generador pseudo random. Checa el manual de usuario.
Título: Re: caracteres al azar en un lcd ?
Publicado por: Halcon_de_Fuego en 09 de Noviembre de 2010, 20:48:02
Haaa ?!?! gracias !! ya lo veo y lo ago  :-/ !!
Título: Re: caracteres al azar en un lcd ?
Publicado por: Halcon_de_Fuego en 09 de Noviembre de 2010, 23:11:12
porque no puedo encontrar la sentencia random en el manual que aparece en la web ? ademas no tengo un manual en el ide del ccs  :5] :5] :5] :5] :5] :5] :5] :5] :5]
Título: Re: caracteres al azar en un lcd ?
Publicado por: Suky en 09 de Noviembre de 2010, 23:13:31
 :mrgreen: Apreta F1 en el IDE de CCS, y colocar Rand  :mrgreen:


Saludos!
Título: Re: caracteres al azar en un lcd ?
Publicado por: migsantiago en 10 de Noviembre de 2010, 10:51:22
porque no puedo encontrar la sentencia random en el manual que aparece en la web ? ademas no tengo un manual en el ide del ccs  :5] :5] :5] :5] :5] :5] :5] :5] :5]

Entonces descárgalo de www.ccsinfo.com
Título: Re: caracteres al azar en un lcd ?
Publicado por: Halcon_de_Fuego en 10 de Noviembre de 2010, 19:53:21
 :5] :5]  :x haaaaaaaaaa !!!!!!! me gua volve locooooooooo !!!! no entiendo nada que es una semilla y porque se usa y no se porque no es mas facil tener una funcion que aga el random en vez de un pseudo random ??????????

yo tengo esto y siempre entra con el mismo caracter !!!!!!!  :5] :5]

Código: [Seleccionar]
   {if (contadorSegundos == 59)
      {
     
   srand(100);
   I=rand();
   
   lcd_gotoxy(1,3);
   lcd_putc(I);

 :5] :5]
Título: Re: caracteres al azar en un lcd ?
Publicado por: Halcon_de_Fuego en 10 de Noviembre de 2010, 19:57:43
se me ocurre usar los datos de la fecha y hora y sacar algun numero aleatorio en la semilla pero no tengo la mas palida idea de como se hace esto !  :5] :x :5] :x
Título: Re: caracteres al azar en un lcd ?
Publicado por: migsantiago en 10 de Noviembre de 2010, 20:20:02
se me ocurre usar los datos de la fecha y hora y sacar algun numero aleatorio en la semilla pero no tengo la mas palida idea de como se hace esto !  :5] :x :5] :x

Cuando plantas un número random sólo debes usar una semilla. No la replantes cada que entras.
Título: Re: caracteres al azar en un lcd ?
Publicado por: Halcon_de_Fuego en 10 de Noviembre de 2010, 20:28:21
encontre esto:


Aunque esté en formato código,tienes que desactivar la opción "usa caretos".
He probado a incluir la librería stdlib.h para no tener que implementar la función rand() en el código y no me da error.
La función rand() realiza una serie de pasos matemáticos para llegar a un resultado considerado "aleatorio".Estos pasos parten del valor de una variable "semilla"(_Randseed).Si esta semilla tiene siempre el mismo valor,obtendrás una secuencia de aleatorios que se repetirá de forma consecutiva.Para variar el valor de esta semilla se usa la función srand(semilla),también incluída en la librería,por lo que se me ocurre que cambies el valor de la semilla antes de cada llamada a rand().Podrías conseguirlo por ejemplo asignándole a la semilla el valor de alguna de las dos variables de control que usasen los bucles "for",que en cada iteración tendrían un valor diferente.Puede que tampoco fuese del todo aleatorio,pero la repetición de secuencias sería en menor grado.
Podrías intentar que los caracteres de las dos cadenas se fueran descubriendo tb de forma aleatoria,así quedaría más chulo.
Podría servir crear un array de enteros(ya que de booleanas no se puede) de igual longitud a tus cadenas que te indicase que carácter está descubierto y que carácter no lo está.Así en cada una de las iteraciones que descubren caracteres de la cadena,llamas a rand() para que te devuelva una posición de la cadena,compruebas si ya está destapada,y si no lo está la descubres.

La implementación de rand() y srand() podría ser algo asi:

    Codigo:

Código: [Seleccionar]
    #define RAND_MAX 255

    #define LONG_CADENA 14



    unsigned int32 semilla = 1;





    long rand(unsigned int maximo)

    {

       semilla = semilla * 1103515245 + 12345;

       return ((unsigned long)(semilla >> 16) % maximo);

    }





    void srand(unsigned int32 seed)

    {

       semilla = seed;

    }
 


y está en http://todopic.mforos.com/46840/2307248-microcursillo-en-c/?pag=5 (http://todopic.mforos.com/46840/2307248-microcursillo-en-c/?pag=5)

es correcto con lo que tú dices ?

gracias por responder !

saludos
Título: Re: caracteres al azar en un lcd ?
Publicado por: jhozate en 10 de Noviembre de 2010, 22:01:05
y no se puede solo hacer la captura del timer0 y presentar el hexadecimal y ya?
Título: Re: caracteres al azar en un lcd ?
Publicado por: Halcon_de_Fuego en 10 de Noviembre de 2010, 22:12:21
si eso estoy haciendo ! y bue ... me voy a conformar con eso hasta que entienda mejor como funciona el bendito rand y srand  :5]
pasa que no queria hacerlo asi porque me muestra los mismos valores  desde el comienzo ! pero como es algo que mucho no me importa lo voy a dejar asi y no me voy a obsesionar con eso ! .

saludos !!  :-/