Grabando y Repitiendo una Secuencia

Que tal amigos y colegas

Quiero consultar su sabiduria por una duda que tengo por que soy nuevo en arduino.

Alguien sabe o tiene una idea de como grabar y repetir una secuencia de pulsos en un arduino?

Es decir el proyecto tiene solo 3 botones y un led. Al presionar el primer boton el arduino empieza a "grabar" una secuencia de pulsos con un segundo boton, pulsamos el segundo boton las veces que queramos tan rapido como queramos y al presionar el tercer boton en un led se repite la secuencia de pulsos que previamente acabamos de grabar...

Alguien tiene una idea o de alguna funcion para poder ir haciendo esto?

Gracias :slight_smile:

Hola LaloGonzalez01, bienvenido!!

El problema que le veo a tu propuesta es MEMORIA.
Cuanto tiempo quieres almacenar? Porque la memoria de los arduinos no se estira y cada Arduino tendrá una capacidad determinada para almacenar secuencias de pulsaciones.

Primera idea: Crear un timer a 1 mseg y leer estado del pulsador 2 y almacenarlo en RAM como bits, lo que amplia la capacidad de almacenamiento.
Veamos capacidades

El ATmega328 chip que tiene el Uno tienes las siguientes cantidades de memoria:

[ltr][color=#4f4e4e]Flash 32k bytes (of which .5k is used for the bootloader)
SRAM 2k bytes
EEPROM 1k byte
[/color][color=#4f4e4e]
El ATmega2560 en el Mega2560 tiene mas memoria [/color]
[/ltr]
[ltr][color=#4f4e4e]Flash 256k bytes (of which 8k is used for the bootloader)
SRAM 8k bytes
EEPROM 4k byte


8K del MEGA contra 2K del UNO
Supongamos que en el UNO el programa consuma 500 bytes, nos quedan 1500 bytes x 8 bits = 12000 bits que a 1 mseg de muestreo nos deja 12 segundos nada mas!!! Poco no?
EL mega será mucho mejor 7500x8=60000 bits o 60 segundos

2 Opción: La segunda opción es grabar los lapsos entre cambios 1 a 0 
Si la persona pulsa rápido guardará muchos datos pero si lo hace lento esto permite mucho mas tiempo de grabación.
3 Opción: La opción 1 puede mejorarse con facilidad usando una memoria SD. 

Espero que las ideas te sirvan.[/color][/ltr]

Creo que la opción 2 sería la más adecuada.
Yo definiría un array de unsigned longs (o unsigned int si nunca va a haber más de un minuto entre cambio y cambio de estado de pulsador) primero no muy largo, y funcionando el programa, lo podría aumentar hasta el tamaño que permita la memoria. Y ya, si agregas una SD se podría hacer casi ilimitado. Muy importante controlar los rebotes del pulsador, porque podemos multiplicar mucho el número de pulsaciones a guardar.