Introducción

Arduino se programa en el lenguaje de alto nivel C/C++ y generalmente tiene los siguiente componentes para elaborar el algoritmo:

Estructura

Son dos funciones principales que debe tener todo programa en Arduino:

setup(){
}

Código de configuración inicial, solo se ejecuta una vez.

loop(){
}

Esta función se ejecuta luego del setup(), se mantiene ejecutándose hasta que se des-energice o desconecte el Arduino.

Variables

Es un dato o conjunto de datos que cambia su valor con la ejecución del programa.

Booleano

true o false

Boolean encendido = true;

Entero

Valor entero

int contar = valor;

Tomemos en cuenta que las placas Arduino UNO tienen un límite en cuanto a los valores que puede asumir una variable entera. Los valores se encuentran en un rango que va desde -32,768 a 32,767. Esto puede subsanarse en parte si la variable entera solo asumirá valores positivos, aumentando el rango de 0 a 65,535. Esto se consigue con

unsigned int contar = valor

Flotante

Número con punto flotante, es decir, con valores decimales. El rango va desde -3.4028235E+38 hasta 3.4028235E+38.

float contar = valor;

Long

Este es un tipo de variable de tamaño extendido para el almacenamiento numérico. Su rango va desde -2,147,483,648 hasta 2,147,483,647, por lo tanto, es recomendable solo para variables que puedan almacenar valores muy grandes. También admite unsigned:

unsigned long contar = valor;

Caracter

Almacena nada más ni nada menos que un ASCII.

char letra=’x’;

Cadena de caracteres

Si queremos almacenar una cadena de caracteres en lugar de solo uno, utilizamos este tipo de variable:

String palabras = "Hola a todos"

Operadores

Booleanos

Usados generalmente dentro del condicional if:

  • && (y)

  • || (o)

  • ! (negación)

Por ejemplo:

if (a || b)

De comparación

Usados generalmente dentro del condicional if y sobre el for y while

  • == (igual a)

  • > (mayor que)

  • != (diferente de)

  • <= (menor o igual)

  • < (menor que)

  • >= (mayor o igual)

Por ejemplo:

if (a == b)

Matemáticos

Se aplican al manejo de variables, condicionales y ciclos.

  • = (asignar)

  • % (módulo)

  • + (suma)

  • - (resta)

  • * (multiplicación)

  • / (división)

Por ejemplo:

int valor = valor +5

Estructuras de control

Son instrucciones que nos permiten tomar decisiones y hacer diversas repeticiones, de acuerdo a unos parámetros. Dentro de las más importantes podemos destacar:

Condicionales

Ideales para tomar decisiones luego de evaluar las condiciones lógicas:

If (Si):

 if (entrada < 400)
{
      // acción A
} else
{
      // acción B
}

Switch/case (Casos):

switch (var) {
  case 1:
    // acción A
    break;
  case 2:
    // acción B
    break;
  default:
    // acción C
}

Ciclos

Ideales para repetir lo que se encuentre dentro de ellos.

for (por):

for( int a=0; a>10; a++ )
{
    // acción a repetir
}

while(mientras):

while ( var < 200) {
  // acción a repetir
var++;
}

Funciones

Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento. Son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa. De esta manera se puede reducir la cantidad de código.

Cuando una función es invocada se le pasa el control a la misma, una vez que ésta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.

Funciones digitales

Orientadas a revisar el estado y la configuración de las entradas y salidas digitales:

pinMode()

Permite configurar un pin:

pinMode(pin,modo)
pinMode (13,OUTPUT);
pinMode (a,INPUT);

digitalRead()

Leer un pin digital (0 ó 1):

digitalRead(pin)
int a = digitalRead (13);

digitalWrite()

Escribir un pin digital con 1 ó 0:

digitalWrite(pin,estado)
digitalWrite (13,HIGH);
digitalWrite (13,LOW);

Funciones analógicas

Ideales para la lectura y escritura de valores análogos.

analogRead()

Leer un valor análogo 0 a 1023:

analogRead(pin)
int a = analogRead (A0);

analogWrite() —> PWM

Escribir un valor análogo 0 a 255:

analogWrite(pin,valor de PWM)
analogWrite (9, 134);

Referencia rápida

Estructura

  • setup()

  • loop()

Estructuras de control

  • if

  • if…else

  • for

  • switch case

  • while

  • do… while

  • break

  • continue

  • return

  • goto

Sintaxis

  • ; (punto y coma)

  • { } (llaves)

  • / / (comentario de una sola línea)

  • / * * / (comentario de varias líneas)

  • \(\#\) define

  • \(\#\) include

Operadores matemáticos

  • = (operador de asignación)

  • \(+\) (suma)

  • \(-\) (resta)

  • \(*\) (multiplicación)

  • / (división)

  • % (módulo)

Operadores de comparación

  • == (igual que)

  • ! = (diferente de)

  • \(<\) (menor que)

  • \(>\) (mayor que)

  • \(<=\) (menor o igual a)

  • \(>=\) (mayor o igual a)

Operadores booleanos

  • && (y)

  • || (o)

  • ! (no)

Acceso con apuntadores

  • \(*\) eliminar la referencia del operador

  • & operador de referencia

Operadores bit a bit

  • & (bit a bit AND)

  • (bit a bit OR)
  • ^ (bit a bit XOR)

  • ~ (bit a bit NOT)

  • << (a la izquierda BitShift)

  • \(>>\) (a la derecha BitShift)

Operadores compuestos

  • \(++\) (incremento)

  • \(--\) (decremento)

  • \(+=\) (compuesto adición)

  • \(-=\) (compuesto substracción)

  • \(*=\) (compuesto multiplicación)

  • \(/=\) (compuesto división)

  • \(\&=\) (compuesto bit a bit AND)

  • \(|=\) (compuesto bit a bit OR)

Variables

Constantes

  • HIGH | LOW

  • INPUT | OUTPUT

  • true | false

  • Constantes enteras

  • Constantes flotante

Tipos de datos

  • void

  • boolean

  • char

  • byte

  • int

  • word

  • long

  • unsigned long

  • float

  • double

  • string - arreglo char

  • String - objeto

  • array

Utilidades

  • sizeof()

Conversión

  • char()

  • byte()

  • int()

  • word()

  • long()

  • float()

Funciones

Digital I/O

  • pinMode()

  • digitalWrite()

  • digitalRead()

Análogo I/O

  • analogReference()

  • analogRead()

  • analogWrite() - PWM

Avanzadas I/O

  • tone()

  • noTone()

  • shiftOut()

  • shiftIn()

  • pulseIn()

Tiempo

  • millis()

  • micros()

  • delay()

  • delayMicroseconds()

Matemáticas

  • min()

  • max()

  • abs()

  • constrain()

  • map()

  • pow()

  • sqrt()

Trigonométricas

  • sin()

  • cos()

  • tan()

Números aleatorios

  • randomSeed()

  • random()

Bits y Bytes

  • lowByte()

  • highByte()

  • bitRead()

  • bitWrite()

  • bitSet()

  • bitClear()

  • bit()

Interrupciones externas

  • attachInterrupt()

  • detachInterrupt()

Interrupciones

  • interrupts()

  • noInterrupts()

Comunicación

  • Serial

  • begin()

  • end()

  • available()

  • read()

  • peek()

  • flush()

  • print()

  • println()

  • write()

Librerías

  • EEPROM - leer y escribir

  • Ethernet - conectarse a Internet

  • Cristal líquido - control de LCD

  • SD - lectura y escritura de tarjetas SD

  • Servo - control de servomotores

  • SPI - comunicación por el bus SPI

  • Paso a paso - control de motores

  • Wire - enviar y recibir datos TWI/I2C