integrar varios codigos a la vez

Hola, tengo una duda desde hace algunos dias que no se si es posible o si es algo sencillisimo pero aun no he tenido tiempo de probar asique aprovecho apra comentarlo aver si podeis responderme y asi ya lo se antes de echarle horas sin que quizas haya algo que hacer.

bien mi pregunta es la siguiente: es posible integrar varios sketchs en uno solo? es decir que con un boton poder saltar de un un codigo al siguiente y que el arduino se quede en el bucle siguiente hasta que se pulse reset y empiece con el primero o bien se pulse el boton y pase al siguiente codigo.

me refiero pues a por ejemplo tener un sketch de comprobador de baterias y pulsando una tecla que pase a controlar el programa lcd smartie o nose quizas cualquier otra captura a traves de otras entradas como temperaturas o cosas asi (creo que no sera posible por que para que acepte el siguiente sketch habria que reiniciar y entonces hay volveria al primero pero bueno aqui os lo dejo y me lo confirmais)

gracias

Hola Alex.....

Eso deberia ser tan simple como crear una opción 'if' en la función 'void loop()' y saltar a cada una de las funcionalidades que quieras en función de la respuesta al 'if'. ¿Es esa tu pregunta, verdad?

Un saludo,

Normalmente, para reutilizar código o por cuestiones de limpieza, tienes la opción de añadir más ficheros de código mediante "Sketch>Add File..." y seleccionar un fichero de otro sketch, y te aparece el fichero en una nueva pestaña (se copia en el entorno del sketch actual).

También puedes añadir una pestaña en blanco utilizando la flecha de arriba a la derecha, y desde esa misma borrar pestañas (que harán que se borre el fichero del entorno actual), etc.

Puedes copiar lo que quieras reutilizar y cambiar el nombre de la función, como comenta piniflopa. Recuerda que sólo puede existir un setup() y un loop() y que los nombres de las funciones no pueden estar repetidos.

si, cierot con el if esta solucionado esa parte si la se pero la cuestion es: no se supone que para que comience a funcionar el nuevo sketch tiene que reiniciarse el chip? lo digo por que al reiniciar volveria a empezar y estaria en la misma... bueno supongo que si me lo decis es por que se puede sin reiniciar pero confirmarmelo ya que de poderse me pongo ya a copiuar y pegar los 4 programas que mas uso para tenerlos ya listos en uno sin tener que reprogramar de cada vez.

un saludo y gracis x contestar tan rapido

No se si lo entiendo bien. Es decir, tu quieres que el arduino se ponga en marcha con el último programa que has seleccionado. ¿Es así? Si es eso, lo que yo haria seria configurar el 'void setup()' para que lo primero que haga al ponerse en marcha es leer un dato de la EEPROM. Si este dato es '1' empieza con el primer programa, si es '2' empieza con el segundo,..... Con lo que cada vez que tu cambies 'manualmente' de programa deberias grabar ese dato en la EEPROM. y asi lo tendrias listo la poxima vez que re-inicies.

¿Es eso?

Saludos!

(EDITO): Por cierto el valor que leo en 'void setup()' no lo ejecuto ahí, si no que lo pasaria a una variable para que el 'void loop()' lo evaluara.

Ah, leches, ya te entiendo. La solución es la de piniflopa.

bufff pinflopa porfa intenta explicarlo como pa burros mas o menos xD xq la verdad que no em enterao de gran cosa salvo que necesito incorporar una eeprom y ya empezamos mal por hay ya que tener tengo muchas pero ni puñetera idea de aslmacenar ni leer datos en ellas y no pretendia empezar ahora hasta que no maneje un poco el arduino ya que aun estoi muy verde como pa ponerme a meter mas cosas a la vez... xd yo pensaba que si lo metia todo dentro del setup no hacia falta reiniciar para que el otro skecht funcione entonces ahora no estoi seguro si es obligatorio lo de la eeprom o solo es recomendable

jejeje!! Tranquilo, hombre. No hace falta que soples ni que le añadas nada al arduino: La EEPROM viene de serie. :)

Echale un vistazo a las características de arduino: http://arduino.cc/en/Main/ArduinoBoardUno

verás que tienes EEPROM de sobra, si solo quieres almacenar un byte :)

Además, solo debes incluir la libreria especifica y usar las instrucciones correspondientes. Que són dos: read y write. (http://arduino.cc/en/Reference/EEPROM)

El tema es que cada vez que selecciones un 'modo de trabajo' (prefiero llamarlo así a sketch, porque de hecho solo vas a tener un scketch) lo primero que haces es escribir en la EEPROM el modo de trabajo seleccionado y después ejecutas el modo de trabajo en cuestión.

Así, en el momento en que re-inicies arduino, dentro del 'void setup()' solo debes consultar el modo de trabajo en el que estaba arduino anteriormente.

Creo que eso no te tiene que aportar mas problemas....

vale bien no sabia que la eeprom que trae es para uso del usuario pensaba que solo era para el firmware del ftdi gracias vere aver si soi capaz de meter los 4 entornos de trabajo en uno solo lo cual es complicao xq entodos requiero el uso de la pantalla para mostrar los resultados y nose si se solaparan nombres de funciones y demas peor bueno todo sera ponerse y ver cuantos problemas surgen...

muchas gracias por todo

Alex Asturias, por buscar un poco en Google no pasa nada ya que la mayoría de las cosas están en la referencia bien explicadas, como por ejemplo el tema de la EEPROM:

http://www.arduino.cc/es/Reference/EEPROM

Un consejo mio (sin mala intención) es que investigues por tu cuenta, descubrirás páginas interesantes, proyectos documentados y además con la satisfacción de haberlo hecho tu mismo, ya que en la electrónica en cuanto hagas algo un poco raro, casi nadie lo habrá hecho y puede que seas el primero, entonces ¿a quién le vas a preguntar? Si ya tienes la costumbre, pues ya sabes lo que significan las siglas, valores aproximados de por ejemplo resistencias para algunas aplicaciones, etc. Leer libros sobre arduino, electrónica básica y esas cosas.

Un saludo

Estoy totlamente de acuerdo con chiva. Lo que puedas avanzar por ti mismo vale cuatro veces mas. Para el resto de cosas... por aqui andamos. ;)

si, por supuesto simplemente pense que seria algo que no tendria ese nombre o no sabia muy bien como llamar al proceso en concreto que yo keria realizar vosotros me habeis entendido rapido pero esperaba que quizas no llegase a explicarme bien para que entendieseis el problema,

de nuevo gracias a los 2 un saludo

Buenos dias, oye me permite nuevamento tovayo alex a opinar en tus post, a lo que se refieren los colegas es que abras tu logica propia y veras que los logros son mas grandes ojo no estoy peleando sino que asi tu mismo crees como analizador programador puede ser cualquiera la idea es leer y tener la idea de funcionamiento de una cosa en particular y vos con tu logica hacer cosas a tu medida.

Saludos y con eso ellos tampoco pretenden decirte que no preguntes mas nooo de hecho de tus post porque mas grande o pequeño que sea toda la comunidad se lucra y aprende cada dia mas pero lo que si se aconseja y creo que es el fin es que cada quien tengo un sentido logico en su manera de programar y nadie pero nadie hace un codigo igual.

Atten. Alexander Santana. Venezuela-Bareclona. [u]Nota:[/u] hermano si tienes msn y usas ese medio enviamelo y asi compartimos un poco mas mi idea nunca es peleas sino aprender cada dia mas y de ti aunque tu lo no creas he aprendido.Bye.