0% encontró este documento útil (0 votos)
10 vistas

Lenguaje de Programación Arduino - Wikilibros

Cargado por

Guile Flores
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas

Lenguaje de Programación Arduino - Wikilibros

Cargado por

Guile Flores
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 25

Wikilibros

Lenguaje de
programación
Arduino

Lenguaje de programación
Arduino
La plataforma Arduino se programa
mediante el uso de un lenguaje propio
basado en el lenguaje de programación de
alto nivel Processing que es similar a C++.
Funciones básicas y operadores

Arduino está basado en C y soporta todas


las funciones del estándar C y algunas de
C++.[1] A continuación se muestra un
resumen con la estructura y sintaxis del
lenguaje Arduino:

Sintaxis básica

Delimitadores:;, {}
Comentarios: //, /* */
Cabeceras: #define
Operadores aritméticos: +, -, *, /, %
Asignación: =
Operadores de comparación: ==, !=,:v <,
>, <=, >=
Operadores Booleanos: &&, ||, !
Operadores de acceso a punteros: *, &
Operadores de bits: &, |, ^, ~, <<, >>
Operadores compuestos:
Incremento y decremento de
variables: ++, --
Asignación y operación: +=, -=, *=,
/=, &=, |=
Estructuras de control

Condicionales: if, if...else, switch case


Bucles: for, while, do. while
Bifurcaciones y saltos: break, continue,
return, goto

Variables

En cuanto al tratamiento de las variables


también comparte un gran parecido con el
lenguaje C.

Constantes

HIGH/LOW: representan los niveles alto


y bajo de las señales de entrada y
salida. Los niveles altos son aquellos de
3 voltios o más.
INPUT/OUTPUT: entrada o salida.
false (falso): Señal que representa al
cero lógico. A diferencia de las señales
HIGH/LOW, su nombre se escribe en
letra minúscula.
true (verdadero): Señal cuya definición
es más amplia que la de false. Cualquier
número entero diferente de cero es
"verdadero", según el álgebra de Boole,
como en el caso de -200, -1 o 1. Si es
cero, es "falso".

Tipos de datos

void, boolean, char, unsigned char, byte,


int, unsigned int, word, long, unsigned
long, float, double, string, array.

Conversión entre tipos


Estas funciones reciben como argumento
una variable de cualquier tipo y devuelven
una variable convertida en el tipo deseado.

char(), byte(), int(), word(), long(), float()

Cualificadores y ámbito de las variables

static, volatile, const.

Utilidades

sizeof()
Funciones básicas

E/S digital

pinMode(pin, modo).
digitalWrite(pin, valor).
int digitalRead(pin).

E/S analógica

analogReference(tipo)
int analogRead(pin)
analogWrite(pin, valor)

E/S avanzada

shiftOut(dataPin, clockPin, bitOrder,


valor)
unsigned long pulseIn(pin, valor)

Tiempo

unsigned long millis()


unsigned long micros()
delay(ms)
delayMicroseconds(microsegundos)

Matemáticas

min(x, y), max(x, y), abs(x), constrain(x,


a, b), map(valor, fromLow, fromHigh,
toLow, toHigh), pow(base, exponente),
sqrt(x)

Trigonometría

sin(rad), cos(rad), tan(rad)

Números aleatorios

randomSeed(semilla), long
random(máx), long random(mín, máx)
Bits y Bytes
lowByte(), highByte(), bitRead(),
bitWrite(), bitSet(), bitClear(), bit()

Interrupciones externas

attachInterrupt(interrupción, función,
modo)
detachInterrupt(interrupción)

Interrupciones

interrupts(), noInterrupts()

Comunicación por puerto serie

Las funciones de manejo del puerto serie


deben ir precedidas de la palabra "Serial"
aunque no necesitan ninguna declaración
en la cabecera del programa. Por esto se
consideran funciones base del lenguaje.[2]
Estas son las funciones para transmisión
serial:

begin(), available(), read(), flush(), print(),


println(), write()

Manipulación de puertos

Los registros de puertos permiten la


manipulación a más bajo nivel y de forma
más rápida de los contactos de
entrada/salida del microcontrolador de las
placas Arduino.[3] Los contactos eléctricos
de las placas Arduino están repartidos
entre los registros B(0-7), C (analógicos) y
D(8-13). Mediante estas variables se
observa y se modificada su estado:
DDR[B/C/D]: Data Direction Register (o
dirección del registro de datos) del
puerto B, C ó D. Es una variable de
Lectura/Escritura que sirve para
especificar cuales contactos serán
usados como entrada y salida.
PORT[B/C/D]: Data Register (o registro
de datos) del puerto B, C ó D. Es una
variable de Lectura/Escritura.
PIN[B/C/D]: Input Pins Register (o
registro de pines de entrada) del puerto
B, C ó D. Variable de sólo lectura.

Por ejemplo, para especificar los


contactos 9 a 13 como salidas y el 8 como
entrada (puesto que el puerto D usa los
pines de la placa Arduino 8 al 13 digitales)
bastaría utilizar la siguiente asignación:

DDRD = B11111110;

Como se ha podido comprobar, el


conocimiento del lenguaje C, permite la
programación en Arduino debido a la
similitud entre este y el lenguaje nativo del
proyecto, lo que implica el aprendizaje de
algunas funciones específicas 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 previos.
AVR Libc

Los programas compilados con Arduino


(salvo en las placas con CorteX M3) se
enlazan contra AVR Libc[1] por lo que
tienen acceso a algunas de sus funciones.
AVR Libc es un proyecto de software libre
con el objetivo de proporcionar una
biblioteca C de alta calidad para utilizarse
con el compilador GCC sobre
microcontroladores Atmel AVR. Se
compone de 3 partes:

avr-binutils
avr-gcc
avr-libc
La mayoría del lenguaje de programación
Arduino está escrita con constantes y
funciones de AVR y ciertas
funcionalidades sólo se pueden obtener
haciendo uso de AVR.[4]

Interrupciones

Las señales de interrupción son las


siguientes:

cli(): desactiva las interrupciones


globales
sei(): activa las interrupciones

Esto afectará al temporizador y a la


comunicación serial. La función
delayMicroseconds() desactiva las
interrupciones cuando se ejecuta.

Temporizadores

La función delayMicroseconds() crea el


menor retardo posible del lenguaje
Arduino que ronda los 2μs. Para retardos
más pequeños se debe utilizar la llamada
de ensamblador 'nop' (no operación). Cada
sentencia 'nop' se ejecutará en un ciclo de
máquina (16 MHz) de aproximadamente
62,5ns.

Manipulación de puertos
La manipulación de puertos con código
AVR es más rápida que utilizar la función
digitalWrite() de Arduino.

Establecer Bits en variables

cbi y sbi son mecanismos estándar (AVR)


para establecer o limpiar bits en PORT y
otras variables.

Diferencias con Processing

La sintaxis del lenguaje de programación


Arduino es una versión simplificada de
C/C++ y tiene algunas diferencias
respecto de Processing.[5][6] Debido a que
Arduino está basado en C/C++ mientras
que Processing se basa en Java, existen
varias diferencias en cuanto a la sintaxis
de ambos lenguajes y el modo en que se
programa:

Arreglos
Arduino Processing

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 };

Impresión de cadenas
Arduino Processing

Serial.println("hello world"); println("hello world");

int i = 5; int i = 5;
Serial.println(i); println(i);

int i = 5;
Serial.print("i = "); int i="5";
Serial.print(i); println("i =" + i);
Serial.println();

Ejemplo sencillo de programación


en Arduino

El primer paso antes de comprobar que la


instalación es correcta y empezar a
trabajar con Arduino, es usar ejemplos
prácticos que vienen disponibles con el
dispositivo. Se recomienda abrir el
ejemplo “led_blink” el cual crea una
intermitencia por segundo en un led
conectado en el pin 13.

El código necesario es el siguiente:

# define LED_PIN 13
void setup () {
// Activado del contacto
13 para salida digital
pinMode (LED_PIN, OUTPUT);
}
// Bucle infinito
void loop () {
// Encendido del diodo LED
enviando una señal alta
digitalWrite (LED_PIN,
HIGH);
// Tiempo de espera de 1
segundo (1000 ms)
delay (1000);
// Apagado del diodo LED
enviando una señal baja.
digitalWrite (LED_PIN,
LOW);
// Tiempo de espera de 1
segundo
delay (1000);
}

Bibliografía
Oxer, Jonathan; Blemings, Hugh (28 de
diciembre de 2009). Practical Arduino:
Cool Projects for Open Source Hardware
(1ª edición). Apress. pp. 500. ISBN
1430224770.
http://www.apress.com/book/view/978
1430224778 .
Noble, Joshua (15 de julio de 2009).
Programming Interactivity: A Designer's
Guide to Processing, Arduino, and
openFramework (1ª edición). O'Reilly
Media. pp. 768. ISBN 0596154143.
http://oreilly.com/catalog/9780596800
581/ .
Banzi, Massimo (24 de marzo de 2009)
(en en). Getting Started with Arduino (1ª
edición). Make Books. pp. 128. ISBN
9781449363291.
https://books.google.com.ar/books?
id=Xd3SBQAAQBAJ&printsec=frontcove
r&hl=es&source=gbs_atb#v=onepage&q
&f=false .
Martínez de Carvajal Hedrich, Ernesto (1
de abril de 2016). 100 Proyectos de
Robótica con Bitbloq y Arduino (2ª
edición). Martínez de Carvajal Hedrich.
pp. 386. ISBN 978-8460843177.
Martínez de Carvajal Hedrich, Ernesto
(10 de octubre de 2016). 50 Proyectos
Tecnológicos - Robótica e Impresión 3D
(2ª edición). Martínez de Carvajal
Hedrich. pp. 296. ISBN 978-
8460890447.
Martínez de Carvajal Hedrich, Ernesto
(15 de diciembre de 2016). Tuneando a
Zowi - Proyectos de Robótica y
Actividades docentes (1ª edición).
Martínez de Carvajal Hedrich. pp. 218.
ISBN 978-8461774098.
Martínez de Carvajal Hedrich, Ernesto
(15 de agosto de 2017). Robótica
Educativa con mBot y Arduino (1ª
edición). Martínez de Carvajal Hedrich.
pp. 282. ISBN 978-8469749326.
«Language Reference» (en inglés).
http://arduino.cc. Consultado el 22 de
diciembre de 2013.
«Serial» (en inglés).
http://www.arduino.cc. Consultado el 22 de
diciembre de 2013.
«Port Registers» (en inglés).
http://www.arduino.cc. Consultado el 22 de
diciembre de 2013.
«AVR Code» (en inglés).
http://www.arduino.cc. Consultado el 22 de
diciembre de 2013.
«Arduino/Processing Language
Comparison» (en inglés).
http://www.arduino.cc. Consultado el 22 de
diciembre de 2013.
«Language Reference(API)/Processing
2+» (en inglés). http://processing.org/.
Consultado el 22 de diciembre de 2013."

Obtenido de
«https://es.wikibooks.org/w/index.php?
title=Lenguaje_de_programación_Arduino&oldid=3
68464»

Última edición hace 1 mes por SeroBOT

El contenido está disponible bajo la licencia CC BY-


SA 3.0 , salvo que se indique lo contrario.

También podría gustarte