Felix Maocho

Para quien le interese lo que a nosotros nos interesa

Curso de Arduino – Que hace y como funciona es un programa de Arduino

Por Félix Maocho 
4/12/2013

Objetivo de este post

Describir como escribimos en nuestro PC un programa, lo verificamos, lo traducimos a lemguaje máquina y cargamos en el chip de la tarjeta controladora Arduino y dar una primer visión de como se estructuran los sketch o programas de Arduino

Para las prácticas de este post no se necesita la tarjeta controladora Arduino pues es un ejercio aun exclusivamente teórico. Sin embargo debes ir consiguiendo la tarjeta arduino pues pronto comenzarñas a utilizarla. Con sulta en el primer post de este curso el material que debes adquirir, (con un coste aproximado de 30 €), para poder seguir el curso con aprovechamiento, .

________________

Escribir un programa para que gobierne la tarjeta controladora Arduino, pasa por los siguientes pasos:


1.- Teclear el programa

El entorno de programación que habremos cargado en nuestro ordenador, nos provee de un editor de programas tal como se ve en la imagen que abre este post, una pantalla en blanco,  que es como un tratamiento de textos, como por ejemplo el conocido Word permite que escribamos lo que queramos, solo que esta especializada en recibir textos que son programans de Arduino y tiene para ello a la hora de escribir muchas facilidades como veremos cuando la usamos.

Sin embargo la escritura del programa ha de hacerse de acuerdo con unas estrictas normas sintácicas, (que iremos aprendiendo poco a poco), debido a que el procesador solo entiende sentencias que contengan mandatos dados con un formato predeterminado. yque puedan ser cumplidos con una lógica sencilla, pero que aparta al “lenguaje de programación”, del “lenguaje natural” que constantemente alude a un entorno conocido para quien escucha.

Si dices (mandas) a alguien, · tráeme un vaso de agua”, estas dando por supuesto que esperas que te traigan el recipiente llamado ·vaso de agua”, pero aunque no lo hayas especificado, que te lo traigan lleno de agua y no tienes que indicar donde esta el vaso de agua, ni le grifo, ni como se abre el grifo, pero si una orden semejante se da a un procesador, de momento,y por muchos años, este aparato carece de  esos conocimientos del entorno, por lo que una orden similar dada a un robot, es muchísimo mas compleja que dada a un humano.

Ello hace delicada la labor de programar y sujeta a muchas pruebas y error, porque estamos poco acostumbrados a describir óredenes con el nivel de minuciosidad que precisa un procesador, pero no hay que confundir lo complejo, con lo difícil, programar es complejo y minucioso, pero para nada exige un elevado coeficiente intelectual. Programar está mucho más próximo al oficio artesanal que a un trabajo intelectual, ñude a que le llegue a aparecer apasionante o que le aburra pero ello tiene que ver con su personal indiosincracia pero no con su inteligencia,

Así por ejemplo  si queremos restar el valor que en determinado momento del programa tienen dos variables que vamos a llamar, “variable1” y “variable2” y queremos dejar el resultado de la resta en la variable “diferencial”, escribiríamos una sentencia tal como :

                diferencia  = variable1 – variable2 ;

Lo cual no parece muy complicado, solo que la sintaxis y la lógica del programa exige lo siguiente, que las tres variables hayan sido definidas como variables numéricas con anterioridad, pues si por ejemplo la variable1 la definimos como alfanumérica y tiene el valor por “324”, aunque todos los caracteres sean números, los considerara como letras y no los admitirá en una operación aritmética,

No solo eso, si puede ocurrir que variable1 es menor que variable2, deberemos definir “diferencia” como variable numérica con signo, puesto que puede alcanzar valores negativos y por último, es necesario indicar el final de esta sentencia con un punto y como “;” para que la máquina “se entere”, que hemos acabado la sentencia y comenzamos otra nueva, pues sino lo que escribamos, aunque esté en otra línea, entenderá que son elementos de la fórmula matemática que estamos definiendo, y al no encontrar el símbolo de operación entre ello dará un error.

Como vemos hasta la más sencilla sentencia puede dar a muchos y muy variados motivos de error si no se siguen unas normas muy concretas de sintaxis. Por ello, una vez que acabemos de escribir el programa, pasaremos al punto siguiente, donde de forma automática se verifica que todo lo escrito es correcto respecto a las normas de sintaxis del lenguaje de programación.

2.- Verificar el programa

Al marcar en el primer botón de la barra de herramientas que tiene el editor, automáticamente se comprueba que todo lo escrito cumple con las reglas previstas. Si al verificar lo escrito tropieza con algún error, el trabajo se paraliza y la máquina indica en donde se ha producido y en la base de la pantalla aparece un mensaje con la posible causa de ese error.

Comprobaremos, que con más frecuencia de la deseada, el mensaje de error a veces enmascara, más que aclara, las causas reales del error cometido, debido a que la Inteligencia Artificial del programa de verificación es muy escasa y responde con la primera causa que encuentra, aunque sea remotísima la probabilidad de que esa sea la causa del error.

Por ejemplo muchas veces se nos olvidará poner el caracter punto y como “;” al final de una sentencia, o tecleas mal y pones dos puntos “:” o simplemente coma  “,”. No hay nadie que yo conozca que esto no le pase montones de veces, pues bien, la máquina siempre piensa que el error no es ese, sino que deseas incorporar a la sentencia el contenido de la siguiente fila, dando así lugar a textos de error tan variopintos como inútiles.

Afortunadamente, no siempre ocurre eso y a veces el mensaje de error es más o menos certero y nos facilita arreglar los errores que cometemos, por ejemplo si escribo “varable1” en vez   “variable1” dira algo así como “varable1 not defined”, pues no sabe que he cometido un error de ortografía, sino simplemente, que “varable1” no esta definida como variable de ningúno de los diferentes tipos de los posibles. Sin ser perfecto el mensaje, en este caso nos orienta hacia que ese nombre es incorrecto, bien por no haberle definido previamente, lo que también ocurre frecuentemente, pues a medio programa podemos necesitar una nuev variable y se no olvida darla de alta, o bien, (como en este caso), porque lo hemos escrito mal.Por tanto sin tomar ni mucho menos los mensajes de error como dogma de fe. puede ser de bastante ayuda tenerlos en cuenta..

A veces los confusos mensajes y la limitación disléxica, que a muchos nos impide leer pausadamente que realmente hay escrito, y no leer lo que quisimos escribir, hace que nos volvamos algo locos a la hora de poner a punto un programa. Daré algunos trucos que yo, (y otros muchos), usamos para ir poniendo a punto los programas, veréis que escribir programas es una tarea  laboriosa y pulcra, pero no especialmente difícil.

Una vez pasada la validación podremos pasar al siguiente punto compilar (traducir al “lenguaje máquina”) el programam (sketch), o y trasladarlo a la tarjeta controlador Arduino

3- Compilación y traspasar el programa,

Una vez corregidos todos los errores que detecta la verificación podemos pasar a compilar el programa y cargarlo en Arduino. Para ello marcamos en el segundo botón de la barra de herramientas del editor.

¿Qué es compilar?

Queda ahora una parte absolutamente automática compilar el programa, o  “traducir” el programa escrito a “lenguaje máquina”, el programa lo hemos escrito en “lenguaje natural, es decir a en un lenguaje que, (más o menos), entienden las personas., el compilador lo traducen a “lenguaje máquina”, teniendo en cuenta que un procesador solo puede hacer las siguientes cosas, leer una instrucción y en función de lo que ella diga hacer una de estas tres cosas llevar/traer un valor digital (sceros y unos) a/desde una dirección de memoria, comparar dos valores y decidir cuales el mayor, sumar en base dos dos números, o trasladar el mayor o el menor a una dirección de memoria, por tanto traducir a lenguaje máquina es trasformar una o operación sencilla como puedes ser “sumar” (+) en una rutina complicadísima de cientos de instrucciones, que busca en las direcciones de memoria los valores a sumar, suma ambos números en base dos y trasladar el resultado de la suma a una dirección de memoria que contiene el resultado.

Afortunadamente este trabajo es automático y transparente al usuario, pues ese si es un verdadero trabajo de chinos que han desarrollado generaciones anteriores de informáticos para que nosotros lo utilicemos sin dificultad, al igual que generaciones de inventores trabajaron en inventar el papel, el lápiz y los algoritmos de suma, para que tu con ayuda de un lápiz y un papel hagas una suma, sin saber ni hacer papel, ni el lápiz, ni saber porque el algoritmo de suma que inventaron los indios jacia el 1400 y propagaron los árabes por Europa , funcionan siempre bien y sin excepciones a la hora de hacer una suma.

Cargar el programa en Arduino

Una vez cambiado todo el programa a instrucciones de lenguaje máquina se carga también automáticamente ese programa en la Tarjeta controladora en concreto en el procesador que es la chip más grande y con más patas de la tarjeta, lo que podremos observar pues hay dos leds marcados como RX y TX que parpadean mientras el programa se trasfiere a la tarjeta. Al cargar un nuevo progrma se destruye el que hubiera anteriormente y esta es la forma de destruir un programa de la tarjeta controladora, por que sino, con solo dar energía a la tarjeta el programa que tenga grabado internamente se pone en marcha.

Este proceso de carga  no debe producir error, salvo que tu ordenador no reconozca o sepa encontrar la tarjeta controladora y ello puede ocurrir por dos motivos únicamente:

- El más sencillo,  que tengas mal enchufado el cable USB que une la tarjeta al PC, comprueba el cable, si estaba mal enchufado, repite la operación.

- El más complejo, que tu PC se empeñe en mandar la información por un puerto (salida/entrada), en el que no tienes enchufada la tarjeta. En un procesador hay múltiples salidas o puertos, por los que el procesador manda/recibe datos a aparatos a los que está unido, así hay un puerto que conecta con el teclado y otro con ia pantalla. Igualmente hay puertos hacia el lector de DVD, hacia los altavoces, etc.

Esos aparatos que físicamente forman parte del PC no dan problemas pues ya están debidamente conectados de fábrica. Hay otras salidas más conflictivas y varias suelen ser salidas USB. Por ello se conectan los aparatos habituales , como un pendriver, un disco duro o una impresora, las cámaras fotográficas, etc.

Los ordenadores modernos suelen estar preparados ( aunque no siempre) para reconocerlos y una vez detectados automáticamente reciben/envían los datos como los necesitan esos aparatos, no entran igual los aparatos de un scanner que de un disco duro, pero el PC internamente asimila los cambios que hay que dar a la informacion para que los datos sean útiles a ambos lados del cable.

A veces pasa que una determinada máquina no es reconocida de fábrica, (algo cada vez más raro), entonces es necesario cargar un “driver” (conductor) que es un programa intermedio que transforma el formato de los datos que salen/ entran en el procesador, tal como los necesita el aparato que d se conecta.

Entre estos equipos no habituales está la Tarjeta Arduino, (quizá en el futuro no sea así), por eso hay que cargar un  “driver” dentro del PC que preparan los datos tal como conviene a ambas máquinas, para ello “engaña” al ordenador haciéndole creer que esta unida a un “puerto com” y cambia la información que circularía en ese punto a una salida USB, mucho más sencilla de manejar por un no experto pues basta con enchufar y desenchufar.

Pero como oficialmente las cosas entran por un determinado “puerto com”, tendremos que asegurarnos que los programas que enviamos a Arduino manden la información como si fuera a ese determinado “puerto com” que se asigna a Arduino, por lo que antes de compilar indicamos el “puerto com” que hemos de utilizar para que así quede grabado en el programa en lenguaje máquina. Si no tenemos bien elegido el “puerto.com” tendremos que indicarlo seleccionandolo manualmente y repitiendo la compilación.

Puesta a punto el programa.  Cargado el programa en la tarjeta Arduino, el ordenador ya no es necesario, de hecho puede Arduino puede funcionar separado del Ordenador con unas pilas que le den energía, por ejemplo los robot hechos con arduino como el qe se ve en la fotografía, suelen funcionar independientemente del PC y por tanto funcionan con baterías, como claramente se observa en la imagen

aunque además de dar energía a la tarjeta podemos eventualmente hacer otra cosa con el Pc y el cable USB muy importante, comunicarnos mediante el teclado y la pantalla PC y cable USB con la tarjeta, de modo que podamos mandarle órdenes on-line y recibir información de lo que pasa en las tripas de la controladora.

Al fin, el programa en la tarjeta

La satisfacción total nos llega cuando hemos conseguido finalizar el programa sin que la validación detecte un error, hemos compilado el programa y transferido con éxito a Arduino el programa, algo que físicamente observaremos al ver parpadear unos led marcados como LX y TX.

Sin embargo solo hemos pasado la primera barrera, que consiste en la depuración de errores, que pudiéramos definir como de “pizarrín”, entramos ahora en otra fase, que consiste en eliminar los errores de lógica. Incluso en programas sencillos, se nos escapan posibles estados que quedan fuera de control y que hacen que el aparato que hemos diseñado funcione, pero no como habíamos previsto, sino de una forma aleatoria o que se meta en un callejón sin salida.

Habrá que aprender también a solucionar esto problemas, que son comunes a todos los programas y cuando más complejos peor pues más cabos quedan sueltos. La solución no es fácil, pues el mejor programador tan solo puede decir que en todas las pruebas que ha hecho no ha detectado error, pero nada más.

Para consolar a todos recuerdo que un pequeño error , cambiar un”-” por un “+” fue el responsable que se descubriera que el telescopio Hubble que había costado  un montón de millones era miope pues la maquina numérica que controló el pulimentado de su espejo principal tenía ese error en la programación que la controlaba. Segun parece reparar el error costo 2000 millones de dólares.

Si la NASA que tiene los mayores control de errores y que ha hecho cosas tan maravillosas como hacer chocar un satélite con un cometa millones de kilómetros de la Tierra, le ocurren cosas así, y me dirían lo que nos puede ocurrir a nosotros , pobres pecadores, pero ahí esta precisamente la gracia del asunto, El ir superando todas las dificultades que se nos pongan por delante.

Para llegar a esto será necesario cargar en nuestro PC los programas de edición, validación, compilación y carga de los programas en la tarjeta así, como el “driver” que permita reconocer la tarjeta controladora Arduino. pero eso lo haremos en el próximo programa que ya tengo a medias.

Los sketch de arduino

A continuacion describo someramente como son los “sketch” o programas de Arduino. Un programa de Arduino está sujeto a un esquema fijo e invariable, El programa en su conjunto está formado por dos partes:

La primera se recorre una única vez y nunca más vuelve a pasar por ella, (salvo que se reinicie el programa, haciendo eso que nos gusta tanto a los informáticos de  apagando el aparato y volverlo a encender, o el equivalente que es apretando el botón “Reset· o posiblemente (porque no lo sé) mandando tensión a la pin “reset” de la tarjeta)

La segunda parte en cambio se recorre continuamente y de forma incansable, cuando se llega al final de esta segunda parte, vuelve a la primera línea de esta arte y repite todo de nuevo.  Asi en conjunto Arduino puede hacer uno de los dos esquemas básicos de la programación lineal que explicaba hace mucho tiempo en otro post llamado Rudimentos de programación lineal. II Esquemas de programas  que quizá le convenga mirar.

Donde indicaba que un esquema básico era el que se corresponde con este gráfico.

Si observan la única diferencia entre lo explicado de un sketch de Arduino y uste modelo de programación lineal es que Arduino no tiene previsto el bloque que pone “FIN” porque en Arduino no está previsto que el programa acabe hasta que se quede sin energía es decir no está previsto que acabe sino que muera.

La primera pregunta que a todos nos asalta es cómo diablos Arduino puede por ejemplo programar las luces de un escenario donde toca un conjunto de Rock si no hace más que dar vueltas al mismo molino todo el rato. y más aun se lo preguntaran si les cuento que la caja declarada aquí como “INICIO” solo vale (salvo rarísimas excepciones), para definir todo aquello con lo que vamos a trabajar en lo que llamamos “PROCESO”.

En efecto la tarjeta controladora Arduino es como un corte de tela con el que nos van  a hacer un traje a medida, Lo primero será cortarla pieza completa en trozos quesiguen un patrón con la forma adecuada al traje que queremos hacer y coserlos de la forma correcta, sin  olvidár ningún detalle,por ejemplo acordarse de hacer los ojales correspondientes a los botones que va a llevar , y poniéndolos en el lado que corresponda según el traje sea para un hombre o para una mujer, asi como colocar el forro y las hombreras correspondientes y todas las demás cosas hasta tener el traje a la medida y de acuerdo con lo que se quiere hacer con el vestido.

Deesa forma un corte de tela, un pedazo rectangular de tela puede dar lugar a trajes muy diversos como  puede ser el chaqué para una boda, o un mono de obrero, o un uniforme de Guardia Civil, que son trajes aptos para darles un uso determinado.

La Tarjeta Arduino, después de  los cortes y cosidos hechos en el la funcion “INICIO”, se transforma en el aparato adecuado para hacer algo en concreto que deseamos hacer con ese aparato, ir de padrino a una boda, protejernos para pintar un piso, o mimetizarse con el paisaje para multar a todos los pase a más de 120 kmh,,  por por una carretera diseñada para ir a 150 kmh., en un coche cuya  velocidad de crucero prevista, es 160 kmh.

Una vez hecho el traje ya lo que hagas dentro de él, puede ser muy variado y dependerá de lo que esté previsto de acuerdo con diversos factores, estar serio durante la misa, bailar el primer vals con la novia, o terminar bailando la Polca de Jalisco, agarrado de las caderas de la tía Fernanda pasa largamente las 2 de la madrugada. El traje es el adecuado para hacer lo que esté previsto y eso lo marca el “PROCESO”

Pero, ¿como el “PROCESO” puede mandar cosas tan diversas si no d hacer mas que dar vueltas?. – La cosa tiene un pequeño truco, lo que llamamos “PROCESO” es en realidad, un conjunto de cajas que contienen instruciones diferentes dentro, estas cajas se abren y se hace lo que dice en el interior o no se abren y se pasa a la siguiente de acuerdo con algo que ocurre que esta preestablecido en el programa.

El programa dice que cuando suene la campanilla de la consagración, se arrodille uno y que cuando el cura dice “Iros la misa se ha acabado”, viene la firma de los papeles del registro junto con los testigos, y que luego se va al salón del convite etc etc. y que allí se comienza a comer y bailar y la cosa se repite hasta el final de los tiempos o hasta que el cansancio te vence (y desenchufamos), pero se repite solo el comer y el bailar, pues hecho una vez se salta la caja que contiene la ceremonia religiosa, el desplazamiento al salón y el vals de apertura y en otras vuetas del proceso se repite lo del comer y bailar. Asi de sencillo o así de complicado como quieras verlo.

Programar es pues dividir de un proceso complejo en procesos simples, “ir a la iglesia”, “ir al convite” que  su vez, subdividimos en procesos más sencillos, “entrar con la novia”, “oír la misa”, “firmar el registro civil”, proceso que podemos descomponer en otros aún más sencillos, de modo que pasemos de lo complejo a lo sencillo. Al fin y al cabo, la tarjeta Aarduino, solo va a encender y apagar circuitos y a mirar el voltaje de otros circuitos, por tanto podemos descomponer cualquier en miles de instrucciones simples hasta llegar a la instrucción de encender y apagar, algo tan sencillo de hacer como encender y apagar la luz de nuestro cuarto, que cualquier persona domina a la perfección.

La virtud está en el término medio, descomponer una tarea, que no tenemos ni idea como podemos programarla, en otras más simples que sí sepamos programar con las funciones básicas que viene en la librería de nuestro lenguaje de programación y dejar que eso que han inventado otros sea lo que encienda y apague los circuitos.

Volviendo a los “sketch”, (esquema) de Arduino, estos tiene dos partes en la primera se definen las variables y parámetros que vamos a utilizar en el programa y a continuación entra la función “setup()”, (configurar)  que define como que parte de la tarjeta va a funcionar y cómo lo va a hacer, (confeccionar el traje) , que pines estarán activos, por cuales se va a poder enviar energía, (OUTPUT)- o por el contrario, por cuales se recibirá energía de fuera, (INPUT.). si vamos a utilizar comunicaciones síncronas o no y con que velocidad se van a mandar los impulsos que marcan si se mando un 0 o un 1 y poco más.

A continuación comienza la función “loop()” (bucle) que como hemos indicado se ejecuta en su totalidad indefinidamente, aunque en cada vuelta puede que lo haga de forma diferente en función de valores que al cambiar hagan que unas sentencias se ejecuten y otras se salten en ese bucle.

Si no ha entendido mucho no se preocupe porque pronto hará físicamente los primeros sketch y todo lo que he explicado teóricamente lo comprenderá en la práctica, para ello faltan solo dos programas, en uno le explicaremos como bajarse, (gratuita y legalmente), a su ordenado los programas que necesita para escribir, validar, compilar y trasladar los programas a Arduino y eel driver que hara que su PC reconoacca la Tarjeta Ardiuino y al siguiente comenzaremos a programar cosas sencillas para que vaya comprendiendo mejor lo que hou queda obscuro y poco a poco ir aprendiendo el nuevo lenguaje de programación.

Félix Maocho

El primer capítulo del curso lo encontrará aquí Curso de Arduino – La utilidad de saber Arduino

El anterior capítulo lo encontrará aqui Curso de Arduino – Primer contacto con la controladora Arduino

Por el momento este es el último post escrito del Curso

About these ads

4 diciembre 2013 - Posted by | Curso de Arduino, General | , ,

7 comentarios »

  1. […] Por Félix Maocho 4/12/2013 Objetivo de este post Describir como escribimos en nuestro PC un programa, lo verificamos, lo traducimos a lemguaje máquina y cargamos en el chip de la tarjeta controlad…  […]

    Pingback por Curso de Arduino – Que hace y como funcio... | 6 diciembre 2013 | Responder

  2. […] Por Félix Maocho 4/12/2013 Objetivo de este post Describir como escribimos en nuestro PC un programa, lo verificamos, lo traducimos a lemguaje máquina y cargamos en el chip de la tarjeta controlad…  […]

    Pingback por pCurso de Arduino – Que hace y como funci... | 6 diciembre 2013 | Responder

  3. […] Describir como escribimos en nuestro PC un programa, lo verificamos, lo traducimos a lemguaje máquina y cargamos en el chip de la tarjeta controladora Arduino y dar una primer visión de como se estructuran los sketch o programas de ArduinoPara las prácticas de este post no se necesita la tarjeta controladora Arduino pues es un ejercio aun exclusivamente teórico. Sin embargo debes ir consiguiendo la tarjeta arduino pues pronto comenzarñas a utilizarla. Con sulta en el primer post de este curso el material que debes adquirir, (con un coste aproximado de 30 €), para poder seguir el curso con aprovechamiento, .  […]

    Pingback por Curso de Arduino – Que hace y como funcio... | 6 diciembre 2013 | Responder

  4. Hola Felix,
    Me parece muy interesante el curso, pero veo que la última entrada es de diciembre. ¿Tiene pensado seguir con el curso?
    Un saludo

    Comentario por JoseLin | 24 enero 2014 | Responder

    • Mi intención es seguir, pero hacerlo bien necesito dos cosas, tiempo y tranquilidad, desde antes de Navidades que no gozo de ninguna de esas dos cosas, pero mi intención es seguir con el curso, A ver si puedo seguir pronto. Muchas gracias por tu comentario para mi es un motivo de alientp

      Comentario por felixmaocho | 24 enero 2014 | Responder

  5. Espero ansioso que tengas tiempo y tranquilidad, necesito saber como hacer programas complejos ya que el sketch tiene un númoro bastante limitado de bytes, y supongo que para hacer algo un poco complejo sera cuestion de hacer varios sketch relacionados entre si, pero no tenog la mas remota idea de como hacerlo.
    Gracias por tu aporte.

    Comentario por David | 12 marzo 2014 | Responder

    • Tienes una limitación que es la memoria del procesador de ARDUINO, el microcontrolador de la placa Arduino UNO tiene 16 Kb Memoria Flash, (donde Arduino almacena el sketch), 1 Kb de memoria SRAM (donde los sketches almacena y manipulan variables al ejecutarse) y 512 bytes de memoria EEPROM, que actúa como disco duro, es decir que se pueden escribir datos intermedios y recuperarlos cuando sea necesario, incluso después de cargar un nuevo programa en la memoria Flash, (independientemente que Arduino se haya apagado o no entre ambos programas.

      Por tanto, si haces un programa que compilado ocupa más de 16K, o que en su procesado las variables no cabenen en 1 Kb de memoria SRAM, no podrás o cargarlo en ARDUINO o conseguir que de procese el programa, aunque te anticipo, que si trabajas con técnicas conservadoras de memoria como utilizar nombres de variables de una o dos letras, defines variables lo mas pequeñas que se puedan, etc., en 16K y 1Kb caben muchísimas cosas. Como referencia. creo recordar que 16Kb era la capacidad del Spectrum menos potente y con ello se hacían hasta juegos de ordenador bastante complejos.

      Si no hay forma, o (mas probablemente) n sabes achicar su tamaño, (porque la actual generación de programadores no sabe ahorrar bites), se me ocurren varias soluciones, pero también te anticipo que en Arduino, no he llegado a ese estadio de dificultad, por tanto lo que cuento es solo teoría.

      La primera solución, la más sencilla y obvia, (con frecuencia en informática, lo más sencillo es lo más adecuado), buscar una tarjeta de la familia Arduino de mayor capacidad, que además será más potente, (y, claro, más cara).
      La segunda solución, es fraccionar el programa en dos programas, por ejemplo, uno que realiza los cálculos y otro que con esos cálculos ejecuta acciones, con un programa en el PC que cargue primero un programa y que cuando acaba de ejecutarse, guarde los valores calculados en la EEPRON y manda una señal al PC, cargue el segundo programa, que utilizará los datos guardados en la EEPRON en el paso anterior. para ejecutar en función de ellos lo que consideres conveniente y al finalizar mande una señal y repitas el proceso. Igual que lo puedes hacer en dos programas lo puedes hacer con N programas, es la llamada técnica de fases e interfases, los programas sucesivos son las fases y los datos guardados en la EEPRON entre dos programas son las interfases, Si te gasta EEPRON, es posible conectar memorias EEPRON adicionales a la tarjeta ARDUINO, a través de los PINs (Cuento lo que leo, no lo que, (de momento), sé hacer, que quede claro).

      Tercer sistema, con varios ARDUINOS comunicados entre si por los puertos serie, parecido al caso anterior, salvo que aquí, en vez de un funcionamiento secuencial, puede ser sincrónico. (En principio, y según mis escasos conocimientos, me parece la solución más sencilla, (despues de la de comprar un ARDUINO más potente, que sigue siendo mi primera elección). En l practica es transformar ARDUINO en un multiprocesador, por ponerte un ejemplo es lo que en un principio (ahora ya no se como lo hara), hizo Google, que conectaba PC barat entre sí, en vez de compara maiframes, (no es que lo inventaran pero fueron mi primera noticia sobree los sistemas de escalado de procesos. Hoy el 99% de los superordenadores se construyen con este sistema.

      Cuarto sistema, utilizar el PC con el ARDUINO conjuntamente. con la técnica Cliente/Servidor. El PC hace de Servidor y realiza el peso de los cálculos y consultas a bases de datos que se precisen, (se supone que en el PC no vas a tener problemas de tamaño), con se ello elabora un vector de valores calculados que se manda al Cliente a través de la comunicación serie. ARDUINO recibe el vector y de acuerdo con las instrucciones recibidas ejecuta las acciones encomendadas y si es necesario crea otro vector con la informacion de los sensores (por ejemplo) que manda por el puerto serie al (PC) Servidor, a la espera de nuevas instrucciones. (Este esquema es el que (imagino) utiliza la NASA para comunicare con sus exploradores marcianos), independientemente que los robot ejecuten “actos reflejos” defensivos, como parase, si encuentra un obstáculo que no puede superar, o poner en marcha los ventiladores, si pasa de cierta temperatura, los actos que haces a requerimiento de la Tierra. supongo que lo habrán programado así, al menos yo, lo hubiera mandado hacerlo así, (porque hacerlo yo mismo supera mis conocimientos). Este proceso es el que está de moda pues la pareja “Nube”, “Navegador” son el modelo mas utilizado de Cliente/Servidor y INTERNET es el sistema de comuniccion que conecta ambos programas.

      SALU2

      Comentario por felixmaocho | 12 marzo 2014 | Responder


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 403 seguidores

A %d blogueros les gusta esto: