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:

  1. Configurar los puertos (pines) como entradas o salidas digitales

  2. Permite leer o escribir dichos puertos de acuerdo a la forma como fueron configurados.

La siguiente tabla resume algunas de estas:

FunciónDescripción

digitalWrite()

Escribe un valor HIGH o LOW en un puerto determinado (link). Sintaxis:

digitalWrite(pin, value) Parámetros:

  • pin: Número del puerto del Arduino.

  • value: Valor que se escribe en el puerto (HIGH o LOW).

Serial.print()

Lee el valor de un puerto determinado (link).

Sintaxis: digitalRead(pin) Parámetros:

  • pin: Pin del Arduino a ser leido

Valores retornados:

  • El valor del puerto al ser leído (HIGH o LOW).

pinMode()

Permite configurar un puerto como entrada o salida (link).

Sintaxis:

pinMode(pin, mode)

Parámetros:

  • pin: Pin del Arduino a ser configurado

  • mode: Modo: INPUT, OUTPUT o INPUT_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:

FunciónDescripción

analogRead()

Escribe un valor análogo (modificando el valor del ciclo de dureza de una onda PWM) a un puerto (link).

Sintaxis:

analogRead(pin,value) Parámetros:

  • pin: Número del puerto análogo (A0A5 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()

Escribe un valor análogo (modificando el valor del ciclo de dureza de una onda PWM) a un puerto (link)

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:

FunciónDescripción

delay()

Detiene el programa por una cantidad de tiempo (en milisegundos) especificada como parámetro (link). Sintaxis:

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:

FunciónDescripción

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 o BIN).

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