[Desarrollo] Compilador sobre Flash

Esta linea de discusion esta orientada a la idea que Quique presento acerca de hacer un sistema de desarrollo/compilador que lance los programas desde Flash. Quique comento:

  • se podría hacer un recubrimiento del compilador, por ejemplo en flash. Para ello sería necesario poder acceder al compilador desde la línea de comandos así como al comando de exportar programa hacia la tarjeta así como poder recoger la salida de dichos comandos.
  • más fácil de hacer pero más ardua para un novato, se podría hacer una aplicación flash que generase el código fuente para ser compilado y exportado desde la propia herramienta.

Ventajas:

  • Se puede hacer en flash una representación visual de una biblioteca básica de sensores y de actuadores soportados y añadir un conjunto también muy elemental de funciones para manejarlos.
  • para usuarios avanzados en flash, se puede acceder a estos elementos visuales vinculando el MovieClip que representa el sensor-actuador de turno a una clase. De esta manera se podría hacer una simulación virtual de la instalación antes de transportarla al mundo físico.

Desventajas:

  • es obvio que no se podría llegar muy lejos con esta hipotética herramienta, pero estamos hablando de iniciarse, para una persona verdaderamente interesada, el conocimiento a fondo del asunto llegaría con la suficiente
    dedicación, pero por ejemplo para los que sólo necesiten hacer un interface entre el mundo exterior y un PC, este podría ser un sistema visual e inmediato de conseguir sus propósitos.

Al respecto solo puedo decir que esto es posible. Quique, si descargas la version 1 del IDE para windows veras que la compilacion se hace mediante "Makefiles" esto permite ordenar la compilacion y descarga de programas desde la linea de comandos. Asi que si tienes el tiempo y las ganas de empezar este proyecto, te puedo dar soporte desde ya.

Desde luego a mi me parece una buena idea, sobre todo porque permitiria, por ejemplo, tener una herrramienta que pudiese valer incluso para dar clases en colegios. Y esto es algo que ya nos han empezado a pedir.

Tienes ganas de llevarlo a cabo?

/David

Tengo bastante código reutilizable en Flash que puede servir para esto. Habia pensado en algo en principio bastante elemental y 100% visual, de cara a aquel que ha ido al taller sin tener ni idea de electrónica o de programación, no se desanimase al llegar a casa y quedarse solo ante el peligro.

Luego, un usuario avanzado en flash podría "tunear" a su gusto esta aplicación. Particularmente, me gusta programar (incluso en ensamblador 8) ), pero si me doy cuenta de que el 80% de las veces, lo que estoy haciendo es implementar máquinas de estados finitos ¿por qué no tener un interface visual en flash?. ¿Pillais un poco la idea?. Por supuesto que el código fuente generado es susceptible luego de editarse en el IDE de arduino.

Ahí es donde quiero llegar un poco con el tema este de flash, de momento esa referencia "basica" está en camino, cuando tenga algo presentable lo subo, pero tengo un par de semanillas bastante intensas ahora. Entretanto se admiten sugerencias para el documento de especificaciones.

jo, que buena pinta tiene eso, quique, aunque de la mitad de las cosas no me entere..

por ejemplo

  • que es el IDE de arduino?
  • que es un recubrimiento del compilador? algo que sustituye a los comandos?
  • que es el documento de especificaciones? la lista a los reyes magos?

ah, y cojonudo lo de poder hacer una simulacion de nuestra instalacion antes de ir al sitio y montarla. tampoco conozco flash :cry: pero como sería? como una pelicula de eventos al estilo de director, con lina de tiempo, ventanitas para imagen, sonido, texto, etc?

a mi me gustaria una interfaz que fuera como tener fisicamente en una mesa los sensores, potenciometros, botones, etc por un lado y los motores, electrovalvulas, leds, etc por otro; que los pudiera conectar por cables virtuales (rayas con el raton que ofrecieran un menu sobre como quieres comunicar por ese cable) y que, tras pedirme los valores de cada cosa (voltios, amperios, watios, lo que corresponda a cada elemento) me dijera como y con que electronica específica lo tengo que conectar.

eso seria la polla limonera, pero es un sueño?

perdon, queria decir la pera limonera

jo, que buena pinta tiene eso, quique, aunque de la mitad de las cosas no me entere..

por ejemplo

  • que es el IDE de arduino?
  • que es un recubrimiento del compilador? algo que sustituye a los comandos?
  • que es el documento de especificaciones? la lista a los reyes magos?

ah, y cojonudo lo de poder hacer una simulacion de nuestra instalacion antes de ir al sitio y montarla. tampoco conozco flash :cry: pero como sería? como una pelicula de eventos al estilo de director, con lina de tiempo, ventanitas para imagen, sonido, texto, etc?

a mi me gustaria una interfaz que fuera como tener fisicamente en una mesa los sensores, potenciometros, botones, etc por un lado y los motores, electrovalvulas, leds, etc por otro; que los pudiera conectar por cables virtuales (rayas con el raton que ofrecieran un menu sobre como quieres comunicar por ese cable) y que, tras pedirme los valores de cada cosa (voltios, amperios, watios, lo que corresponda a cada elemento) me dijera como y con que electronica específica lo tengo que conectar.

eso seria la polla limonera, pero es un sueño?

Por partes, (me perdonen los programadores):
-El IDE de arduino es ese programa en el cual editas, compilas y exportas hacia la tarjeta el código fuente.

  • un recubrimiento de este programa es otro programa más amigable (un entorno gráfico) que utilice el IDE desde un nivel superior (de ahí recubrimiento). De esta manera, efectivamente, en vez de introducir comandos, puedes arrastrar componentes visuales y el código se genera de manera interna.
  • El documento de especificaciones es más o menos eso. Sirve para, antes de ponerte a codificar, saber a donde quieres llegar. Planificar en programación suel dar mejores resultados que no hacerlo.

La mala noticia, lo que se puede hacer con esto tampoco es para flipar. Nunca llegarás al nivel de control que tendrías programando el IDE. Probablemente la cosa no pueda llegar mucho más lejos que generar el código que gestione entradas y salidas de la placa de una manera bastante genérica. Eso sí, al ser totalmente gráfico, no desanimará a los que empiecen. Además una vez generado el código, se puede acceder a él para modificarle a tu gusto.

Flash no tiene demasiado que ver con Director. Tengo ya una maqueta en flash con un planteamiento sobre cómo podría ser: constaría de tres pantallas (escenas en flash) accesibles mediante pestañas: En la primera podrías hacer la asignación entre los pines de la tarjeta y una librería de sensores actuadores standard. En la segunda podrías vincular de forma gráfica sensores con el led de prueba, puerto serie o alguna salida y en la tercera, se podría ver una simulación (rudimentaria) del asunto.
Realmente, esto de la simulación me lo estoy pensando ya que en el mundo virtual siempre es todo más bonito que en el mundo físico, por lo que creo que no conviene simplificar mucho más las cosas (para aprender no queda más remedio que pegarse un poco con las cosas). Esto no pretende ser más que una referencia para un taller dirigido a personas poco expertas en electrónica y programación. Para los avanzados lo bueno es que la segunda de las tres pantallas se puede adaptar para generar código muy rutinario y luego adaptarlo ya desde el IDE.

Ya dije que particularmente me gusta programar a bajo nivel, pero se me ocurren unos cuantos casos en los que podría venir bien tener algo que genere código desde un entorno gráfico (por ejemplo lo que comenté de la máquina de estados finitos, regulación de motores, midi, ...y ¿lo digo o no lo digo?... venga! lo digo, lógica borrosa que debe ser algo así como el Santo Grial y que me he tomado como un reto personal desmitificar)

bueno, cada loco con su tema:

Queridos Reyes Magos Electrónicos:

Como llevo lustros dedicado a esto de jugar con lo que nos gusta y casi nunca me habéis traído algo que vaya más allá que el carbón de algún circuito me decido a pediros por escrito la herramienta que me haría el ente más feliz a este lado de la pantalla.

Un taller-estudio-laboratorio virtual e inteligente en mi ordenador,
con un gran tablero de trabajo en el centro de la pantalla y un montón de cajoncitos alrededor donde tener toda clase de componentes.
Hay básicamente cuatro grupos de cajones:
Entradas, salidas, control y alimentación.
En entradas vemos botones, potenciómetros, sensores de todas clases incluyendo ratones y teclados de ordenador.
En salidas tenemos motores, resistencias, ventiladores, steppers, electro-válvulas, relés, toda clase de cosas que suceden por la electricidad, incluyendo imágenes en pantallas de ordenador o sonidos por altavoces.
Control está reservado a elementos que van a contener la lógica de nuestra representación independientemente del grado de complejidad. Normalmente un microprocesador o un ordenador.
En el departamento de alimentación encontramos toda clase de fuentes AC y DC: enchufes, adaptadores, transformadores, fuentes de alimentación regulables, pilas, baterías, placas solares, etc.

Hay también un pequeño block de dibujo en el que me construyo piezas del mundo real que voy a usar en mi instalación y que tras preguntarme el tamaño y los materiales, mágicamente, me las pasa al tablero donde tengo la instalación de forma que puedo poner los actuadores y los sensores en su sitio.

Cuando sacas un componente de un cajón y lo pones sobre la mesa te aparece una representación real de la cosa en cuestión; no tiene calidad fotográfica, de hecho es un icono muy gráfico y ligero, pero es en 3D así que luego puedo ver toda la instalación desde diferentes ángulos y luces.
En ese banco de trabajo puedo colocar, por ejemplo, motores que son muy parecidos al que acabo de encontrar en una vieja xerox. Al apretar en él con el ratón me sale una pestañita en la que le puedo meter los valores de mi motor real.
Puedo sacar un microprocesador si lo necesito e interconexionarlo mediante cables virtuales que me preguntan sobre los tiempos y los voltajes con sensores que saco de otro cajón para que detecten nosequé y se produzca una respuesta nosecuantos? p.ej: una bombilla que se enciende, algo que suena por un altavoz que he sacado de otro cajon, algo que pasa en la pantalla del ordenador, una electro-válvula (que he sacado de otro cajón y/o he parametrizado desde el mundo real, mi válvula de la basura) que se abre?)

Cuando estoy satisfecho el programa hace todos los cálculos y añade los diodos, resistencias y demás orfebrería que sean necesarios y los muestra en el tablero para que yo los mueva con el ratón a mi antojo, aunque como es muy ordenado me los pone siempre donde menos ocupan y mas eficaces funcionan, pero si por ejemplo tengo que mover un sensor a seis metros él vuelve a calcular la caída de tensión y mete, tras preguntarme, un cable mas gordo o un alimentador en medio.
Puedo sacar mi propio ordenador encima del tablero de trabajo y ver las interconexiones con el microprocesador para programarlo y monitorizarlo.
Para programar sale un ayudante que me pregunta que qué quiero que pase y cuando. Todo el diálogo es a base de menús desplegables entre todas las diferentes opciones que me ofrece la configuración de la instalación virtual que tengo montada en el tablero. Cuando le vaya cogiendo más el tranquillo podré utilizar unos comandos que agilizan mucho el trabajo pero no es imprescindible. El ayudante me muestra las posibles incongruencias de mi diseño y como solucionarlas.

Cuando lo tengo todo listo lo puedo poner en marcha.
Tengo una línea de tiempos y un story board (o parecido) en el que puedo ir metiendo a mano los inputs del mundo real sobre los sensores y ver paso a paso las reacciones del resto de los componentes. El programa (un señor vestido de gurú con barbas y pelos aparece en la pantalla cada vez que lo necesita) me ha estado pidiendo toda la información que necesitaba para acoplar todo lo que yo he puesto sobre el tablero de forma que yo no he hecho sino responder preguntas (las necesarias, no largos listados); también me sugiere optimizaciones de lo que hay y defectos que encuentra.
Puedo ir grabando toda la secuencia de funcionamiento para tener una maqueta virtual de la obra, que por supuesto puedo editar hasta tener una buena herramienta para ir al despacho del señor que firma?
Si la respuesta de ese señor, impresionado por la demo, es que sí entonces el programa me diseña el esquema electrónico de mi instalación y me da la lista de componentes para ir a la tienda.

Si me traéis esto funcionando prometo no volver a tener envidia nunca mas de mis amiguitos músicos y os encenderé un led de por vida en un altarcito que ya os estoy preparando.

Muchos abrazos
Ardulino

Hola!! Precisamente tengo que hacer para la Universidad aquello que describen en éste tema, alguien podria ayudarme ?? ya sea en cuanto a programacion en Action Script o integracion con el compilador de Arduino??

Gracias...