Modelo de programación
Existen...
API de Arduino
Para la programación de sistemas embebidos es necesario conocer la arquitectura del microcontrolador que se esta empleando. Debido a esto, para la programación de un sistema embebido no solo basta con tener clara la lógica que lo que desea que haga el programa que alli se ejecutará, sino aspectos de bajo nivel relacionados con el hardware (lo cual obliga a tener a la mano documentación adicional como un manual de programación dependiente del procesador, la documentación tecnica del microcontrolador, etc.) lo cual dificulta la tarea de programación.
Afortunadamente, a lo largo del curso no tendremos que preocuparnos por detalles de bajo ya que los sistemas que usaremos soportan el API de programación de Arduino.
El API de arduino espone un conjunto de funciónes y estructuras (constantes, variables, tipos de datos, objetos, etc) que permiten la interección con el hardware soportado sin necesitad de preocuparnos por aquellos detalles de bajo nivel lo cual facilita el desarrollo de aplicaciones pues gracias a la abstracción, el programador no se tiene que preocupar por los detalles de bajo nivel. La información del API se encuentra en la pagina Language Reference (link).
Funciones basicas del API de Arduino
Como usted habra notado en los ejemplos previamente analizados (link) se emplearon algunas funciones del API de arduino para controlar el funcionamiento de la placa de desarrollo. A continuación se exponen algunas de estas funciones. En el documento Arduino Programming Notebook (link) se encuentra una descripción muy completa de las principales funciones empleadas cuando se trabaja con arduino, sin embargo a continuación vamos a resumir algunas de las principalmente usadas.
Entrada y Salida digital
Las funciones de entrada y salida permiten básicamente dos cosas:
Configurar los puertos (pines) como entradas o salidas digitales
Permite leer o escribir dichos puertos de acuerdo a la forma como fueron configurados.
La siguiente tabla resume algunas de estas:
digitalWrite()
digitalWrite(pin, value)
Parámetros:
pin
: Número del puerto del Arduino.value
: Valor que se escribe en el puerto (HIGH
oLOW
).
Serial.print()
Sintaxis:
digitalRead(pin)
Parámetros:
pin
: Pin del Arduino a ser leido
Valores retornados:
El valor del puerto al ser leído (
HIGH
oLOW
).
pinMode()
Sintaxis:
pinMode(pin, mode)
Parámetros:
pin
: Pin del Arduino a ser configuradomode
: Modo:INPUT
,OUTPUT
oINPUT_PULLUP
Entrada y Salida análoga
Permiten interactuar (leer o escribir) con puertos que funcionan como entradas o salidas análogas. La siguiente tabla muestra resume algunas de estas:
analogRead()
Sintaxis:
analogRead(pin,value)
Parámetros:
pin
: Número del puerto análogo (A0
–A5
para la mayoría de las placas) del Arduino.
Valores retornados:
Valor análogo leído en el pin. El rango dependerá de la resolución del conversor análogo digital asociado a el pin (0 – 1024 cuando la resolución es de 10 bits o 0 – 4096 cuando la resolución es de 12 bits).
analogWrite()
Sintaxis:
analogWrite(pin, value)
Parámetros:
pin
: Pin del Arduino (denotado en la placa con el símbolo ~) en el que se escribe.value
: Ciclo de dureza entre 0 (siempre apagado) y 255 (siempre on).
Bases de tiempo
Son funciones empleadas para la crear retardos y generar marcas de tiempos en los programas, existen varias funciones para este fin como delay()
, delayMicroseconds()
, micros()
y millis()
. La siguiente tabla describe la función delay()
que fue la empleada en los ejemplos anteriores:
delay()
delay(ms)
Parámetros:
ms
: Número de milisegundos a detener el programa.
Manejo del puerto serial
A continuación se muestran algunas de las funciones empleadas para el manejo del puerto serial:
Serial.begin()
Configura la velocidad de transmisión serial (bits por segundo = baud).
Sintaxis:
Serial.begin(speed)
Parámetros:
speed
: Velocidad de transmisión
Serial.print()
Imprime los datos del puerto serial en formato ASCII. Sintaxis:
Serial.print(val)
Serial.print(val, format)
Parámetros:
val
: Valor a imprimir. El valor puede ser de cualquier tipo.format
: Formato de representación del ASCII (DEC
,HEX
,OCT
oBIN
).
Serial.available()
Obtiene el número de bytes (caracteres) disponibles por leer en el puerto serial. Estos son datos que ya han llegado y han sido almacenados en el buffer de recepción serial (el cual almacena 64 bytes).
Sintaxis:
Serial.available()
Valores retornados: Número de bytes disponibles para leer.
Serial.read()
Lee un dato que entra a través del serial.
Sintaxis:
Serial.read()
Valores retornados: Primer byte de los datos seriales disponibles (o -1
si no hay datos disponibles). El tipo de dato leído es int
.
Last updated