Lenguaje c para microcontroladores pic atmega Programación orientada a objetos
2.1 LENGUAJES DE PROGRAMACIÓN AnteriorSiguiente Anterior Siguiente
MIKROELEKTRONIKA
El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el código ejecutable y está compuesto por una serie de ceros y unos, aparentemente sin significado. Dependiendo de la arquitectura del microcontrolador, el código binario está compuesto por palabras de !, " o # bits de anchura. $ada palabra se interpreta por la $%& como una instrucción a ser ejecutada durante el funcionamiento del microcontrolador. 'o 'odas las instrucciones que el microcontrolador puede reconocer y ejecutar se les denominan colecti(amente $onjunto de instrucciones. $omo es más fácil trabajar con el sistema de numeración he)adecimal, el código ejecutable se representa con frecuencia como una serie de los n*meros he)adecimales denominada código +e). En los microcontroladores %$ con las palabras de programa de " bits de anchura, el conjunto de instrucciones tiene - instrucciones diferentes.
LENGUAJE ENSAMBLADOR $omo el proceso de escribir un código ejecutable era considerablemente arduo, en consecuencia fue creado el primer lenguaje de programación denominado ensamblador /AS01. Siguiendo la sinta)is básica del
ensamblador, era más fácil escribir y comprender el código. 2as instrucciones en ensamblador consisten en las abre(iaturas con significado y a cada instrucción corresponde una localidad de memoria. &n programa denominado ensamblador compila /traduce1 las instrucciones del lenguaje ensamblador a código máquina /código binario1.
+Este programa compila instrucción a instrucción sin optimi3ación. $omo permite controlar en detalle todos los procesos puestos en marcha dentro del chip, este lenguaje de programación toda(4a sigue siendo popular.
Ventajas Ve ntajas de en!"ajes de #$%!$a&a'()n de at% n(*e n( *e A pesar de todos los lados buenos, el lenguaje ensamblador tiene algunas des(entajas5 ncluso una sola operación en el programa escrito en ensamblador consiste en muchas instrucciones, haci6ndolo muy largo y dif4cil de manejar. $ada tipo de microcontrolador tiene su propio conjunto de instrucciones que un programador tiene que conocer para p ara escribir un programa &n programador tiene que conocer el hard7are del microcontrolador para escribir un programa %rograma escrito en $ /El mismo programa compilado al código ensamblador15 •
•
•
ensamblador, era más fácil escribir y comprender el código. 2as instrucciones en ensamblador consisten en las abre(iaturas con significado y a cada instrucción corresponde una localidad de memoria. &n programa denominado ensamblador compila /traduce1 las instrucciones del lenguaje ensamblador a código máquina /código binario1.
+Este programa compila instrucción a instrucción sin optimi3ación. $omo permite controlar en detalle todos los procesos puestos en marcha dentro del chip, este lenguaje de programación toda(4a sigue siendo popular.
Ventajas Ve ntajas de en!"ajes de #$%!$a&a'()n de at% n(*e n( *e A pesar de todos los lados buenos, el lenguaje ensamblador tiene algunas des(entajas5 ncluso una sola operación en el programa escrito en ensamblador consiste en muchas instrucciones, haci6ndolo muy largo y dif4cil de manejar. $ada tipo de microcontrolador tiene su propio conjunto de instrucciones que un programador tiene que conocer para p ara escribir un programa &n programador tiene que conocer el hard7are del microcontrolador para escribir un programa %rograma escrito en $ /El mismo programa compilado al código ensamblador15 •
•
•
2os lenguajes de programación de alto ni(el /8asic, %ascal, $ etc.1 fueron creados con el propósito de superar las des(entajas del ensamblador. En lenguajes de programación de alto ni(el (arias instrucciones en ensamblador se sustituyen por una sentencia. El programador ya no tiene que conocer el conjunto de instrucciones o caracter4sticas del hard7are del microcontrolador utili3ado. 9a no es posible conocer e)actamente cómo se ejecuta cada sentencia, de todas formas ya no importa. Aunque siempre se puede insertar en el programa una secuencia escrita en ensamblador. Si alguna (e3 ha escrito un u n programa para un microcontrolador %$ en lenguaje ensamblador, probablemente sepa que la arquitectura :S$ carece de algunas instrucciones. %or ejemplo, no hay instrucción apropiada para multiplicar dos n*meros. %or supuesto, para cada problema hay una solución y 6ste no es una e)cepción gracias a la aritm6tica que permite reali3ar las operaciones complejas al descomponerlas en un gran n*mero operaciones más simples. En este caso, la multiplicación se puede sustituir con facilidad por adición sucesi(a /a ) b ; a < a < a < = < a1. 9a estamos en el comien3o de una historia muy larga= >o hay que preocuparse al utili3ar uno de estos
lenguajes de programación de alto ni(el como es $, porque el compilador encontrará automáticamente la solución a 6ste problema y otros similares. %ara multiplicar los n*meros a y b, basta con escribir a?b.
Len!"aje C El lenguaje $ dispone de todas las (entajas de un lenguaje de programación de alto ni(el /anteriormente descritas1 y le permite reali3ar algunas operaciones tanto sobre los bytes como sobre los bits /operaciones lógicas, despla3amiento etc.1. 2as caracter4sticas de $ pueden ser muy *tiles al programar los microcontroladores. Además, $ está estandari3ado /el estándar A>S1, es muy portable, as4 que el mismo código se puede utili3ar muchas (eces en diferentes proyectos. 2o que lo hace accesible para cualquiera que cono3ca este lenguaje sin reparar en el propósito de uso del microcontrolador. $ es un lenguaje compilado, lo que significa que los archi(os fuentes que contienen el código $ se traducen a lenguaje máquina por el compilador. 'odas estas caracter4sticas hicieron al $ uno de los lenguajes de programación más populares.
2a figura anterior es un ejemplo general de lo que sucede durante la compilación de programa de un lenguaje de programación de alto ni(el a bajo ni(el.
urso para aprender a programar en lenguaje C utilizando un compilador para PIC, en concreto el PCW compiler de la casa CCS. Cursos sobre C en Internet a miles, pero todos los que yo he visto están realizados sobre compiladores de propsito general, como !icual C"" de #icroso$t %uilder C"" de %orlan, sin duda son e&celentes compiladores que nos permiten realizar aplicaciones para ordenadores de escritorio tanto en C como en C"" 'la versin orientada a objetos de C(, pero no sirven para programar PIC, es decir con el ejecutable que generan al compilar no se puede programar un #icrocontrolador. )o habitual hasta ahora es que los usuarios que se inician en este apasionante mundo de la programacin de #icrocontroladores, sea de la marca que sea, primero lo hac*an utilizando el lenguaje ensamblador, especi$ico no solo ya para cada marca de microcontrolador sino para cada modelo, ya que hay que conocer per$ectamente los recursos de cada #icrocontrolador '+mero de puertos de -ntradaSalida /elojes internos, etc. (. 0l principio de los tiempos de estos dispositivos esto era obligatorio ya que los recursos de memoria y velocidad de procesamiento no eran muy grandes y hab*a que optimizar el cdigo al má&imo, esto implicaba que hab*a que utilizar a la $uerza un lenguaje de programacin de bajo nivel que bien utilizado e&plotara los recursos de estos dispositivos sin desperdiciar memoria y velocidad de procesamiento, pero al igual que ha ocurrido con los ordenadores personales las prestaciones de estos dispositivos ha ido creciendo e&ponencialmente con el tiempo, siendo ya per$ectamente $actible el utilizar un lenguaje de alto nivel para programar estos dispositivos y aprovecharnos de las ventajas de portabilidad que o$recen este tipo de lenguajes, de esta manera por ejemplo podemos hacer un programa para un PIC en concreto y utilizarlo en otro de mayores prestaciones sin modi$icar apenas nada del cdigo $uente. 12uien puede sacar provecho de este curso3. -ste curso es para ti si4 5as programado PIC en -nsamblador y quieres hacerlo en un lenguaje de alto nivel como el C. +o has programado nunca #icrocontroladores pero conoces el lenguaje de programacin C de haberlo utilizado para otros propsitos. +o has programado nunca un PIC en -nsamblador, ni conoces ningn lenguaje de alto nivel como el C. -s decir, no tienes ni idea de #icrocontroladores ni de programacin '-sto es posible porque el curso va ha empezar desde cero es decir con el clásico 5ola #undo con el que empiezan todos los libros de iniciacin a la programacin. %ueno alguno pensará que para aprender a programar en C vale cualquier compilador de uso general y lo que realmente interesa es saber las instrucciones de C que tengo que utilizar para con$igurar por ejemplo un puerto como entrada o salida, o que cdigo tengo que utilizar para utilizar los convertidores 06 que incorporan ya casi todos los PIC, indudablemente ese es el propósito final de este curso y para ello paralelamente a 7l va haber otro donde se van a ver aplicaciones prácticas. Pero hay que tener en cuenta que los compiladores para #icrocontroladores son espec*$icos para estos dispositivos embebidos y no cumplen con el -stándar 0+SI C al 899 :, por lo que cuando est7s programando lo más seguro es que te vayas dando cuenta que una $uncin que en el C estándar $unciona per$ectamente aqu* te da un error al compilar. 0demás te irás quedando con mucho cdigo que lo has probado y sabes que te $unciona per$ectamente, cuando tengas que hacer una aplicacin práctica no tendrás la duda si puedes usar una determinada estructura en tu programa si es posible utilizar punteros o no y como hacerlo, porque ya lo sabrás a la vez que has ido aprendiendo el lenguaje de programacin y no solo eso, te irás $amiliarizando con las instrucciones espec*$icas del compilador4 de que herramientas dispone, sus $unciones precompiladas, su sistema de depuracin de errores, etc. 12ue herramientas voy a necesitar para realizar el curso3. -l compilador CCS seguro, vaya es de pago ya empezamos con problemas te puedes bajar una versin de -valuacin por ;9 d*as desde aqu*4 •
•
•
http://www.ccsinfo.com/ccsfreedemo.php
6espu7s de rellenar el $ormulario te descargas el programa de instalacin y lo instalas en tu ordenador como un programa más de Windo
>tra limitacin es que el tama=o del programa no puede superar los ?@ de memoria, aunque para los ejemplos que vamos a hacer aqu* te sobra. %ien ya tenemos solucionado el tema del compilador, bien sea por que con la demo nos apa=amos o porque tengo un amigo cojonudo que me va ha prestar uno con licencia para que pueda realizar el curso 'je,je.. (. %ien ya tengo el compilador y puedo empezar a programar y a crear mis .5-A 'para el que no lo sepa es el archivo que tenemos que cargar en nuestro PIC para que $uncione(. Bodo esto es muy elemental para el que lo sabe, pero como dije al principio este curso está pensado tambi7n para el que no tiene ni idea de programar microcontroladores. 0s* es que sigamos. na vez que tenemos nuestro .5-A tendremos que comprobar que $unciona realmente para ello tenemos dos opciones4 #ontar nuestro circuito con todos sus componentes, programar el PIC con un programador comercial como el PICSB0/B de #icrochip o con uno de los muchos que hay en Internet que sirven per$ectamente para empezar a programar estos dispositivos. tilizar un programa de simulacin electrnica como Proteus que tiene la ventaja de disponer de una e&tensa biblioteca de microcontroladores PIC junto con los componentes au&iliares que normalmente utilizan estos dispositivos4 leds, pantallas )C6, teclados, memorias, etc. •
•
%ien nosotros utilizaremos la segunda opcin, aunque en una práctica veremos como hacerlo de la primera $orma. )a versin de evaluacin de Proteus te la puedes descargar desde aqu*4 http://www.labcenter.co.uk/download/prodemo_download.cfm Claro que tiene limitaciones, sino no ser*a una demo, la principal es que no podemos guardar nuestros trabajos y la segunda es que no lleva incorporado muchas de las librer*as dinámicas necesarias para realizar la simulacin de algunos microcontrloladores. #ira a ver si el amigo que te dejo el compilador te puede dejar tambi7n una licencia para este magn*$ico Simulador. Nota4 en este sitio está prohibido el mostrar $acilitar enlaces a lugares de descarga de dudosa reputacin. )o digo tambien para que se tenga en cuenta en el $oro que pr&imamente estará a vuestra disposicin y donde podremos e&poner nuestras dudas e&periencias sobre este tema y sobre otros que irán saliendo. >tra cosa que quiero aclarar es que el curso va a ser todo lo práctico que pueda y la $orma de proceder será la siguiente4 ir7 mostrando uno varios ejemplos de cada tema y posteriormente har7 una -&plicacin de los mismos. Do no se vosotros pero yo cada vez que he querido aprender algo nuevo lo primero que he hecho a sido mirar los ejemplos, despu7s vosotros tendr7is que comprobar que lo que he dicho es cierto y que el ejemplo compila y $unciona sin errores. Para $acilitar la navegacin el pr&imo d*a presentar7 el *ndice de los temás que va a tratar el curso 0unque puede que lo vaya modi$icando segn vallamos avanzando. n saludo y hasta el pr&imo d*a.
Arduino En este a$t+'"% se dete'ta$%n *a$(%s #$%,e&as, por fa(or, ed4talo para mejorarlo5 •
>ecesita ser -((/('ad% conforme a las con(enciones de estilo de @iipedia.
•
>ecesita mejorar su est$"'t"$a.
•
Su redacción no sigue las '%n*en'(%nes de est(%.
•
%odr4a ser dif4cil de entender para lectores interesados en el tema.
Estas deficiencias fueron encontradas el !B de abril de !C#.
A$d"(n% 0US Gen"(n%
enuino, denominación internacional fuera de los EE.&&.
T(#%
%laca computadora/microcontrolador de placasimp le1
CPU
A:, A:0 $orte), ntel Guar
Me&%$(a
S:A0
Ca#a'(dad de
0emoria Flash, EE%:H0
a&a'ena&(ent % P!(na -e,
777.arduino.cc
Ieditar datos en @iidataJ
A$d"(n% /en EE&&, Gen"(n% a ni(el internacional1 es una compaK4a de hard7are libre y una comunidad tecnológica que diseKa y manufactura placas computadora de desarrollo de hard7are y soft7are, compuesta respecti(amente por circuitos impresos que integran un microcontrolador y un entorno de desarrollo /DE1, en donde se programa cada placa. Arduino se enfoca en acercar y facilitar el uso de la electrónica y programación de sistemas embebidos en proyectos multidisciplinarios ! . 'oda la plataforma, tanto para sus componentes de hard7are como de soft7are, son liberados con licencia de código abierto que permite libertad de acceso a ellos- . El hard7are consiste en una placa de circuito impreso con un microcontrolador, usualmente Atmel A:, puertos digitales y analógicos de entradaLsalida," , los cuales pueden conectarse a placas de e)pansión /shields1, que ampl4an las caracter4sticas de funcionamiento de la placa Arduino. Asimismo, posee un puerto de cone)ión &S8 desde donde se puede alimentar la placa y establecer comunicación con el computador. %or otro lado, el soft7are consiste en un entorno de desarrollo /DE1 basado en el entorno de %rocessing y lenguaje de programación basado en @iring, as4 como en el cargador de arranque /bootloader1 que es ejecutado en la placa." El microcontrolador de la placa se programa mediante un computador, usando una comunicación serial mediante un con(ertidor de ni(eles :SM!-! a ''2 serial. 2a primera placa Arduino fue introducida en !CC, ofreciendo un bajo costo y facilidad de uso para no(atos y profesionales. 8uscaba desarrollar proyectos interacti(os con su entorno mediante el uso de actuadores y sensores. A partir de octubre de !C!, se incorporaron nue(os modelos de placas de desarrollo que usan microcontroladores $orte) 0-, A:0 de -! bits, que coe)isten con los originales modelos que integran microcontroladores A: de N bits. A:0 y A: no son plataformas compatibles en cuanto a su arquitectura y por lo que tampoco lo es su set de instrucciones, pero se pueden programar y compilar bajo el DE predeterminado d e Arduino sin ning*n cambio. 2as placas Arduino están disponibles de dos formas5 ensa mbladas o en forma de its O+a3lo t* mismoO /por sus siglas en ingl6s OD9O1. 2os esquemas de diseKo del
+ard7are están disponibles bajo licencia 2ibre, con lo que se permite que cualquier persona pueda crear su propia placa Arduino sin necesidad de comprar una prefabricada. Adafruit ndustries estimó a mediados del aKo !C que, alrededor de -CC,CCC placas Arduino hab4an sido producidas comercialmente y en el aKo !C- estimó que alrededor de BCC.CCC placas oficiales de la empresa Arduino estaban en manos de los usuarios. Arduino se puede utili3ar para desarrollar objetos interacti(os autónomos o puede ser conectado a soft7are tal como Adobe Flash, %rocessing, 0a)L0S%, %ure Data, etc. &na tendencia tecnológica es utili3ar Arduino como tarjeta de adquisición de datos desarrollando interfaces en soft7are como PAA, isual 8asic y 2abE@ # . 2as placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente. El proyecto Arduino recibió una mención honor4fica en la categor4a de $omunidades Digitales en el %ri) Ars Electrónica de !CC# B N Q .
OArduino &noO :e(isión -
%laca Arduino :S!-!C
3nd('e IocultarJ •
+istoria
•
!+ard7are
•
-Equipo de desarrollo
•
" Aplicaciones
•
Esquema de cone)iones .Entradas y salidas
o •
#Especificaciones
•
B2enguaje de programación Arduino B.Funciones básicas y operadores
o
B..Sinta)is básica
B..!Estructuras de control
B..-ariables
B..-.$onstantes
B..-.!'ipos de datos
B..-.-$on(ersión entre tipos
B..-."$ualificadores y ámbito de las (ariables
B..-.&tilidades B.."Funciones básicas
B..".ELS digital
B..".!ELS analógica
B..".-ELS a(an3ada
B.."."'iempo
B..".0atemáticas
B..".#'rigonometr4a
B..".B>*meros aleatorios
B..".N8its y 8ytes
B..".Qnterrupciones e)ternas
B..".Cnterrupciones
B..".$omunicación por puerto serie
B..0anipulación de puertos
B.! A: 2ibc
o
B.!.nterrupciones
B.!.!'empori3adores
B.!.-0anipulación de puertos
B.!."Establecer 8its en (ariables B.-Diferencias con %rocessing
o
B.-. Arreglos
B.-.!mpresión de cadenas B."Ejemplo sencillo de programación en Arduino
o
N8ibliotecas en Arduino
•
o
N.Serial
o
N.!EE%:H0
o
N.-Ethernet
o
N."Firmata
o
N.2iquid$rystal
o
N.#Ser(o
o
N.BSoft7areSerial
o
N.NStepper
o
N.Q@ire
o
N.C$reación de bibliotecas
N.C.Ejemplo de biblioteca
•
QEjemplos de $ódigo
•
Cnstalación en diferentes entornos
o
C.@indo7s
o
C.!>&L2inu) Htras interfaces de programación
•
o
. %duino
o
.! 0inibloq
o
.- %hysical Etoys
•
!6ase tambi6n
•
-:eferencias
o •
-.8ibliograf4a "Enlaces de e)ternos
Historia Ieditar J Arduino se inició en el aKo !CC# como un proyecto para estudiantes en el nstituto :EA, en (rea /talia1. En ese tiempo, los estudiantes usaban el microcontrolador 8AS$ Stamp, cuyo coste era de CC dólares estadounidenses, lo que se consideraba demasiado costoso para ellos. %or aquella 6poca, uno de los fundadores de Arduino, 0assimo 8an3i, daba clases en (rea. El nombre del proyecto (iene del nombre del Bar di Re Arduino /8ar del :ey Arduino1 donde 0assimo 8an3i pasaba algunas horas. El rey Arduino fue rey de talia entre los aKos CC! y C". En la creación de este proyecto contribuyó el estudiante colombiano +ernando 8arragán, quien desarrolló la tarjeta electrónica @iring, el lenguaje de programación y la plataforma de desarrollo. ! &na (e3 concluida dicha plataforma, los in(estigadores trabajaron para hacerlo más ligero, más económico y disponible para la comunidad de código abierto /hard7are y código abierto1. El instituto finalmente cerró sus puertas, as4 que los in(estigadores, entre ellos el espaKol Da(id $uartielles, promo(ieron la idea. 8an3i afirmar4a aKos más tarde, que el proyecto nunca surgió como una idea de negocio, sino como una necesidad de subsistir ante el inminente cierre del nstituto de diseKo nteracti(o :EA. Es decir, que al crear un producto de hard7are abierto, este no podr4a ser embargado. %osteriormente, oogle colaboró en el desarrollo del Rit Android ADR /Accesory De(elopment Rit1, una placa Arduino capa3 de comunicarse directamente con tel6fonos mó(iles inteligentes bajo el sistema operati(o Android para que el tel6fono controle luces, motores y sensores conectados de Arduino.- " %ara la producción en serie de la primera (ersión se tomó en cuenta que el coste no fuera mayor de -C euros, que fuera ensamblado en una placa de color a3ul, deb4a ser %lug and %lay y que trabajara con todas las plataformas informáticas tales como 0acHS, @indo7s y >&L2inu). 2as primeras -CC unidades se las dieron a los alumnos del nstituto :EA, con el fin de que las probaran y empe3aran a diseKar sus primeros prototipos. En el aKo !CC, se incorporó al equipo el profesor 'om goe,! que hab4a trabajado en computación f4sica, despu6s de que se enterara del mismo a tra(6s de nternet. goe ofreció su apoyo para desarrollar el proyecto a gran escala y hacer los contactos para distribuir las tarjetas en territorio estadounidense. En la feria 0aer Fair de !C se presentó la primera placa Arduino -! bit para reali3ar tareas más pesadas.
HardwareIeditar J 2os modelos de Arduino se categori3an en placas de desarrollo, placas de e)pansión /shields1, its, accesorios e impresoras -d .
Pa'as Arduino alileo# , Arduino &no, Arduino 2eonardo, Arduino Due, Arduino 9*n, Arduino 're /En Desarrollo1, Arduino Tero, Arduino 0icro, Arduino Esplora, Arduino 0ega ADR, Arduino Ethernet, Arduino 0ega !#C, Arduino :obot, Arduino 0ini, Arduino >ano, 2ily%ad Arduino Simple, 2ily%ad Arduino SimpleSnap, 2ily%ad Arduino, 2ily%ad Arduino &S8, Arduino %ro 0ini, Arduino Fio, Arduino %ro, Arduino 0R:CCCLenuino 0R:CCC, Arduino 0$:HLenuino 0$:H, Arduino CLenuino C, Arduino emma.
Pa'as de e4#ans()n 0shields Arduino S0 Shield, Arduino Ethernet Shield, Arduino @iFi Shield, Arduino @ireless SD Shield, Arduino &S8 +ost Shi eld, Arduino 0otor Shield, Arduino @ireless %roto Shield, Arduino %roto Shield.
K(ts 'he Arduino Starter Rit, Arduino 0ateria C.
A''es%$(%s 'F' 2$D Screen, &S8LSerial 2ight Adapter, Arduino S%, 0ini &S8LSerial Adapter.
I$es%$as 5d Arduino 0ateria C.
Equipo de desarrolloIeditar J El n*cleo del equipo de desarrollo de Arduino está formado por 0assimo 8an3i, Da(id $uartielles, 'om goe, ianluca 0artino, Da(id 0ellis y >icholas Tambetti.
AplicacionesIeditar J 2a plataforma Arduino ha sido usada como base en di(ersas aplicaciones electrónicas5 •
oscillo5 Hsciloscopio de código abiertoB
•
Equipo cient4fico para in(estigacionesN
•
•
•
•
Arduinome5 &n dispositi(o controlador 0DQ H8Duino5 un económetro que usa una interfa3 de diagnóstico a bordo que se halla en los automó(iles modernos S$AMino5 Sistema de cómputo automotri3 capa3 de monitorear sensores como el '%S, el 0A% y el C!S y controlar actuadores automotrices como la bobina de ignición, la (ál(ula A$ y aceleradores electrónicos +umane :eader5 dispositi(o electrónico de bajo coste con salida de seKal de ' que puede manejar una biblioteca de CCC t4tulos en una tarjeta microSD !C
•
•
•
•
•
•
'he +umane %$5 equipo que usa un módulo Arduino para emular un computador personal, con un monitor de tele(isión y un teclado para computadora! Ardupilot5 soft7are y hard7are de aerona(es no tripuladas Arduino%hone5 un tel6fono mó(il construido sobre un módulo Arduino!! !0áquinas de control num6rico por computadora /$>$1 Hpen 'herem4n &no5 ersión digital de hard7are libre del instrumento 'herem4n mpresoras -D
Esquema de conexiones Ieditar J Ent$adas 6 sa(dasIeditar J %oniendo de ejemplo al módulo Diecimila, este consta de " entradas digitales configurables como entradas yLo salidas que operan a (oltios. $ada contacto puede proporcionar o recibir como má)imo "C mA. 2os contactos -, , #, Q, C y pueden proporcionar una salida %@0 /%ulse @idth 0odulation1. Si se conecta cualquier cosa a los contactos C y , eso interferirá con la comunicación &S8. Diecimila tambi6n tiene # entradas analógicas que proporcionan una resolución de C bits. %or defecto, aceptan de C hasta (oltios /aunque es posible cambiar el ni(el más alto utili3ando el contacto Aref y alg*n código de bajo ni(el1.
Especificaciones Ieditar J 2as especificaciones de los distintos modelos de placas Arduino se resumen en la siguiente tabla5
V%t V%t 7$e'" Ent$a Inte$/ aje aje Ent$adas8 P Me& M('$%'%nt en'(a das UA Ca$!ad de M%de% de de sa(das 9 %$(a $%ad%$ de ana) RT %$ #$%!$a ent$ s(ste d(!(taes M /as: $e%j !('as a'()n ada &a N"0+ A$d"(n% A'QSA0 M -,- "? -NE ! 3 D"e
!
! "
!R Due b
!
B
-!Rb
>ati(a &S8
A$d"(n% A'mega- BM ! Le%na$d% !&"
#0+ !C? 3
A$d"(n% A'mega- BM ! Un% < R5 !N
#0+ " 3
#
#
&S8 (4 Hptiboo -!Rb A'0eg t #&!
RedB%a$ A'mega- BM !N d
#0+ " 3
#
#
-!Rb
#0+ "
#
#
-!Rb Hptiboo &S8 (4
A$d"(n%
A'mega- BM
2eonard >ati(a o &S8
Hptiboo &S8 t (4a F'
Un% SMD 0des'%nt( !N n"ad% A$d"(n% Un% A'mega0des'%nt( !N n"ad% A$d"(n% D"e&(an A'mega%*e !N 0des'%nt( n"ad% A$d"(n% B"et%%t A'mega: !N 0des'%nt( n"ad%
3
BM !
#0+ " 3
#
#
&S8 (4 Hptiboo -!Rb A'0eg t &!
BM !
#0+ " 3
#
#
Atmega &S8 (4 -!Rb 8HH' F'D
,!M ,
#0+ " 3
#
#
Atmega Serial -!Rb 8HH' uetooth
$abece a Atmega -!Rb compat 8HH' le con F'D
$abece a Atmega -!Rb compat 8HH' le con F'D
$abece a Atmega -!Rb compat 8HH' le con F'D
A$d"(n% P$% A'mega- -,- -,- N0+3 " M! 5.5V8=M> !N ; A$d"(n% P$% A'mega- M ! ?V81@M> !N ;
#0+ " 3
Et:e$net P$% A'mega- BM ! 0des'%nt( !N n"ad%
#0+ " 3
A$d"(n% A'mega! BM Me!a #C ! 2?@ R5
#0+ " 3
A$d"(n% Me!a A'mega! 2?@ #C 0des'%nt( n"ad% A$d"(n% Me!a A'mega 0des'%nt( !NC n"ad%
t
A'0eg &!
!
#
#
#
#
#
#
#
" "
&S8 (4 !#R S'RCC A'0eg b (! #&!
BM !
#0+ " 3
#
" "
&S8 (4 !#R S'RCC A'0eg b (! &!
BM !
#0+ " 3
#
" "
!NR S'RCC &S8 (4 b (! F'D
Me!a P$% A'mega! -,-M -,- N0+3 " ! 5.5V #C
#
" "
$abece a !#R S'RCC compat b (! le con F'D
Me!a P$% A'mega! M ?V
#
" "
!#R S'RCC $abece
#0+ "
#C
!
3
b
(!
a compat le con F'D
A$d"(n% M(n( A'megaBMQ 0des'%nt( !N n"ad%
#0+ " 3
#
N
Atmega $abece -!Rb 8HH' a Serial
A$d"(n% A'megaBMQ M(n( ? !N
#0+ " 3
#
N
Atmega $abece -!Rb 8HH' a Serial
$abece a Atmega -!Rb compat 8HH' le con F'D
$abece a Atmega -!Rb compat 8HH' le con F'D
$abece a compat Atmega le con -!Rb 8HH' F'D o inalám ca (4a 8ee
#
" "
$abece a !#R S'RCC compat b (! le con F'D
#0+ ! 3
"
-!Rb
Dis2oa >ati(a der &S8
-,- -,- N0+3 ! M!
"
-!Rb
Dis2oa >ati(a der &S8
$abece a Atmega -!Rb compat 8HH' le con F'D
A$d"(n% P$% M(n( A'mega- -,- -,- N0+3 " M! 5.5V8=M> !N ; A$d"(n% P$% M(n( A'mega- M ! ?V81@M> !N ;
#0+ " 3
A$d"(n% A'mega- -,- -,- N0+3 " !N% M! 7(%
Me!a P$% A'mega! -,-M -,- N0+3 " ! M(n( 5.5V #C P$% M('$% A'mega?V81@M> !&" ; P$% M('$% A'mega5.5V8=M> !&" ;
M !
L(6Pad A$d"(n% A'mega- !,BM -,- N0+3 " , 52= Ma(n !N B%a$d L(6Pad A'mega- !,BM -,- N0+3 Q A$d"(n% !N , S(e B%a$d
#
#
N
#
#
#
#
#
"
C!
-!Rb Atmega $abece 8HH' a compat le con
F'D 2os modelos Arduino Diecimila, Arduino Duemilano(e y Arduino 0ega están basados en los microcontroladores A'mega#N, A'mega-!N y A'mega!NC
AT&e!a1@=
V%taje %#e$at(*%
AT&e!a52=
AT&e!a12=
V%taje de ent$ada $e'%&endad%
BM!
BM!
BM!
V%taje de ent$ada +&(te
#M!C
#M!C
#M!C
Ent$adas 6 sa(das d(!(taes
" /# proporcionan %@01
" /# proporcionan %@01
" /" proporcionan %@01
Ent$adas ana)!('as
#
#
#
Intens(dad de '%$$(ente
"C mA
"C mA
"C mA
Me&%$(a 7as:
#R8 /!R8 reser(ados para el bootloader1
-!R8 /!R8 reser(ados para el bootloader1
!NR8 /"R8 reser(ados para el bootloader1
R8
! R8
N R8
! bytes
R8
" R8
# 0+3
# 0+3
# 0+3
SRAM
EEPROM
7$e'"en'(a de $e%j
Lenguaje de programación Arduino Ieditar J
Este a$t+'"% % se''()n '%nt(ene "na !"+a % &an"a '%nten(d% n% en'('%#d('% "e de,e$+a esta$ en 9(((,$%s F,"s'a$ en 9(((,$%s 2a plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programación de alto ni(el %rocessing que es similar a $<<.
7"n'(%nes ,s('as 6 %#e$ad%$esIeditar J Arduino está basado en $ y soporta todas las funciones del estándar $ y algunas de $<<. !" A continuación se muestra un resumen con la estructura y sinta)is del lenguaje Arduino5
S(nta4(s ,s('aIeditar J •
Delimitadores5U, VW
•
$omentarios5 LL, L? ?L
•
$abeceras5 Xdefine, Xinclude
•
Hperadores aritm6ticos5 <, M, ?, L, Y
•
Asignación5 ;
•
Hperadores de comparación5 ;;, Z;, [, \, [;, \;
•
Hperadores 8ooleanos5 ]], ^^, Z
•
Hperadores de acceso a punteros5 ?, ]
•
Hperadores de bits5 ], ^, _, `, [[, \\
•
Hperadores compuestos5 •
•
ncremento y decremento de (ariables5 <<, MM Asignación y operación5 <;, M;, ?;, L;, ];, ^;
Est$"'t"$as de '%nt$%Ieditar J •
$ondicionales5 if, if...else, s7itch case
•
8ucles5 for, 7hile, do. 7hile
•
8ifurcaciones y saltos5 brea, continue, return, goto
Va$(a,esIeditar J En cuanto al tratamiento de las (ariables tambi6n comparte un gran parecido con el lenguaje $.
C%nstantesIeditar J
•
•
•
•
++L2H@5 representan los ni(eles alto y bajo de las seKales de entrada y salida. 2os ni(eles altos son aquellos de - (oltios o más. >%&'LH&'%&'5 entrada o salida. false /falso15 SeKal que representa al cero lógico. A diferencia de las seKales ++L2H@, su nombre se escribe en letra min*scula. true /(erdadero15 SeKal cuya definición es más amplia que la de false. $ualquier n*mero entero diferente de cero es O(erdaderoO, seg*n el álgebra de 8oole, como en el caso de M!CC, M o . Si es cero, es OfalsoO.
T(#%s de dat%sIeditar J •
(oid, boolean, char, unsigned char, byte, int, unsigned int, 7ord, long, unsigned long, float, double, string, array.
C%n*e$s()n ent$e t(#%sIeditar J Estas funciones reciben como argumento una (ariable de cualquier tipo y de(uel(en una (ariable con(ertida en el tipo deseado. •
char/1, byte/1, int/1, 7ord/1, long/1, float/1
C"a(/('ad%$es 6 &,(t% de as *a$(a,esIeditar J •
static, (olatile, const.
Ut((dadesIeditar J •
si3eof/1
7"n'(%nes ,s('asIeditar J E8S d(!(taIeditar J •
pin0ode/pin, modo1.
•
digital@rite/pin, (alor1.
•
int digital:ead/pin1.
E8S ana)!('aIeditar J •
analog:eference/tipo1
•
int analog:ead/pin1
•
analog@rite/pin, (alor1
E8S a*an;adaIeditar J •
shiftHut/data%in, cloc%in, bitHrder, (alor1
•
unsigned long pulsen/pin, (alor1
T(e%Ieditar J •
unsigned long millis/1
•
unsigned long micros/1
•
delay/ms1
•
delay0icroseconds/microsegundos1
Mate&t('asIeditar J •
min/), y1, ma)/), y1, abs/)1, constrain/), a, b1, map/(alor, from2o7, from+igh, to2o7, to+igh1, po7/base, e)ponente1, sqrt/)1
T$(!%n%&et$+a Ieditar J •
sin/rad1, cos/rad1, tan/rad1
NH&e$%s aeat%$(%sIeditar J •
randomSeed/semilla1, long random/má)1, long random/m4n, má)1
B(ts 6 B6tesIeditar J •
lo78yte/1, high8yte/1, bit:ead/1, bit@rite/1, bitSet/1, bit$lear/1, bit/1
Inte$$"#'(%nes e4te$nasIeditar J •
attachnterrupt/interrupción, función, modo1
•
detachnterrupt/interrupción1
Inte$$"#'(%nesIeditar J •
interrupts/1, nonterrupts/1
C%&"n('a'()n #%$ #"e$t% se$(eIeditar J 2as funciones de manejo del puerto serie deben ir precedidas de la palabra OSerialO aunque no necesitan ninguna declaración en la cabecera del programa. %or esto se consideran funciones base del lenguaje.! Estas son las funciones para transmisión serial5 •
begin/1, a(ailable/1, read/1, flush/1, print/1, println/1, 7rite/1
Man(#"a'()n de #"e$t%sIeditar J 2os registros de puertos permiten la manipulación a más bajo ni(el y de forma más rápida de los contactos de entradaLsalida del microcontrolador de las placas Arduino. !# 2os contactos el6ctricos de las placas Arduino están repartidos entre los registros 8/CMB1, $ /analógicos1 y D/NM-1. 0ediante estas (ariables ser obser(ado y modificado su estado5 •
DD:I8L$LDJ5 Data Direction :egister /o dirección del registro de datos1 del puerto 8, $ ó D. Es una (ariable de 2ecturaLEscritura que sir(e para especificar cuales contactos serán usados como entrada y salida.
•
•
%H:'I8L$LDJ5 Data :egister /o registro de datos1 del puerto 8, $ ó D. Es una (ariable de 2ecturaLEscritura. %>I8L$LDJ5 nput %ins :egister /o registro de pines de entrada1 del puerto 8, $ ó D. ariable de sólo lectura.
%or ejemplo, para especificar los contactos Q a - como salidas y el N como entrada /puesto que el puerto D usa los pines de la placa Arduino N al - digitales1 bastar4a utili3ar la siguiente asignación5 DDRD = B11111110;
$omo se ha podido comprobar, el conocimiento del lenguaje $, permite la programación en Arduino debido a la similitud entre este y el lenguaje nati(o del proyecto, lo que implica el aprendi3aje de algunas funciones espec4ficas de que dispone el lenguaje del proyecto para manejar los diferentes parámetros. Se pueden construir aplicaciones de cierta complejidad sin necesidad de muchos conceptos pre(ios.
AVR L(,'Ieditar J 2os programas compilados con Arduino /sal(o en las placas con $orte 0-1 se enla3an contra A: 2ibc!" por lo que tienen acceso a algunas de sus funciones. A: 2ibc es un proyecto de soft7are libre con el objeti(o de proporcionar una biblioteca $ de alta calidad para utili3arse con el compilador $$ sobre microcontroladores Atmel A:. Se compone de - partes5 •
a(rMbinutils
•
a(rMgcc
•
a(rMlibc
2a mayor4a del lenguaje de programación Arduino está escrita con constantes y funciones de A: y ciertas funcionalidades sólo se pueden obtener haciendo uso de A:.!B
Inte$$"#'(%nesIeditar J 2as seKales de interrupción son las siguientes5 •
cli/15 desacti(a las interrupciones globales
•
sei/15 acti(a las interrupciones
Esto afectará al tempori3ador y a la comunicación serial. 2a función delay0icroseconds/1 desacti(a las interrupciones cuando se ejecuta.
Te%$(;ad%$es Ieditar J 2a función delay0icroseconds/1 crea el menor retardo p osible del lenguaje Arduino que ronda los !s. %ara retardos más pequeKos se debe utili3ar la llamada de ensamblador nop /no operación1. $ada sentencia nop se ejecutará en un ciclo de máquina /# 0+31 de apro)imadamente #!,ns.
Man(#"a'()n de #"e$t%sIeditar J
2a manipulación de puertos con código A: es más rápida que utili3ar la función digital@rite/1 de Arduino.
Esta,e'e$ B(ts en *a$(a,esIeditar J cbi y sbi son mecanismos estándar /A:1 para establecer o limpiar bits en %H:' y otras (ariables.
D(/e$en'(as '%n P$%'ess(n!Ieditar J 2a sinta)is del lenguaje de programación Arduino es una (ersión simplificada de $L$<< y tiene algunas diferencias respecto de %rocessing.!N !Q Debido a que Arduino está basado en $L$<< mientras que %rocessing se basa en Pa(a, e)isten (arias diferencias en cuanto a la sinta)is de ambos lenguajes y el modo en que se programa5
A$$e!%sIeditar J A$d"(n%
P$%'ess(n!
int bar[8];
int[] bar = new int[8];
bar[0] = 1;
bar[0] = 1;
int foo[] = { 0, 1, 2 }; int foo[] = { 0, 1, 2 };
o bien int[] foo = { 0, 1, 2 };
I$es()n de 'adenasIeditar J A$d"(n%
P$%'ess(n!
Serial.println("ello worl!";
println("ello worl!";
int i = #;
int i = #;
Serial.println(i;
println(i;
int i = #; Serial.print("i = ";
int i="#";
Serial.print(i;
println("i =" $ i;
Serial.println(;
Eje% sen'(% de #$%!$a&a'()n en A$d"(n%Ieditar J
El primer paso antes de comprobar que la instalación es correcta y empe3ar a trabajar con Arduino, es usar ejemplos prácticos que (ienen disponibles con el dispositi(o. Se recomienda abrir el ejemplo ledblin el cual crea una intermitencia por segundo en un led conectado en el pin -. El código necesario es el siguiente5 % !efine &'D)*+ 1 -oi! et/p ( { // Activado del contacto 13 para salida digital
pino!e (&'D)*+, 3)3; } // Bucle infinito
-oi! loop ( { // Encendido del diodo LED enviando una señal alta
!i4ital5rite (&'D)*+, 6*76; // Tiempo de espera de 1 segundo (1000 ms)
!ela (1000; // Apagado del diodo LED enviando una señal a!a"
!i4ital5rite (&'D)*+, &5; // Tiempo de espera de 1 segundo
!ela (1000; }
Bibliotecas en ArduinoIeditar J 2as bibliotecas estándar que ofrece Arduino son las siguientes5-C
Se$(aIeditar J 2ectura y escritura por el puerto serie.
EEPROMIeditar J 2ectura y escritura en el almacenamiento permanente.- •
read/1, 7rite/1
Et:e$netIeditar J $one)ión a nternet mediante Arduino Ethernet Shield. %uede funcionar como ser(idor que acepta peticiones remotas o como cliente. Se permiten hasta cuatro cone)iones simultáneas.-! 2os comandos usados son los siguientes5 •
•
Ser(idor5 Ser(er/1, begin/1, a(ailable/1, 7rite/1, print/1, println/1 $liente5 $lient/1, connected/1, connect/1, 7rite/1, print/1, println/1, a(ailable/1, read/1, flush/1, stop/1
7($&ataIeditar J
Es una biblioteca de comunicación con aplicaciones informáticas utili3ando el protocolo estándar del puerto serie.--
L("(dC$6staIeditar J $ontrol de 2$Ds con chipset +itachi +D""BNC o compatibles.-" 2a biblioteca soporta los modos de " y N bits.
Se$*%Ieditar J 8iblioteca para el control de ser(o motores.- A partir de la (ersión CCB de Arduino la biblioteca soporta hasta ! motores en la mayor4a de las placas Arduino y "N en la Arduino 0ega. Estos son los comandos usados5 attach/1, 7rite/1, 7rite0icroseconds/1, read/1, attached/1, detach/1
•
S%/t-a$eSe$(aIeditar J $omunicación serie en contactos digitales. -# %or defecto Arduino incluye comunicación sólo en los contactos C y pero gracias a esta biblioteca puede reali3arse esta comunicación con los restantes.
Ste##e$ Ieditar J $ontrol de motores paso a paso unipolares o bipolares.-B Stepper/steps, pin, pin!1, Stepper/steps, pin, pin!, pin-, pin"1, setSpeed/rpm1, step/steps1
•
9($eIeditar J En(4o y recepción de datos sobre una red de dispositi(os o sensores mediante '7o @ire nterface /'@L!$1.-N 2as bibliotecas Matrix y Sprite de @iring son totalmente compatibles con Arduino y sir(en para manejo de matrices de diodos 2ED. 'ambi6n se ofrece información sobre di(ersas bibliotecas desarrolladas por di(ersos colaboradores que permiten reali3ar muchas tareas.
C$ea'()n de ,(,(%te'asIeditar J 2os usuarios de Arduino tienen la posibilidad de escribir sus propias bibliotecas.-Q Ello permite disponer de código que puede reutili3arse en otros proyectos, mantener el código fuente principal separado de las bibliotecas y la organi3ación de los programas construidos es más clara.
Eje% de ,(,(%te'aIeditar J El siguiente ejemplo permite el en(4o de caracteres mediante el código 0orse5 Se crea el archi(o 0orse.h que incluye la definición de la clase 0orse que tiene - funciones5 un constructor /0orse/11, una función para en(iar punto /dot/11 y una función para en(iar una raya /dash/11. 2a (ariable pin permite indicar el contacto a usar. /# $orse"% & Bilioteca para el env'o de digo $orse"
reado por David A" $ellis* el + de noviemre de +00," Lierado al dominio p-lico" #/
% ifn!ef ore % !efine ore % in9l/!e "5)ro4ra:." 9la ore { p/bli9
ore(int pin; -oi! !ot(; -oi! !a(; pri-ate int pin;
}; % en!if
Debe ser creado el archi(o 0orse.cpp con el código, es decir con la implementación de los m6todos declarados5 /# $orse"cpp & Bilioteca para el env'o de digo $orse" reado por David A" $ellis* el + de noviemre de +00," Lierado al dominio p-lico" #/
% in9l/!e "5)ro4ra:." % in9l/!e "ore." oreore(int pin { pino!e(pin, 3)3; pin = pin; } -oi! ore!ot(
{ !i4ital5rite(pin, 6*76; !ela(2#0; !i4ital5rite(pin, &5; !ela(2#0; } -oi! ore!a( { !i4ital5rite(pin, 6*76; !ela(1000; !i4ital5rite(pin, &5; !ela(2#0; }
2a biblioteca creada as4 puede ser usada mediante el comando Xinclude. Si se desea en(iar una petición de au)ilio SHSpor el contacto - bastar4a con llamar a 0orse/-1 y ejecutar la siguiente secuencia5
:ore.!ot(; :ore.!ot(; :ore.!ot(; :ore.!a(; :ore.!a(; :ore.!a(; :ore.!ot(; :ore.!ot(; :ore.!ot(;
Ejemplos de CódigoIeditar J 2a página de Arduino cuenta con una serie de ejemplos para comen3ar a entender su funcionamiento, con componentes base tales como %antallas, 2EDs, %otenciometros, etc. Ejemplo de parpadeo de 2ED /# Blin. Turns on an LED on for one second* t%en off for one second* repeatedl"
T%is eample code is in t%e pulic domain" #/
// in 13 %as an LED connected on most Arduino oards" // give it a name2
int le! = 1;
// t%e setup routine runs once %en ou press reset2
-oi! et/p( { // initiali4e t%e digital pin as an output"
pino!e(le!, 3)3; } // t%e loop routine runs over and over again forever2
-oi! loop( { !i4ital5rite(le!, 6*76;
// turn t%e LED on (5675
is t%e voltage level)
!ela(1000; !i4ital5rite(le!, &5;
// ait for a second // turn t%e LED off
ma.ing t%e voltage L89
!ela(1000;
// ait for a second
}
Ejemplo de lectura de %otenciometro /# :eadAnalog;oltage :eads an analog input on pin 0* converts it to voltage* and prints t%e result to t%e serial monitor" Attac% t%e center pin of a potentiometer to pin A0* and t%e outside pins to <=; and ground"
T%is eample code is in t%e pulic domain" #/
// t%e setup routine runs once %en ou press reset2
-oi! et/p( { // initiali4e serial communication at >?00 its per second2
Serial.be4in(<00; } // t%e loop routine runs over and over again forever2
-oi! loop( { // read t%e input on analog pin 02
int enor>al/e = analo4Rea!(?0; // onvert t%e analog reading (%ic% goes from 0 & 10+3) to a voltage (0 & =;)2
float -olta4e = enor>al/e @ (#.0 A 102.0;
// print out t%e value ou read2
Serial.println(-olta4e; }
ejemplo hacer contar un display de B segmentos de a - cada segundo, llamando a una función -oi! et/p({
// configuramos los pines de salida
donde conectaremos los pines con una resistencia en serie al displa de , segmentos
pino!e(, 3)3;
// a
pino!e(, 3)3;
//
pino!e(8, 3)3;
// c
pino!e(0, 3)3;
// d
pino!e(2, 3)3;
//e
pino!e(, 3)3;
//f
pino!e(, 3)3;
//g
} -oi! !ipla (int a, int b, int 9, int !, int e, int f, int 4// @uncin del displa { !i4ital5rite (,a; !i4ital5rite (,b; !i4ital5rite (8,9; !i4ital5rite (0,!; !i4ital5rite (2,e; !i4ital5rite (,f; !i4ital5rite (,4; } -oi! loop({ !ipla (0,1,1,0,0,0,0; //
mostrar 1 en el
displa
!ela(1000; !ipla (1,1,0,1,1,0,1; //
mostrar + en el displa
!ela(1000; !ipla (1,1,1,1,0,0,1; // !ela(1000;
mostrar 3 en el displa
// por Laiolo antiago
}
Instalación en diferentes entornosIeditar J
nterfa3 del entorno de desarrollo Arduino en el Sistema Hperati(o @indo7s.
9(nd%-sIeditar J 2os pasos a seguir son los siguientes5 •
•
•
Descargar las (ersiones más reciente de Pa(a :untime En(iroment /P!:E1 y del DE Arduino. nstalar los controladores F'D &S8, con la p laca Arduino conectada. Ejecutar el DE Arduino para abrir la interfa3 y configurar el puerto &S8 donde está conectada la placa.
GNU8L(n"4Ieditar J
nterfa3 del entorno de desarrollo Arduino S.H. >&L2inu).
%ara instalar Arduino en un sistema >&L2inu) necesitamos los siguientes programas para resol(er las dependencias5 •
•
•
Sun ja(a runtime, jre. a(rMgcc, compilador para la familia de microcontroladores a(r de atmel. a(rMlibc, libc del compilador a(rMgcc.
En algunas distribuciones con(iene desinstalar, si no es necesario, el programa ObrlttyO que permite el acceso al terminal a personas in(identes. %ara concluir, se descarga el frame7or de Arduino, se descomprime y ejecuta.
Otras interfaces de programación Ieditar J Es posible comunicar una aplicación que corra sobre Arduino con otros dispositi(os que corran otros lenguajes de programación y aplicaciones populares,"C debido a que Arduino usa la transmisión serial de datos, la cuál es soportada por la mayor4a de los lenguajes que se mencionan a continuación. 9 para los que no soportan el formato serie de forma nati(a, es posible utili3ar soft7are intermediario que tradu3ca los mensajes en(iados p or ambas partes para permitir una comunicación fluida. Algunos ejemplos de lenguajes son5 •
-DA irtools5 aplicaciones interacti(as y de tiempo real.
•
Adobe Director
•
8lit30a) /con acceso restringido1
•
$
•
$<< /mediante libSerial o en @indo7s1
•
$X
•
$ocoaLHbjecti(eM$ /para 0ac HS 1
•
Flash /mediante ActionScript1
•
ambas
•
sadora /nteracti(idad audio(isual en tiempo real1
•
nstant :eality /-D1
•
Pa(a
•
2iberlab /soft7are de medición y e)perimentación1
•
0athematica
•
0atlab
•
•
0a)0S%5 Entorno gráfico de programación para aplicaciones musicales, de audio y multimedia 0inibloq5 Entorno gráfico de programación, corre tambi6n en las computadoras H2%$
•
%erl
•
%hp
•
%hysical Etoys5 Entorno gráfico de programación usado para proyectos de robótica educati(a
•
%rocessing
•
%ure Data
•
%ython
•
:uby
•
Scratch for Arduino /S"A15 Entorno gráfico de programación, modificación del entorno para niKos Scratch, del 0'
•
Squea5 mplementación libre de Smalltal
•
Super$ollider 5 S4ntesis de audio en tiempo real
•
8Script
•
isual 8asic .>E'
•
5 S4ntesis de (4deo en tiempo real
Pd"(n%Ieditar J
%atch %duino.
%duino nace de la fusión de los proyectos %ure Data y Arduino. Ambos proyectos de fuente abierta permiten trabajar con interfa3 gráfica. $argando el firm7are de %ure Data /%D1 a la placa Arduino se puede acceder a ella mediante el lenguaje de programación gráfico.
M(n(,%Ieditar J
%antalla de 0inibloq.
$ombinación de una computadora de bajo costo H2%$, el soft7are 0inibloq y una placa Arduino.
0inibloq es un entorno gráfico de programación que puede generar código nati(o de Arduino y escribirlo directamente en la memoria flash de la placa. 'iene un modo que permite (isuali3ar el código generado, el cual tambi6n puede ser copiado y pegado en el ArduinoMDE, para los usuarios que intentan hacer el pasaje de una herramienta gráfica a la programación en sinta)is $L$<<. 0inibloq es de uso libre y sus fuentes tambi6n están disponibles gratuitamente. &na caracter4stica importante, es que puede correr tambi6n en la computadora portátil H2%$, mediante el soft7are @ine.
P:6s('a Et%6sIeditar J Artículo principal: %hysical Etoys
%royecto de un semáforo reali3ado con Arduino y %hysical Etoys.
%hysical Etoys es una e)tensión libre y gratuita que permite que di(ersos dispositi(os electrónicos como 2e go >', las placas Arduino, Sphero, Rinect, Poystic @iimote, entre otros, puedan ser programados fácilmente y que interact*en entre s4 gracias a su sistema de bloques. En el caso de Arduino, %hysical Etoys ofrece dos modos de programación, el modo OdirectoO y el modo OcompiladoO.
M%d% d($e't% El modo OdirectoO, en el cual los programas se ejecutan en la computadora del usuario y las órdenes se transmiten inmediatamente a tra(6s del puerto serie. El modo OdirectoO permite modificar los programas y (er los cambios producidos de manera inmediata en el comportamiento d el robot, lo cual facilita la programación, sobre todo al usuario ine)perto. Asimismo, permite (er constantemente los (alores de los sensores y utili3ar el robot, por ejemplo, como para adquirir datos.
M%d% '%(ad% El modo OcompiladoO, en el cual los programas se traducen a $<< y se bajan a la placa, para luego ejecutarse de manera independiente de la computadora. El modo OcompiladoO, por su parte, elimina el retardo que introduce la comunicación con la computadora, lo cual lo hace preferible para el desarrollo de tareas autónomas, en las cuales la (elocidad de respuesta del robot debe ser óptima.
!ase tambi!nIeditar J
Lenguaje de programación de Arduino, estructura de un programa Par apr o gr ama ru nAr d ui n o,e ll en gu aj ees t á nda re sC++,au nq ueesp os i b l epr og r a ma r l o e no t r o sl e ng ua j e s .NoesunC++p ur os i n oq uee sun aa da pt a c i ó nq uepr o v e ni e nt edea v r l i b cq uepr o v eedeu nal i b r e r í adeC deal t ac al i da dp ar aus arc onGCCe nl o s mi cr ocont r ol ador esAVRdeAt melymuchasf unci onesespecí ficaspar al osMCUAVRde At me l . av r bi nut i l s ,a vr gc cyav r l i bcsonl asher r ami ent asnec es ar i aspar apr ogr amarl os mi c r o c on t r o l a do r e sAVRd eAt me l . AVRl i b cr e f er en cema nu al d e At me l :h t t p : / / www. a t me l . c om/ we bd oc / AVRLi b cRe f e r e nc eMan ua l / i n de x . h t ml Di s pos i t i v os s o p o r t a d o s :h t t p : / / www. a t me l . c o m/ we bd oc / AVRL i b c Re f e r e nc e Ma nu al / i n de x _1 s up p_ de v i c e s . h t ml Web sde lp r o y ec t o:ht t p: / / www. nongnu. or g/ a vr l i bc /yht t p: / / s a v annah. nongnu. or g/ pr oj ec t s / a v r l i bc / T r a t a mi e nt odel ame mo r i adel aMCUp ora v r l i bc :h t t p: / / www. a t me l . c om/ we bd oc / AVRL i b cRe f e r e nc eMan ua l / ma l l o c_ 1ma l l o c_i n t r o . h t ml Módul osdea vr l i bc :h t t p : / / www. a t me l . c o m/ we bd oc / AVRL i b c Re f e r e nc e Ma nu al / c h 20 . h t ml GNUCl i bc:ht t p: / / www. gnu. or g/ s of t war e/ l i bc / i ndex . ht ml GCCe sunc on j u nt od ec o mp i l a do r e squ es ec on s i d er ael e s t á nd arp ar al o sSi s t e ma s Op er a t i v o sd er i v a do sd eUNI Xyr e qu i e r ed eu nc o nj u nt od ea pl i c a c i o ne sc o no c i d asc omo b i n ut i l sq ueso nun ash er r ami e nt a sdepr o gr a ma ci ó np ar al ama ni p ul a ci ó nd ec ód i gode obj et o.
CuandoGCCest áconst r ui dopar aej ecut ar seenunsi st emacomoLi nux,Wi ndowsomac OSyg en er a rc ó di g op ar aunmi c r o c on t r o l a do rAVR,e nt o nc e ss ed en omi n aa v r g c c a v r g c ce se lc ompi l a do rq u eu sae lI DEdea r d ui n op ar ac on v er t i re ls k e t c henC++au n fi c he r obi na r i o( . h ex )q ueese lqu es eca r g ae nl afl as hd el MCUyqu ee j e cu t a . I nf or mac i óns obr el as bi nut i l s :h t t p: / / www. a t me l . c om/ we bd oc / AVRLi b cRe f e r e nc eMan ua l / o v er v i e w_ 1o v er v i e w_ bi n ut i l s . ht ml Pr oyect oGCC:ht t ps : / / gc c . gnu. or g/ Pe r opa r apr o gr a ma rp r o y e c t o sdec omp l e j i d adme di a ,l ama y o r í adel o sc oma nd osq ue n ec es i t e mo sc onAr du i n ol o sen co nt r ar e mo senl ar ef e r en ci adepr o gr ama ci óndeAr du i n o e ne l“ Ar du i n oRe f er e nc e” ,q uee sd on ded eb emo sr e cu r r i rp ar acu al q ui e rd ud ad e pr ogr amac i ónques ur j a.Ar dui nopr o v eedeunasl i br er í asquef ac i l i t anl apr ogr amac i ónde l mi c r oc ont r ol ador .ht t p: / / ar d ui n o. c c / en/ Ref er enc e/ Home Page El g r a né x i t odeAr d ui n oe np ar t es ed eb eaqu en osp er mi t epr o gr a ma ru nMCUs i nt e ne r quesab ert odol oant er i orynosdaunasher r ami ent ass enc i l l asyes pec í fi c aspar a p r o gr a ma run osmi c r o co nt r ol a do r e squ es umi n i s t r aens u spl a ca s. Po re j e mp l ov e amo sl a sf u nc i o ne sq uen osof r e c ep ar ac o mu ni c a rp ore lp ue r t o s er i e:ht t p: / / ar dui no. c c/ en/ Ref er enc e/ Ser i al El l e ng ua j edepr o gr a ma c i ó nu s ad op orAr d ui n oe s t ába s ad oe n Pr oc es s i ng:ht t p: / / www. gnu. or g/ s of t war e/ l i bc / i nde x . ht ml ,esu nl e ng ua j edepr o gr a ma c i ó ny ent or nodedes ar r ol l oi nt egr adodec ódi goabi er t obas adoenJ av a,def ác i l ut i l i z ac i ón,y q ues i r v ec omome di opa r al aen s eñ an z ayp r o du c c i ó nd ep r o y e c t o smu l t i me di ae i nt er ac t i v osdedi s eñodi gi t al . We bd el p r o y e c t od ePr o c c es i n g:ht t ps : / / pr oc es si ng. or g/ Pr oc es s i ngengi t hub:ht t ps : / / gi t hub. c om/ pr oc es si ng/ pr oc es si ng
Pr o c es s i n ge sút i l c u an doq ue r e mo sc o mu ni c a rAr d ui n oc o nu no r d en ad orymo s t r a rd at o s ogu ar d ard at o s ,p er ot a mb i é np od emo sus a ro t r o sl e ng ua j e sdepr o gr a ma c i ó nc o mo p y t h on ,. NEToc ua l q ui e ro t r oqu ec o no z c amo s . Ar dui not r aeal gunosej empl ospar at r abaj arc onPr oc es s i ngenel apar t ado c o mmu ni c a t i o n,p ore j e mp l o ,p ar ah ac e ru nag r á fi c ad ed at o s enht t p: / / ar dui no. c c/ en/ Tut or i al / Gr aph Verel r ef er enc eyl al i br er í aSer i al depr oc es si ngpar adar noscuent aenl as i mi l i t uddel os l enguaj es :ht t ps : / / pr oc es si ng. or g/ r ef er enc e/yht t ps : / / pr oc es s i ng. or g/ r ef er enc e/ l i br ar i es / s er i a l / T a mb i é nd i s p on emo sd eu nal i b r e r í adeAr d ui n od en t r od ep r o c es s i n gq uen ospe r mi t e i nt er ac t uarent r epr oc es si ngyar dui no:ht t p: / / pl a y gr ound. ar dui no. c c/ i nt er f ac i ng/ pr oc es si ng Po rs u pu es t oAr d ui n os ep ue dep r o gr a ma re no t r o sl e ng ua j e syde s deo t r o se nt o r n osde p r o gr a ma ci ó n,l oqu ev a aha ce rqu ee lc ód i g os eadi f e r e nt e .Ca bede st a ca rs c r a t c hco mo u nl e ng ua j evi s ua lq ueha cei n ne ce sa r i osa be rp r o gr a ma ci ó noAt me lSt ud i oq uee sl a h er r a mi en t aquepr o po r c i o naAt me l . Má si n f o r ma c i ó ne n:ht t ps : / / apr endi endoar dui no. wor dpr es s . c om/ 2014/ 11/ 20/ t ema 4 c on ce pt o sb as i c os d ep r o gr a ma ci o n/ Co moy ah emo svi s t o ,l aes t r u ct ur abá si c ad el l e ngu aj edepr o gr ama ci ó nd eAr d ui n oe s b as t a nt es i mp l eys ec o mp on ed ea lme no sdo spa r t e s .Es t a sdo sp ar t e sne c es a r i a s ,o f unc i ones ,enc i er r anbl oqu esquec ont i enende cl ar ac i ones ,es t ament osoi ns t r uc c i ones . •
s et up( )–ht t p: / / ar dui no. c c/ en/ Ref er enc e/ Set up
•
l oop( )–ht t p: / / ar dui no. c c/ en/ Ref er enc e/ Loop
digerencia entre pic y atmel a y a ,c u án t a spr e gu nt a syc uá nt a sdu da s .Au nq uenos es i r e s po nd er t ec omoau na fi c i o na do , u ni n f or má t i c o,u ne l e ct r ó ni c o,c omoc ul t u r age ne r a loc omounge ek .Ent od oc as ov amosa hac er l odi ger i bl epar at odosyal fi nal t er es pondoenf unc i ónal oes c r i t o. Unmi c r o c on t r o l a do r( e na de l a nt euC)e senes e nc i aun ac o mp ut a do r ac onunmi c r o pr o c es a do r c ent r al ( s uv el oc i dad/ pot enc i adepender ád el model o) ,puer t osdeE/ S,t i enememor i ai nt er na, e spr o gr a ma bl eyde pe nd i e nd od el t i p o/ ma r c a / mo de l oen c on t r a r á suns i n nú me r odeel e me nt o s a di c i o na l e st o doi n t e gr a doe nu nc hi p.L av e nt aj ad el u Ce squ ee sf ab r i c a doe nu namp l i o r angodet i posc onc ar ac t er í s t i c asqueper mi t anal des ar r ol l adorel egi raquel quet engal o mí ni mone c es ar i op ar as upr o y ec t o.Dees t emo don os ei nc ur r i r áe ng as t o sad i c i o nal e sni s e des per di c i ar ánc ar ac t er í s t i c asquenos er equi er en.Además ,oc upar áel es pac i of í s i c o
s ufi ci ent epar al oqueel el ec t r óni c oqui er e. Pe ns a nd oe ne l l o ,l osf a br i c an t e sha ne nf oc a dol osmod el o sdes usp r od uc t osp ar ac ad a nec es i dad.Porej empl o ,s i qui er eshac erunj ue godel uc esna vi deñaspodr í asut i l i z arun e c on ómi c oyan t i g uoPI C1 6F8 4.Non ec e s i t a r í a smá sei n c l u s op od r í as e rd ema s i a do( p od r í a s ut i l i z arunPI C" enano"1 2C508) ,per oesunc os t os umament ebaj o .Porel c ont r ar i o,s i q ui s i e r a sma ne j a ru nt e l é f o noc e l u l a rn ec e s i t a r í a su nu CAVRmu c homá sp ot e nt eyc o nu na s er i edecar ac t er í s t i c asadi c i onal es . Sufi c i e nt e sc ome nt a r i o sg en er a l e s.T er e s po nd o: -¿ Sepu ed enpr o gr a ma rc o ne lmi s mol e ng ua j e ?Síyn o. No ,s i e sq ues equ i e r ep r o gr a ma renl en gu aj en at i v op or q ues uj u eg od ei n s t r uc c i o neso mnemóni c ossondi f er ent es ,s usr egi s t r ossi ndi s t i nt os .So nar qui t ec t ur asdehar dwar e di f er ent es . Si s epuedenpr ogr amars is eut i l i z aunl enguaj edeal t oni v el ( C,Pas cal ,Bas i c ) .Cabeac l ar ar q uel e ng ua j e se nv e r s i o ne sp ar aPI C,n os onl o smi s mo sc ompi l a dor e st r a di c i o na l e s. Esde c i r ,p ar aq ui enu sel e ng ua j eCh abr á npo c asdi f e r en ci a sen t r eunu C yot r o . -¿ Pu ed ent e ne rl o smi s mo sus o s ?Esp os i b l equ es í .Sepu ed ee nc o n t r a ru nu CAt me l equi v al ent eenf unc i onesyc ar ac t er í s t i c asaunPI C.Noobs t a nt e,el l onos i gi ni fi c aques e puedas us t i t ui rf í s i c ament eel c omponent es i nal t er arel c i r c ui t oel ec t r óni c oni el pr ogr amaPI C p or q ues o ni n c omp at i b l e se ne sosd osn i v e l e s. -¿ So nc on t r ol ad or e sc omp l e t a men t edi f er e nt es ,c ad au noc ons usp r op i a sa pl i c a ci o ne s?UnuC 8 05 1oc omp at i bl epu ed es er v i rp ar aha c eru nj u eg od el u c esn av i d eñ as ,p er os er í aun d es pe r di c i odepr e s t ac i on es .Enes ese nt i d oe x i s t e na pl i c ac i on esmá some no sde t er mi na da s p a r ac a damo d el odeuC.PI Cf u eys i g u es i e n dounuCmu yc o mú ne na l g u na sá r e a s ,p e r o e sa smi s ma sá r e asf un ci o na l e seno t r o sl u ga r e sge og r áfi c ospr e fie r e nu t i l i z aru C Fr e es c al equ e t a mp oc os o nc o s t o s os .Ene s t eú l t i moc a s oPI CyFr e es c a l es o nd i f e r e nt e s ,s ep r o gr a ma nd e mo dodi f e r en t e ,p er ot a mbi ént i en enmod el osq ues onpr ác t i c ame nt eeq ui v a l e nt e senc uan t oa s usf unc i ones . Ae l l oag r e gu emo sel h ec h od eq uec i e r t o suCs o nmá sbi e nu ns e c t o rc l a s eAt a lc o mol o s ARM yl o sp r o pi o sAVR.Po rl og en er a ls u sp r e s t a c i o ne ss o ns u pe r i o r e s .Au nq uet a mb i é n enc ont r ar áspot e nt esPI Cde3 2b i t s . -Sepu ed enpr o gr a ma rc o nel mi s moha r d wa r e ,¿ ot i e nec a daun ou nh ar d wa r ees p e c í fi c o ? Ca dau nos ep r o gr a mac o nu nh ar d wa r ee s pe c í fi c o .Si ne mb ar g o,e x i s t e nd i v e r s o sc i r c u i t o s pr o gr a ma dor e su ni v e r s al e sq uet epe r mi t enpr o gr a marv a r i a smar c as / mo del o sc ondi s t i nt a c an t i d add ep i n ess i nha cern i ng únc amb i o . -¿Podr í as us t i t ui runc ont r ol adorAt mel porunc ont r ol ad orPI C?Pors usf unc i onessí .Per ono