Buenos dias,
soy nuevo en el foro y me estoy iniciando en la programación, así que es probable que el fallo se mio.
El problema es el siguiente: tengo una tira led programada con la libreria FasLed, he hecho unas funciones (animaciones de los leds) que he comprobado que funcionan individualmente. La alternancia de funciones la hice viendo algunos ejemplos y funciona hasta la 4 funcion, entonces se apaga la tira led. Añado el programa para a ver si alguien me dice si hago algo mal. Despues de la parte que he copiado estan programadas las funciones. Grácias por adelantado
El codigo que has puesto funciona correctamente luego el error debe estar en la funcion 4. Si la funcion 4 y alguna de las siguentes son ejemplos que trae la libreria FasLed ten cuidado que la mayoria de ellos no funcionan como funciones, son loop principales que funcionan durante un cierto periodo de tiempo, no funcionan llamadolas multiples veces durante un periodo de tiempo como tu haces. Como tu las llamas esas funciones solo dan una vuelta en su codigo, la primera, y con una sola vuelta no hacen nada. Seria conveniente que tambien publicaras las funciones para ver si es de eso.
Grácias por responder,
el array que declaro como "leds" lo uso posteriormente dentro de las funciones (que no copié para no hacerlo muy largo) para hacer encender la tira led y esa parte funciona.
En la parte del setup, GRB es el orden que tiene los colores la tira led, Green, Red, Blue. la instruccion FastLed.addLeds viene definida y en esa posicion se le indica justamente el orden de colores.
Creo que ambas cosas no son el problema, puesto que las funciones que posteriormente quiero que ejecute las he probado a ejecutarlas individualmente, sin tocar nada del setup ni declaracion de variables y funcionan correctamente. Aun asi, gracias por dedicar tu tiempo para responder
Las funciones no estan sacadas de ningun ejemplo de las librerias, las he hecho yo, viendo algunos videos de youtube que enseñan algunas animaciones, etc. Para probarlas antes de probar la alternancia las llamaba desde el loop, primero una, cuando esa veia que funcionaba probaba otra, y asi con todas.
Lo extraño es que si, por ejemplo, la funcion del caso 4 y 5 las llamo en el caso 1 y 2 si que las ejecuta correctamente. Por eso creo que he hecho alguna cosa mal en la alternancia, porque siempre deja de hacer la funcion que este en la posicion 4 en adelante.
De todas maneras grácias por contestar, seguire probando y si encuentro el problema lo haré saber
La alternancia esta correcta, si en el codigo que has puesto cambias las llamadas a las funciones a por ejemplo:
Serial.println ("gradient(300)");
Veras por el monitor serie que el switch case funciona correctamente y no se para llamando cada 10 seg. a todas loas funciones. El error lo tienes en las funciones no en el codigo que has subido.
Por si alguien tiene curiosidad, la funcion lo que hace es encender los leds a un brillo bajo, va subiendo el brillo y cuando llega al brillo maximo baja hasta apagarlos, asi repetidamente.
He probado a cambiar las funciones en otros casos y siempre se quedan todos los leds parados despues de esta funcion.
Edito la respuesta, he encontrado el problema, la funcion coincidia que cuando saltava a la siguiente estaba apagado, osea que habia dejado el brillo fijado a 0 y las siguientes funciones se ejecutaban con el brillo a 0. Lo he solucionado modificando la funcion que alterna con la siguiente funcion asi: