You are on page 1of 15

APUNTES DE ARDUINO

El mdulo Arduino es una placa muy simplificada basada en un


microcontrolador, aunque hay un nmero creciente de formatos alternativos, el
diseo original incluye todas las partes necesarias para alimentar y
comunicarte con el microcontrolador: Un regulador, un cristal de reloj, una
interface USB a serie, y una interface de programacin SPI para reemplazar el
cargador de programas.
Una placa Arduino es mucho ms que una simple pieza de hardware. Es
tambin el software que te permite programar y comunicarte con l, toda la
documentacin y los tutoriales que explican cmo utilizarla placa, y una grande
y creciente comunidad que puede ayudar cuando tenga algn problema. Todo
esto en conjunto, ms que cualquier parte individual, hacen al proyecto
Arduino muy til.
Se puede fabricar las placas para uso personal, o para que las use una
empresa nicamente.

REFERENCIA DEL CDIGO DE PROGRAMACIN


Los programas hechos con Arduino se dividen en tres partes principales:
estructura, valores (variables y constantes), y funciones. El Lenguaje de
programacin Arduino se basa en C/C++.

ESTRUCTURA
setup() (inicializacin)
La funcin setup() se establece cuando se inicia un programa -sketch. Se
emplea para iniciar variables, establecer el estado de los pins, inicializar
libreras, etc. Esta funcin se ejecutar una nica vez despus de que se
conecte la placa Arduino a la fuente de alimentacin, o cuando se pulse el
botn de reinicio de la placa.
Ejemplo
int buttonPin = 3;
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}

void loop()
{
// ...
}

loop() (bucle)
Luego de crear la funcin setup(), la cual inicializa y prepara los valores
inciales, la funcin loop() hace justamente lo que su nombre sugiere, por lo
tanto se ejecuta consecutivamente, permitindole al programa variar y
responder. sala para controlar de forma activa la placa Arduino.
Ejemplo
int buttonPin = 3;
// setup inicializa la comunicacin serial y el buttonPin
void setup()
{
beginSerial(9600);
pinMode(buttonPin, INPUT);
}
// loop obtiene el estado del pin del botn cada vez,
// y de estar presionado, lo comunica por serial.
void loop()
{
if (digitalRead(buttonPin) == HIGH)
serialWrite('H');
else
serialWrite('L');
delay(1000);
}

Estructuras de control

if (comparador si-entonces)
if...else (comparador si...sino)
for (bucle con contador)
switch case (comparador mltiple)
while (bucle por comparacin booleana)
do... while (bucle por comparacin booleana)
break (salida de bloque de cdigo)

continue (continuacin en bloque de cdigo)


return (devuelve valor a programa)

Sintaxis

; (punto y coma)
{} (llaves)
// (comentarios en una lnea)
/* */ (comentarios en mltiples lneas)

Operadores Aritmticos

= (asignacin)
+ (suma)
- (resta)
(multiplicacin)
/ (divisin)
% (resto)

Operadores Comparativos

== (igual a)
!= (distinto de)
< (menor que)
>(mayor que)
<= (menor o igual que)
>= (mayor o igual que)
Operadores Booleanos
&& (y)
|| (o)
! (negacin)

Operadores de Composicin

++ (incrementa)
-- (decrementa)
+= (composicin suma)
-= (composicin resta)
*= (composicin multiplicacin)
/= (composicin divisin)

VARIABLES
Constantes

HIGH | LOW
INPUT | OUTPUT

true | false

Constantes Numricas
Tipos de Datos

boolean (booleano)
char (carcter)
byte
int (entero)
unsigned int (entero sin signo)
long (entero 32b)
unsigned long (entero 32b sin signo)
float (en coma flotante)
double (en coma flotante de 32b)
string (cadena de caracteres)
array (cadena)
void (vaco)

Conversin

char()
byte()
int()
long()
float()

FUNCIONES

E/S Digitales

pinMode()
digitalWrite()
digitalRead()
E/S Analgicas
analogRead()
analogWrite() - PWM (modulacin por ancho de pulso)

E/S Avanzadas

tone()
noTone()
shiftOut()
pulseIn()
Tiempo

millis()
micros()
delay()
delayMicroseconds()
Matemticas
min() (mnimo)
max() (mximo)
abs() (valor absoluto)
constrain() (limita)
map() (cambia valor de rango)
pow() (eleva a un nmero)
sq() (eleva al cuadrado)
sqrt() (raz cuadrada)

Trigonometra

sin() (seno)
cos() (coseno)
tan() (tangente)
Nmeros Aleatorios
randomSeed()
random()

Communicacin

Serial

DESARROLLO DE LAS

ESTRUCTURAS DE CONTROL

if (comparador si-entonces)

if (condicional) y ==, !=, <, > (operadores de comparacin)


if, el cual puede ser usado en conjunto con uno o ms operadores de

comparacin, comprueba si cierta condicin se cumple, por ejemplo, si


un input posee un valor mayor a cierto nmero. El formato para una
comprobacin if es el siguiente:
if (algunaVariable > 50)
{
// hacer algo aqu.
}
Este programa comprueba si la variable algunaVariable es mayor a 50. Si lo es,
el programa toma una accin particular. Dicho de otra forma, si la declaracin
escrita dentro de los parntesis es verdadera (true), el cdigo dentro de las
llaves se ejecutar. Sino, el programa ignora dicho cdigo.
Las llaves pueden ser omitidas luego de una declaracin if. De hacer esto, la
siguiente lnea (definida por el punto y coma) ser la nica afectada por la
condicin.
if (x > 120) digitalWrite(LEDpin, HIGH);
if (x > 120)
digitalWrite(LEDpin, HIGH);
if (x > 120){ digitalWrite(LEDpin, HIGH); }
if (x > 120){
digitalWrite(LEDpin1, HIGH);
digitalWrite(LEDpin2, HIGH);
}
// todos los ejemplos son correctos.

Las declaraciones a evaluar dentro de los parntesis, requieren el uso de uno o


ms operadores:
Operadores de Comparacin:
x == y (x es igual a y)
x != y (x no es igual a y)
x < y (x es menor a y)
x > y (x es mayor a y)
x <= y (x es menor o igual a y)
x >= y (x es mayor o igual a y)

if...else (comparador si...sino)

if/else permite

mayor

control

sobre

el

flujo

del

cdigo

que

la

declaracin if bsica, por permitir agrupar mltiples comprobaciones. Por


ejemplo, un input anlogo podra ser comprobado, y tomarse una accin si el
valor del inputes menor a 500, y, otra accin se ser igual o mayor a 500. El
cdigo se vera as:
if (pinCincoInput < 500)
{
// accin A
}
else
{
// accin B
}

else puede proceder a una comprobacin if, de esta forma, se pueden realizar
mltiples comprobaciones en una misma estructura de condiciones. Cada
comprobacin proceder a la siguiente, slo cuando su propio resultado
sea FALSE. Cuando el resultado sea TRUE, su bloque de cdigo contenido, ser
ejecutado, y el programa esquivar las siguientes comprobaciones hasta el final
de la estructura de comprobaciones. Si ninguna comprobacin devuelve
valor TRUE,

elelse ser

ejecutado,

de

no

haber

ninguno

declarado,

simplemente no sucede nada.


Entonces un bloque else if puede ser usado con o sin else al final. La cantidad
de declaraciones else if, y sus ramificaciones son ilimitadas.
if (pinCincoInput < 500)
{
// ejecutar A
}
else if (pinCincoInput >= 1000)
{
// ejecutar B
}
else
{
// ejecutar C
}

Otra forma de expresar ramificaciones (branching en ingls), y realizar


comprobaciones mutuamente exclusivas, es con la declaracin switch case, la
cual resulta ms idnea en algunos casos.

for (bucle con contador)

Descripcin
La declaracin for es usada para repetir un bloque encerrado entre llaves. Un
incremento de un contador es usado, normalmente, para aumentar y terminar
con el bucle. La estructura for es muy til para la mayora de las operaciones
repetitivas, y habitualmente se usa para operaciones con vectores, para operar
sobre conjuntos de datos/pines
El bucle for tiene tres partes o argumentos en su inicializacin:
for (initialization; condition; increment) {
//funcin(es);
}

La initialization, o inicializacin, se produce slo la primera vez. Cada vez que


se va a repetir el bucle, se revisa la condition, o condicin: si es cierta, el
bloque de funciones (y el incremento del contador) se ejecutan, y la condicin
vuelve a ser comprobada de nuevo. Si la condicin es falsa, el bucle termina.
Ejemplo
// Variar la intensidad de un LED usando un salida PWM
int PWMpin = 10; // En el pin 10 hay un LED en serie con una resistencia de 470 ohmios
void setup()
{

// no es necesario nada aqu


}
void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}

Consejos de programacin
El bucle for, en C, es mucho ms flexible que otros bucles for en otros
lenguajes, incluyendo BASIC. Cualquiera (o todos) los parmetros pueden ser
omitidos, sin embargo los puntos y coma (;) son obligatorios. Tambin las
inicializacin, condicin e incremento pueden ser cualquier declaracin en C
vlida, con variables independientes, y podemos usar cualquier tipo de
variable, includos los float. Estos tipos de declaracin for poco usuales pueden
proporcionar una solucin vlida a algunos problemas de programacin raros.
Por ejemplo, usando la multiplicacin en el parmetro de incremento, podemos
generar una progresin logartmica.
for(int x = 2; x < 100; x = x * 1.5){
println(x);
}

Este cdigo generar: 2,3,4,6,9,13,19,28,42,63,94


Otro ejemplo es hacer apagarse/encenderse un LED poco a poco, Another
example, fade an LED up and down with one for loop:
void loop()
{
int x = 1;
for (int i = 0; i > -1; i = i + x){
analogWrite(PWMpin, i);
if (i = 255) x = -1;
// cambia de signo para apagarlo
delay(10);
}
}

switch case (comparador mltiple)

Como las sentencias if, switch...case controla el flujo de programas


permitiendo a los programadores especificar diferentes cdigos que
deberan ser ejecutados en funcin de varias condiciones. En particular, una
sentencia switch compara el valor de una variable con el valor especificado

en las sentencias case. Cuando se encuentra una sentencia case cuyo valor
coincide con dicha variable, el cdigo de esa sentencia se ejecuta.
La palabra clave break sale de la sentencia switch, y es usada tpicamente
al final de cada case. Si una sentencia break, la sentencia switch continuara
ejecuntndo las siguientes expresiones ("falling-through") hasta encontrar
un break, o hasta llegar al final de la sentencia switch.
Ejemplo
switch (var) {
case 1:
//hacer algo cuando sea igual a 1
break;
case 2:
//hacer algo cuando sea igual a 2
break;
default:
// si nada coincide, ejecuta el "default"
// el "default" es opcional
}

Sintaxis
switch (var) {
case etiqueta:
// sentencias
break;
case etiqueta:
// sentencias
break;
default:
// sentencias
}

Parmetros
var: la variable cuyo valor comparas con los varios "case"
etiqueta: un valor para comparar con la variable

while (bucle por comparacin booleana)

Descripcin
Los bucles while se ejecutan continuamente, hasta que la expresin de dentro
del parntesis, (), pasa a ser falsa. Algo debe modificar la variable comprobada,
el bucle while nunca terminar. Lo que modifique la variable puede estar en el
cdigo, como una variable que se incrementa, o ser una condicin externa,
como el valor que da un sensor.

Sintaxis
while(expresion){
// sentencia(s)
}

Parmetros
expresion - una sentencia C (booleana) que da como valor verdadero (true) o
falso (false)
Ejemplo
var = 0;
while(var < 200){
// haz algo repetitivo 200 veces
var++;
}

do... while (bucle por comparacin booleana)

El bucle "'do'" trabaja de la misma manera que el bucle "'while'", con la


excepcion de que la condicin se comprueba al final del bucle, por lo que
este bucle se ejecuta "siempre" al menos una vez.
do
{
// bloque de instrucciones
} while (condicin);

Ejemplo:
do
{
delay(50);
// espera a que los sensores se estabilicen
x = readSensors(); // comprueba los sensores
} while (x < 100);

//si se cumple la condicin se repite el bucle

break (salida de bloque de cdigo)

falta

continue (continuacin en bloque de cdigo)

La sentencia continue omite el resto de iteracciones de un bucle (do, for, o


while). Contina saltando a la condicin de bucle y procediendo con la
siguiente iteraccin.
Ejemplo
for (x = 0; x < 255; x ++)
{
if (x > 40 && x < 120){
continue;

// crea un salto en estos valores

}
digitalWrite(PWMpin, x);
delay(50);
}

return (devuelve valor a programa)

return
Termina una funcin y devuelve un valor a la funcin que la llama. Puede no
devolver nada.
Sintaxis
return;
return valor; // ambas formas son correctas
Parmetros
valor: cualquier variable o tipo constante
Ejemplos
Una funcin que compara la entrada de un sensor a un umbral
int comprobarSensor(){
if (analogRead(0) > 400) {
return 1;
else{
return 0;
}
}

La palabra clave return es til para depurar una seccin de cdigo sin tener
que comentar una gran cantidad de lneas de cdigo posiblemente incorrecto.
void loop(){
// cdigo magnfico a comprobar aqu
return;
// el resto del programa del que se desconfa
// que nunca ser ejecutado por estar detrs de return
}

do - while

El bucle "'do'" trabaja de la misma manera que el bucle "'while'", con la


excepcion de que la condicin se comprueba al final del bucle, por lo que este
bucle se ejecuta "siempre" al menos una vez.
do
{
// bloque de instrucciones
} while (condicin);

Ejemplo:
do
{
delay(50);
// espera a que los sensores se estabilicen
x = readSensors(); // comprueba los sensores
} while (x < 100);

//si se cumple la condicin se repite el bucle

SOFTWARE
WIRING
THE Wiring SOFTWARE IS PROVIDED TO YOU "AS IS," AND WE MAKE NO EXPRESS OR IMPLIED
WARRANTIES WHATSOEVER WITH RESPECT TO ITS FUNCTIONALITY, OPERABILITY, OR USE, INCLUDING,
WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, OR INFRINGEMENT. WE EXPRESSLY DISCLAIM ANY LIABILITY WHATSOEVER FOR ANY DIRECT,
INDIRECT, CONSEQUENTIAL, INCIDENTAL OR SPECIAL DAMAGES, INCLUDING, WITHOUT LIMITATION,
LOST REVENUES, LOST PROFITS, LOSSES RESULTING FROM BUSINESS INTERRUPTION OR LOSS OF
DATA, REGARDLESS OF THE FORM OF ACTION OR LEGAL THEORY UNDER WHICH THE LIABILITY MAY BE
ASSERTED, EVEN IF ADVISED OF THE POSSIBILITY OR LIKELIHOOD OF SUCH DAMAGES.
By downloading the software from this page, you agree to the specified terms. For instructions check
the software install tutorial in the Learning / Tutorialssection.

http://wiring.org.co/download/index.html
PROCESSING
Processing is an open source programming language and environment for people who want to create
images, animations, and interactions. Initially developed to serve as a software sketchbook and to
teach fundamentals of computer programming within a visual context, Processing also has evolved
into a tool for generating finished professional work. Today, there are tens of thousands of students,
artists, designers, researchers, and hobbyists who use Processing for learning, prototyping, and
production.

Free to download and open source

Interactive programs using 2D, 3D or PDF output

OpenGL integration for accelerated 3D

For GNU/Linux, Mac OS X, and Windows

Projects run online or as double-clickable applications

Over 100 libraries extend the software into sound, video, computer vision, and more...

Well documented, with many books available

http://www.processing.org/

Diagrama del Microcontrolador