You are on page 1of 15

Comandos basicos en arduino

La estructura bsica del lenguaje de programacin de Arduino es bastante simple y se


compone de al menos dos partes. Estas dos partes necesarias, o funciones, encierran
bloques que contienen declaraciones, estamentos o instrucciones.
Void setup ()
{
Estamentos;
}
Void Loop ()
{
Estamentos;
}
En donde setup () es la parte encargada de recoger la configuracin y Loop () es la que
contienen el programa que se ejecutar cclicamente .Ambas funciones son necesarias
para que el programa trabaje.
La funcin setup () se invoca una sola vez cuando el programa empieza. Se utiliza para
inicializar los modos de trabajo de los pines, o el puerto serie. Debe ser incluido en un
programa aunque no haya declaracin que ejecutar. Despus de llamar a setup (), la
funcin Loop () hace precisamente lo que sugiere su nombre, se ejecuta de forma cclica,
lo que posibilita que el programa este respondiendo continuamente ante los eventos que
se produzcan en la tarjeta.
{} entre llaves
Las llaves sirven para definir el principio y el final de un bloque de instrucciones. Se
utilizan para los bloques de programacin setup(), Loop(), if.., etc.
; punto y coma
El punto y coma ; se utiliza para separar instrucciones en el lenguaje de
programacin de Arduino.
/* */ bloque de comentarios
Los bloques de comentarios, o multi-lnea de comentarios, son reas de texto
ignorados por el programa que se utilizan para las descripciones del cdigo o
comentarios que ayudan a comprender el programa. Comienzan con / * y
terminan con * / y pueden abarcar varias lneas.
Debido a que los comentarios son ignorados por el programa y no ocupan espacio
en la memoria de Arduino pueden ser utilizados con generosidad y tambin pueden
utilizarse para "comentar" bloques de cdigo con el propsito de anotar
informaciones para depuracin

// lnea de comentarios
Una lnea de comentario empieza con // y terminan con la siguiente lnea de
cdigo. Al igual que los comentarios de bloque, los de lnea son ignoradas por el
programa y no ocupan espacio en la memoria.
Una lnea de comentario se utiliza a menudo despus de una instruccin, para
proporcionar ms informacin acerca de lo que hace esta o para recordarla ms
adelante.
// Esto es un comentario
FUNCIONES MATEMTICAS
min(x,y)
Calcula el mnimo de dos nmeros de cualquier tipo de datos y devuelve el nmero
ms pequeo.
Ejemplo:
Value = min (value, 100); //asigna a 'value' al ms pequeo de 'value' o 100,
//asegurndose que nunca superara 100.

max(x,y)
Calcula el mximo de dos nmeros de cualquier tipo de datos y devuelve el nmero
ms grande.
Ejemplo:
Value = max (value, 100); //asigna a 'value' al ms grande de 'value' o 100,
//asegurndose que es al menos 100.
FUNCIONES ALEATORIO

randomSeed(seed)
Asigna un valor, o semilla (seed en ingls), como el punto de partida para la funcin
random ().
Ejemplo:
randomSeed (value); //asigna 'value' como la semilla aleatoria
Como el Arduino es incapaz de crear un nmero verdaderamente aleatorio, randomSeed
te permite colocar una variable, constante, u otra funcin dentro de la funcin random, lo
cual ayuda a generar ms nmeros random (aleatorios). Existen una variedad de
diferentes semillas, o funciones, que pueden ser usadas en esta funcin incluyendo millis
() o incluso analogRead () para leer ruido elctrico a travs de un pin analgico.
random(min, max)
La funcin random te permite devolver nmeros pseudo aleatorios en un rango
especificado por los valores min y max.
Ejemplo:
Value = random (100, 200); //asigna a 'value' un nmero aleatorio
//entre 100 y 200.

Nota: Usar esto despus de usar la funcin randomSeed().


FUNCIONES DE TIEMPO

Funcin millis ()
Devuelve la cantidad de milisegundos transcurridos desde que la placa Arduino
empez a ejecutar el programa actual. Este nmero se desbordar (volver a cero),
despus de aproximadamente 50 das. El dato devuelto es de tipo unsigned long
(rango [0, 2^32 1]).

Funcin delay (tiempo)


Pausa el programa durante el tiempo (en milisegundos) especificado en el
parmetro tiempo. El dato dado como parmetro es de tipo unsigned long.
DECLARACION DE VARIABLES

Una variable es una manera de nombrar y almacenar un valor numrico para su uso
posterior por el programa. Como su nombre indica, las variables son nmeros que se
pueden variar continuamente en contra de lo que ocurre con las constantes cuyo valor
nunca cambia. Una variable debe ser declarada y, opcionalmente, asignarle un valor.
Todas las variables tienen que declararse antes de que puedan ser utilizadas. Para declarar
una variable se comienza por definir su tipo:

TIPO
BYTE
INT

LONG

FLOAT

CHAR
UNSIGNED INT
UNSIGNED LONG
STRING
VOID (VACO)

DIMENSION
Byte almacena un valor numrico de 8 bits sin decimales. Tienen
un rango entre 0 y 255
Enteros son un tipo de datos primarios que almacenan valores
numricos de 16 bits sin decimales comprendidos en el rango
32,767 to -32,768.
El formato de variable numrica de tipo extendido Long se
refiere a nmeros enteros (tipo 32 bits) sin decimales que se
encuentran dentro del rango -2147483648 a 2147483647.
El formato de dato del tipo punto flotante float se aplica a los
nmeros con decimales. Los nmeros de punto flotante tienen
una mayor resolucin que los de 32 bits con un rango
comprendido 3.4028235E +38 a +38-3.4028235E.
Carcter
Entero sin signo, desde 0 a 65,535
entero 32bit sin signo, desde 0 a 4,294,967,295
cadena de caracteres
Slo utilizado cuando una funcin no devuelve nada

arrays
Un array es un conjunto de valores a los que se accede con un nmero ndice.
Cualquier valor puede ser recogido haciendo uso del nombre de la matriz y el
nmero del ndice.
El primer valor de la matriz es el que est indicado con el ndice 0, es decir el
primer valor del conjunto es el de la posicin 0. Un array tiene que ser declarado y
opcionalmente asignados valores a cada posicin antes de ser utilizado.
int miArray[] = {valor0, valor1, valor2...}
Del mismo modo es posible declarar una matriz indicando el tipo de datos y el tamao y
posteriormente, asignar valores a una posicin especifica:
int miArray[5]; // declara un array de enteros de 6 posiciones
miArray[3] = 10; // asigna el valor 10 a la posicin 4
Para leer de un array basta con escribir el nombre y la posicin a leer:
x = miArray [3]; // x ahora es igual a 10 que est en la posicin 3 del array
SIMBOLOS Y OPERADORES
ARTMETICOS
Los operadores aritmticos que se incluyen en el entorno de programacin son suma,
resta, multiplicacin y divisin. Estos devuelven la suma, diferencia, producto, o cociente
(respectivamente) de dos operandos.
Suma: a =b+c
Resta: a =b-c
Multiplicacin: a=b*c
Divisin: x=a \ b
ASIGNACIONES COMPUESTAS
Las asignaciones compuestas combinan una operacin aritmtica con una variable
asignada. Estas asignaciones compuestas pueden ser:

OPERADORES DE COMPARACIN

OPERADORES LGICOS
Los operadores lgicos son usualmente una forma de comparar dos expresiones y
devolver un verdadero o falso dependiendo del operador. Existen tres operadores lgicos,
AND (&&), OR (||) y NOT (!).
Ejemplo:

CONSTANTES
El lenguaje de programacin de Arduino tiene unos valores predeterminados, que son
llamados constantes. Se utilizan para hacer los programas ms fciles de leer. Las
constantes se clasifican en grupos:
CIERTO/FALSO (TRUE/FALSE)
Estas son constantes booleanas que definen los niveles HIGH (alto) y LOW (bajo)
cuando estos se refieren al estado de las salidas digitales. FALSE se asocia con 0
(cero), mientras que TRUE se asocia con 1, pero TRUE tambin puede ser cualquier
otra cosa excepto cero.
HIGH/LOW
Estas constantes definen los niveles de salida altos o bajos y se utilizan para la
lectura o la escritura digital para las patillas. ALTO se define como en la lgica de
nivel 1, ON, 5 voltios, mientras que BAJO es lgica nivel 0, OFF, o 0 voltios.
Ejemplo:
DigitalWrite (13, HIGH); // activa la salida 13 con un nivel alto (5v.)

INPUT/OUTPUT
Estas constantes son utilizadas para definir, al comienzo del programa, el modo de
funcionamiento de los pines mediante la instruccin pinMode de tal manera que el
pin puede ser una entrada INPUT o una salida OUTPUT.
Ejemplo:
PinMode (13, OUTPUT); // designamos que el PIN 13 es una salida
CONFIGURACION DE ENTRADAS Y SALIDAS DIGITALES
pinMode(pin, mode)
Esta instruccin es utilizada en la parte de configuracin setup () y sirve para
configurar el modo de trabajo de un PIN pudiendo ser INPUT (entrada) u OUTPUT
(salida).
Ejemplo:
pinMode (pin, OUTPUT); // configura pin como salida
Los terminales de Arduino, por defecto, estn configurados como entradas, por lo tanto
no es necesario definirlos en el caso de que vayan a trabajar como entradas.
Los pines configurados como entrada quedan, bajo el punto de vista elctrico, como
entradas en estado de alta impedancia.
Estos pines tienen a nivel interno una resistencia de 20 K a las que se puede acceder
mediante software. Estas resistencias se acceden de la siguiente manera:
pinMode (pin, INPUT); // configura el pin como entrada
digitalWrite (pin, HIGH); // activa las resistencias internas
Las resistencias internas normalmente se utilizan para conectar las entradas a
interruptores. En el ejemplo anterior no se trata de convertir un pin en salida, es
simplemente un mtodo para activar las resistencias interiores.
Los pines configurado como OUTPUT (salida) se dice que estn en un estado de baja
impedancia estado y pueden proporcionar 40mA (miliamperios) de corriente a otros
dispositivos y circuitos. Esta corriente es suficiente para alimentar un diodo LED (no
olvidando poner una resistencia en serie), pero no es lo suficiente grande como para
alimentar cargas de mayor consumo como rels, solenoides, o motores.
digitalRead(pin)
Lee el valor de un pin (definido como digital) dando un resultado HIGH (alto) o LOW (bajo).
El pin se puede especificar ya sea como una variable o una constante (0-13).
Valor = digitalRead (Pin); // hace que 'valor sea igual al estado ledo en Pin

digitalWrite(pin, value)
Enva al pin definido previamente como OUTPUT el valor HIGH o LOW (poniendo en 1 o 0
la salida). El pin se puede especificar ya sea como una variable o como una constante (013).
Ejemplo
digitalWrite (pin, HIGH); // deposita en el 'pin' un valor HIGH (alto o 1)
CONFIGURACION DE ENTRADAS Y SALIDAS ANALOGICAS
analogRead(pin)
Lee el valor de un determinado pin definido como entrada analgica con una
resolucin de 10 bits. Esta instruccin slo funciona en los pines (0-5). El rango de
valor que podemos leer oscila de 0 a 1023.
Valor = analogRead (pin); // asigna a valor lo que lee en la entrada pin'
Nota: Los pines analgicos (0-5) a diferencia de los pines digitales, no necesitan ser
declarados como INPUT u OUTPUT ya que son siempre INPUT.
analogWrite(pin, value)
Esta instruccin sirve para escribir un pseudo-valor analgico utilizando el
procedimiento de modulacin por ancho de pulso (PWM) a uno de los pines de
Arduino marcados como pin PWM. El ms reciente Arduino, que implementa el
chip ATmega168, permite habilitar como salidas analgicas tipo PWM los pines 3,
5, 6, 9, 10 y 11. Los modelos de Arduino ms antiguos que implementan el chip
ATmega8, solo tiene habilitadas para esta funcin los pines 9, 10 y 11. El valor que
se puede enviar a estos pines de salida analgica puede darse en forma de variable
o constante, pero siempre con un margen de 0-255.
analogWrite (pin, valor); // escribe 'valor' en el 'pin' definido como analgico
Nota: Las salidas analgicas a diferencia de las digitales, no necesitan ser
declaradas como INPUT u OUTPUT.

MANEJO DE LA PANTALLA LCD

Funcin LiquidCrystal()
Esta funcin crea una nueva instancia en software de un LCD conectado a la placa.
Sintaxis:
LiquidCrystal name_display (RS, E, DB4, DB5, DB6, DB7);
Ejemplo: LiquidCrystal Lcd (12, 11, 5, 4, 3, 2);

Funcin begin (columnas, filas)


Con la instancia creada, esta funcin define el tamao del display.
Ejemplo: Lcd. begin (16,2);

Funcin print(datos, base)


Enva datos a la pantalla.
Ejemplo 1: Lcd. Print (hola);
Ejemplo 2: Lcd. Print (analogRead (A3), DEC);

Funcin write (dato)


Enva un carcter al display.
Ejemplo 1: Lcd.Write (236);

Funcin clear ()
Borra contenido de la pantalla.
Ejemplo: Lcd. Clear ();

Funcin setCursor (columna, fila)


Especifica las coordenadas del lugar donde se va a escribir en la pantalla. En el caso
de la pantalla que se utiliza, columna est en el rango [0,15] y fila en [0,1].
Ejemplo: Lcd. SetCursor (0,1);

Funcin createChar (num, data)


Permite crear caracteres definidos por el programador.

Ejemplo: Para definir la letra , se dibuja una matriz de 8x5 y se rellena adecuadamente.

COMUNICACIN SERIE
Para que el computador pueda visualizar los datos enviados por la placa, se puede utilizar
el Monitor Serial incorporado en el entorno de Arduino, tal. El monitor serial debe tener
seleccionada la misma velocidad utilizada en la funcin Serial.begin ().

Funcin Serial.begin(velocidad)
Establece la velocidad de transmisin de datos en smbolos por segundo (baudios)
para la transmisin de datos serie. Por costumbre, se suele utilizar una velocidad
de 9600[baudios]. Obviamente, se pueden utilizar velocidades de transmisin
numricamente ms grandes.

Funcin Serial.available ()
Devuelve el nmero de Bytes que estn disponibles para lectura en el buffer de
entrada del puerto serie, el que puede almacenar hasta 64[Bytes].

Funcin Serial.end ()
Desactiva la comunicacin serie, permitiendo a los pines 0 (RX) y 1 (TX) ser
utilizados como entradas o salidas digitales. Para volver a habilitar la comunicacin
serie, se llama a Serial.begin ().

Serial.parseInt();
Toma datos seriales solamente si estos son nmeros enteros, si no lo son se
ignoran

Funcin Serial.print (valor, formato) y Serial.println (valor, formato)


Enva datos al puerto serie como texto ASCII. Los datos float son impresos por
omisin con dos decimales. La diferencia entre Serial.print () y Serial.println () es
que la primera no aade retorno de carro ni nueva lnea.
Si se enva un nmero entero, el campo formato se puede utilizar para establecer
la base numrica del nmero. El campo formato puede tomar los siguientes
valores: DEC, HEX, OCT, BIN.
Si se enva un nmero en punto flotante, el campo formato se puede utilizar para
especificar la cantidad dgitos decimales que tiene dicho nmero.

Funcin Serial.write (datos)


Enva datos binarios al puerto serie. La variable datos puede ser un byte o una serie
de bytes.
Por ejemplo:
Serial.write (35) enviar un byte, con el nmero 35 codificado en binario.
Serial.write (hola) enviar una serie de bytes, con el string hola. Esta funcin
es similar a Serial.print ().

Funcin Serial.read ()
Permite leer los datos que llegan por el puerto serie.
Ejemplo:

Dato=Serial.read (); //almacena en la variable dato los datos que lee

INTERRUPCIONES
Una interrupcin permite que el flujo normal de un programa se detenga y se ejecute un
funcin especfica. Una vez que esta funcin termina, el control retorna al programa. Al
igual que en otros sistemas, Arduino tiene dos clases de interrupciones: por hardware y
software.
INTERRUPCIONES POR HARDWARE
En el caso de arduino UNO, tiene dos interrupciones, INT0 e INT1 asociadas a los pines 2 y
3, respectivamente. Una interrupcin suceder en cualquier momento de la ejecucin del
programa.
Funcin attachInterrup(interrupt,ISR,mode)
Los argumentos de esta funcin son:
Interrupt: Nmero de la interrupcin {0, 1}
ISR: (Interruption Service Routine) Funcin que se va a ejecutar cuando se
produzca la interrupcin.
mode: Define cuando la interrupcin se gatillar.
LOW: se gatilla cuando el pin est en un nivel bajo.
CHANGE: se gatilla cuando el pin cambia de valor.
FALLING: se gatilla cuando el pin pasa de un nivel alto a un nivel bajo.
RISING: se gatilla cuando el pin pasa de un nivel bajo a un nivel alto

Funcin noInterrupts() y interrupts()


En algunas ocasiones, se quiere que ciertas zonas del cdigo no sean interrumpidas
por las interrupciones. Esto se logra con estas funciones.

INTERRUPCIONES POR SOFTWARE


Las interrupciones por software, en al caso de Arduino, estn asociadas a temporizadores.
Esta significa que se debe configurar un temporizador por cierta cantidad de tiempo, y
cuando ste se cumpla, se gatilla la ejecucin de una funcin previamente definida.
Existen varias bibliotecas que permiten el uso de temporizadores. En particular, se ver la
timer1.h.

Funcin initialize (periodo)


Especifica cada cunto microsegundos se ejecutar la funcin que atienda la
interrupcin. Por omisin, el perodo es 1seg. Cuando se inicializa el timer, los
pines 9 y 10 se deshabilitan para la funcin analogWrite ().
Funcin attachInterrupt(function)
Llama a la funcin function en el intervalo de tiempo especificado por la funcin
anterior.
Funcin detachInterrupt()
Esta funcin deshabilita la interrupcin inicializada.

You might also like