Generar códigos una vez

Tenia una idea media loca, quiero mostrar 100 códigos todos son diferentes así que me toca colocarlos manualmente (EDEC03038 - CEDE4939, etc) … necesito que al presionar un botón se muestre uno cada uno(Una presionada de boton, un codigo… despues de un tiempo… presiono otra vez el boton y me da un nuevo código), ya sea en orden o desorden, pero a la vez que estos se borren automáticamente y que ya no vuelvan a mostrarse en pantalla… y al final cuando ya se hayan mostrado todos los 100 códigos, me indique … códigos no disponible…
Alguien que me ayude ya sea codificando o una pauta para guiarme y poder terminar esta idea que tengo :frowning:
No importa si sea por print (monitor serial o el lcd display común 16x2) …

No se puede.
Todo código debe estar almacenado en flash. si no lo esta no es posible ejecutar nada
Puedes tener 100 rutinas o las que quepan en la memoria de tu arduino y llamarlos como gustes pero no es mas que 1 programa que llama a diferentes rutinas o funciones.

Yo interpreto que se refiere a claves o códigos alfanuméricos.

Si es así, claro que se puede hacer, pero no es lo mismo generar claves aleatoriamente (para lo cual hay que diseñar un algoritmo acorde al formato de las claves) que precargar las claves y luego solo mostrarlas al azar.
Son cosas muy diferentes pero posibles ambas.

Saludos

Ahh bueno, si es asi, entendí muy mal.
Los códigos podrian almacenarse en flash por ejemplo y llevar una lista de los utilizados para no repetirlos.
Es factible.
Creas la lista de códigos usando PROGMEM y un arreglo o vector con 100 lugares.
A medida que asignas uno, ese vector se va cargando con las posiciones usadas que no pueden ni deben repetirse.
Puedes usar un generador al azar pero a mendida que la lista se vuelva mas restrictiva la posibilidad que encuentre un número llevará mas tiempo, de todos modos es fácil
Una manera mas inteligente sería que a medida que la lista se va achicando y eliminas posiciones, tu vector solo contendrá las posiciones que siguen conteniendo códigos. Y cada vez que borras el generador al azar debe encontrar una posicion entre menos números lo que lo sigue haciendo veloz y tu sistema terminará asignando con velocidad los códigos que deseas.

Resumiendo: Arrancas con un vector que apunta a cada posicion de los 100 códigos.
A medida que borras el vector pierde tamaño pero no tendrá lugares vacíos, por lo que debes mover los valores que esten por encima del lugar borrado, al final luego de la primer asignación te quedas con N - 1 elementos o sea 99 y asi sucesivamente.
Solo copias desde la posicion borrada + 1 y la desplazas a la posicion borrada. Comom cada valor tiene el indice que apunta a los códigos, siempre tendras una lista de códigos disponibles.

Es un generador de tickets de estos de Mikrotik... donde se muestra el código para conectarse .... donde la idea principal era... que se ingresa una moneda... y por lcd muestra el código .... estos códigos normalmente son algo como (userkskskn) o similares..... una vez generados estos el usuario lo ve en la pantallita y lo anota en su teléfono para que se conecte a la red....
Leí que teniendo una lista en una sdcard sería mejor... para que el arduino lea que por cada pulso (pulsador del monedero) una línea de ya sea un txt donde se alojen todos los códigos.....
Entonces libero la carga a la memoria del arduino....
..... Pero como haría para que al mostrar la linea 1 del txt(código ticket) (una vez metido la moneda)... pasado unos minutos borre pantalla del lcd .... y luego cuando se ingrese la otra moneda, muestre la siguiente linea del txt... para ser leido.... Y OJO que me vaya borrando el código usado (ticket mostrado con anterioridad)... cosa que en caso que alguien presione el reset... no me vuelva a mostrar el código de la primera linea del txt... o por fallas de energía no se repita ese código al encender el arduino......

  1. Meto moneda....
  2. Muestra en lcd el código de ticket.... (ya sea de una lista de un txt de sdcard o que otra opción viable sería mejor)
  3. Se mantiene por al menos 1 minuto
  4. Se borra pantalla y muestra cualquier cosilla como ..... ingrese moneda....
    4.1 Internamente se borra automáticamente ese código de ticket del txt*o donde esté almacenado

  1. Se mete otra moneda.....
  2. Muestra por lcd un nuevo código de la lista de ya sea el txt ,,, o lo que se pueda
  3. lo mismo del 3
  4. lo mismo del 4
  5. lo mismo del 4.1

Con esos módulos de reloj serviría de algo en este proyecto?
Algo de ayuda para poder lograrlo ? :c se un poco de Arduino...... pero no me alcanzo con esta idea que me propuse...
Gracias a todos por tomarse la molestia de leerlo y ayudarme .....

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.