Guía de referencia básica ARDUINO
Conectores
PINES : para conectar componentes electrónicos. Hay analógicos y digitales.
PUERTO USB : para conectar al ordenador y opcionalmente para alimentar la placa
ALIMENTACIÓN : opcionalmente para alimentar la placa
Tipos de pines
DIGITALES : Sólo tratan con dos valores de tensión : 5V (HIGH) y 0V (LOW) . Hay 14 pines.
ANALÓGICOS : Tratan con cualquier valor de tensión comprendido entre 5V y 0V. Hay 6 pines.
Modos de los pines digitales
OUTPUT : El pin fija un valor de tensión a los componentes externos (salida).
Sobre estos pines la placa escribe tensiones (write)
INPUT : El pin se prepara para recibir un valor de tensión fijado por un componente externo.
De estos pines la placa lee tensiones (read)
Estructura general de un programa
// Declaración del prototipo de las funciones y variables
void setup() {
// Funciones de inicialización que definen el modo de los pines y del puerto usb
}
void loop() {
// Funciones, estructuras de control y operadores que definen el funcionamiento de la placa
}
// Programa de ejemplo
int tiempo_de_espera=1000;
void setup() {
pinMode(13, OUTPUT); // asigna el modo del pin digital 13 como salida
}
void loop() { // el programa se ejecuta cíclicamente por tiempo indefinido
digitalWrite(13, HIGH); // enciende el LED (on)
delay(tiempo_de_espera); // espera por un segundo
digitalWrite(13, LOW); // apaga el LED (off)
delay(tiempo_de_espera); // espera por un segundo
}
Funciones
2
Las funciones pueden interactuar con los conectores de la placa, leyendo y escribiendo sobre los mismos.
Adicionalmente, pueden devolver un valor que puede ser empleado en el resto del programa.
Funciones para interactuar con los pines
Pines digitales
pinMode(numero_del_pin, modo) Pone el pin numero_del_pin en modo INPUT o OUTPUT.
digitalWrite(numero_del_pin, valor_HL) Escribe un valor digital (HIGH o LOW) en el pin
numero_del_pin.
digitalRead(numero_del_pin) Devuelve un valor digital (HIGH o LOW) leido desde el pin
numero_del_pin.
pulseIn(numero_del_pin, valor_HL) Devuelve un número que es el tiempo microsegundos que ha
estado el pin numero_del_pin al valor valor_HL
analogWrite(numero_del_pin, valor_0_255) Pone en el pin numero_del_pin un señal digital
PWM de frecuencia 30769 Hz y de ciclo de trabajo proporcional a valor_0_255. El efecto de esta
función permanece hasta que otra función lee o escribe sobre dicho pin. Solo algunos pines
marcados en la placa soportan PWM.
Pines analógicos
analogRead(numero_del_pin) Devuelve un número que es la tensión leída en el pin
numero_del_pin multiplicada por 204,8. Son siempre modo INPUT. No hay que inicializarlos
Funciones para interactuar con el puerto USB
[Link](speed) Fija la velocidad a la que se van a transferir datos por el puerto USB
[Link]() Devuelve un valor 0_1 indicando si hay datos por leer del puerto USB
[Link]() Lee el puerto USB y devuelve el valor 0_255 del dato allí presente
[Link](dato) Escribe en el puerto USB la frase dato o el numero dato convertido a BCD.
[Link](dato,formato) Escribe en el puerto USB el numero dato convertido a formato.
Formato puede ser : HEX : Convierte el número a hexadecimal , OCT : Convierte el número a
octal, BIN : Convierte el número a binario
Nota : Existe la función [Link], que es como las anteriores, pero que además genera un
retorno de línea tras su ejecución.
Las siguientes funciones no interactúan con los conectores, pero pueden ser útiles en el desarrollo de un
programa:
Funciones para controlar los tiempos:
millis() Devuelve el tiempo en milisegundos, desde que se activó el programa.
delay(ms) Hace que el programa espere el tiempo ms (en milisegundos) antes de ejecutar la
siguiente función.
delayMicroseconds(us) Ídem al anterior pero midiendo el tiempo en microsegundos (hay 1 millón
de microsegundos en un segundo)
Funciones para generar números aleatorios:
random(max) ó random(min, max) Devuelve un número long (0_4,3G) que está entre min y max
randomSeed(seed) Da verdadero carácter aleatorio a la función anterior. Emplear normalmente
como randomSeed(millis()); y siempre obligatoriamente antes de la primera llamada a random()
Estructuras de control: 3
Las estructuras de control sirven para controlar el orden de ejecución de las funciones, que puede
alterarse en función de los valores leídos de los conectores o del resultado de otras funciones u
operaciones.
if
if (var > 50) {
// hacer esto si var > 50
}
if...else
if (var < 500)
{
//hacer esto si var < 500
}
else
{
//hacer esto si var >= 500
}
for
int var;
for (var=1;var <= 8; var++){
// hacer esto 8 veces recalculando var automáticamente
}
while
int var = 1;
while(var <= 200){
// hacer esto 200 veces, recalculando var manualmente
var++;
}
switch case
switch (var) {
case 1:
//hacer esto cuando var vale 1
break;
case 2:
//hacer esto cuando var vale 2
break;
default:
// si no se da ninguna de las anteriores condiciones, hacer esto
}
Además, dentro de algunas estructuras pueden usarse los siguientes comandos.
break ; Hace al programa a salirse de las estructuras for, while y switch, continuando tras ellas.
continue ; En bucles, salta inmediatamente a la siguiente iteración del bucle.
Variables 4
Las variables son contenedores de valores, que pueden cambiarse durante la ejecución del programa.
Escalares: Las variables escalares contienen un único valor.
boolean (lógica) Valores de 0 a 1. bolean a,b;
char (caracter) Valores sólo positivos de 0 a 255. char a, b;
byte (palabra) Valores de 0 a 255. byte a, b;
int (entero corto) Valores de 0 a 32.767. int a, b;
long (entero largo) Valores de 0 a [Link] long a,b;
Vectoriales : Las variables vectoriales (arrays) contienen varios valores que pueden seleccionarse
mediante un índice. Equivale a tener varias variables unidas por un mismo nombre.
array (vector) Conjunto de números del mismo tipo escalar. int numer[] = { 90, 150, 30 };
string (frase) Conjunto de valores tipo char . char nombre[ ] = "arduino";
Operadores
Los operadores realizan operaciones entre números o entre variables.
Relacionales Lógicos
> mayor que
< menor que
>= mayor que o igual a || OR logica
<= menor que o igual a && AND logica
== igual a ! NOT logica
!= no igual a
Matemáticos
+ suma
- resta
* multiplicación
/ división
++ incremento
-- decremento
% modulo
+= suma y asignación
-= resta y asignacion
- negación
= asignación
Otros elementos
// comentarios de línea .
/* */ comentarios de multi-línea .
* Puntero (vector) Indica la dirección de memoria en donde se encuentra una variable.
#define Asocia definitivamente un nombre con un valor. #define PIN_DE_LED 13
#include Incluye un archivo de texto como parte de nuestro programa.
Bajo licencia Creative Commons 2008 - José Alberto Espejo.