You are on page 1of 55

Arduino: Una introduccin a la programacin Fsica

Qu es Arduino?

    

Es una plataforma de prototipos electrnica. El hardware y software son muy fciles de usar. El Arduino siente. Puedes programarlo con Wiring y el Processing. Arduino puede ser autnomo o comunicar su software con el ordenador

Existen otras plataformas similares a Arduino como:  Parallax Basic Stamp.  Netmedia's BX-24.  Phidgets.  MIT's Handyboard.

Pero

Por qu Arduino?

    

Barato Multiplataforma. Entorno de programacin simple y claro. Cdigo abierto y software extensible. Diseo abierto y hardware extensible.

Qu hace que sean poderosos los Arduinos?


    Los microcontroladores ATmega328 Atmega168 ATmega8. (old)

Tipos de Arduinos

      

Diecimila. Nano. Bluetooth. LilyPad. Mini. Serial. Serial Single Sided.

Arduino Diecimila
 Microcontrolador: Atmega168  Tiene 14 pines de entrada/salida  6 entradas analogicas.  Oscilador de cuarzo 16 MHz.  Conexin USB  SRAM: 1 KB  EEPROM: 512 bytes

Alimentacin: Arduino Diecimila

 Puede ser alimentado a travs de la conexin USB o suministro externo.  El modo de alimentacin se define mediante PWR_SEL.  Energa USB: Conectar jumper en los dos pines mas cercanos al USB  Energa Externa: Conectar jumper en los dos pines mas cercanos al conector de alimentacin externa.

Alimentacin: Arduino Diecimila


 Rango de operacin: 6 v - 20 v  Pines de alimentacin:  Vin: Entrada de Tensin a la placa cuando su alimentacin es externa.  5V: Suministro de energa usado para alimentar otros componentes.  3.3V: Suministro de 3.3 V generado por el chip FTDI  GND: Pines Tierra.

NOTA IMPORTANTE: SI EL ARDUINO DIECIMILA OPERA CON VOLTAJE INFERIOR A 7 V SU FUNCIONAMIENTO SE VUELVE INESTABLE.

Entradas y salidas: Arduino Diecimila


 Tiene 14 pines digitales (Input Output).  Operan a 5 volts y recibir mximo de 40 mA (Muy importante)  Tiene 6 entradas analgicas  Consta con 10 bits de resolucin.

Entradas y salidas: Arduino Diecimila


 Serial: 0 (Rx) y 1 (Tx). Usados para recibir (Rx) y transmitir (Tx) datos .  Interruptores externos: 2 y 3. Se configuran para disparar un interruptor en un valor bajo, un margen creciente o decreciente, o un cambio de valor.  PWM: 3, 5, 6, 9, 10 y 11. Proporcionan salida PWM de 8 bits con la funcin analogWrite()  SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines soportan comunicacin SPI

Entradas y salidas: Arduino Diecimila


 LED: 13. Hay un LED empotrado conectado al pin digital 13.  IC: 4 (SDA) y 5 (SCL). Soportan comunicacin IC  Reset. Pone esta linea a LOW para resetear el microcontrolador

Programacin: Software
 Requisitos para instalar el Software Arduino: 1. Obtener una placa Arduino y un cable. 2. Descargar el entorno Arduino. 3. Instalar los drivers USB. 4. Conectar la placa. 5. Conectar un LED. 6. Ejecutar el entorno Arduino. 7. Subir un programa. 8. Buscar el Led que parpadea.

Primero . Lo primero Obtener una placa Arduino y cable

Descargar el entorno Arduino


 Descarga la ltima versin desde http://www.arduino.cc/en/Main/Software.

Instalar los drivers USB

Si estas usando un Arduino USB, necesitars instalar los drivers para el chip FTDI de la placa. Estos pueden encontrarse en el directorio drivers/FTDI USB Drivers de la distribucin Arduino.

La ltima versin de los drivers se puede encontrar en http://www.ftdichip.com/Drivers/VCP.htm.

Manos a la obra . Conectar la placa


 La fuente de alimentacin se selecciona mediante el jumper entre los conectores del USB y alimentacin 2. Conectamos el USB del Arduino a la PC. 3. El LED de alimentacin debera encenderse. 4. Debe inicializar el Asistente para Aadir Nuevo Hardware.

Indcale que no conecte a Windows Update y haz click en siguiente.

Selecciona Instalar desde una lista o ubicacin especificada (Avanzado) y haz click en siguiente.

Asegurate que Buscar el mejor driver en estas ubicaciones est marcado; desmarca Buscar dispositivos extrables; marca Incluir esta ubicacin en la bsqueda y navega a la ubicacin donde descomprimiste los drivers USB en el paso anterior. Haz click en siguiente.

El asistente buscar el driver y dir que se encontr USB Serial Converter. Haz click en finalizar.

Ejecutar el entorno Arduino


Abrir la carpeta de Arduino y hacer doble click en la aplicacin Arduino.

Subir un programa

Abrir la rutina de ejemplo de parpadeo del LED: File > Sketchbook > Examples > Digital >Blink.

 Seleccionar el dispositivo serie de la placa Arduino desde el menu Herramientas > Puerto Serie.

 En Windows, este debera ser COM1 o COM2 para la placa serie Arduino, o COM3, COM4 o COM5 para la placa USB. Para descubrirlo, abrir el Administrador de Dispositivos de Windows (En la pestaa Hardware o en el Panel de Control de Sistema). Buscar un _USB Serial Port_ en la seccin Puertos; esa es la placa Arduino.

Ahora, simplemente haz click en el botn _Upload_ del entorno. Espera unos pocos segundos (deberas ver los LEDs Rx y Tx de la placa iluminndose). Si la carga es correcta, el mensaje _Done uploading_ aparacer en la barra de estado.

Introduccin al Entorno Arduino


Barra de herramientas
Icono Verify/Compile Stop New Open Descripcin Chequea el cdigo en busca de errores Para el Serial monitor, o minimiza otros botones Crea una nueva rutina Muestra un men con todas las rutinas de tu _sketchbook_. Guarda tus rutinas.

Save

Introduccin al Entorno Arduino


Barra de herramientas
Icono Upload to I/O board Descripcin Carga tu cdigo a la placa Arduino I/O. Asegrate de guardar o verificar tu rutina antes de cargarla. Muestra datos serie enviados desde la placa Arduino (placa serie o USB). Permite gestionar las rutinas con ms de un archivo

Serial Monitor

Tab Menu

Introduccin al Entorno Arduino


 Mens
Sketch Verify/Compile Import Library Show Sketch Folder Add File Comprueba tu rutina para errores Utiliza una librera en tu rutina Abre la carpeta de rutinas en tu escritorio Aade otro fichero fuente a la rutina

Introduccin al Entorno Arduino


Tools Auto Format Copy for Discourse Board Serial Port Esto formatea tu cdigo amigablemente Copia el cdigo de tu rutina al portapapeles de forma Selecciona la placa que estas usando Contiene todos los dispositivos serie (reales o virtuales) de la PC. Graba un bootloader en tu placa con una variedad de programadores

Burn Bootloader

Comenzando con el Arduino


 Estructura La estructura bsica del lenguaje de programacin Arduino es bastante simple y se organiza en al menos dos partes o funciones que encierran bloques de declaraciones void setup() { statements; } void loop() { statements; } Ambas funciones son requeridas para que el programa funcione.

 Funcin setup() La funcin setup debera contener la declaracin de cualquier variable al comienzo del programa. Ejemplo: void setup() { pinMode(pin, OUTPUT); //ajusta 'pin' como salida }

 Funcion loop() La funcin loop se ejecuta a continuacin e incluye el cdigo que se ejecuta continuamente leyendo entradas, activando salidas, etc. Esta funcin es el ncleo de todos los programas Arduino y hace la mayor parte del trabajo.

Ejemplo: void loop() { digitalWrite(pin, HIGH); //Activa 'pin' delay(1000); //espera un segundo digitalWrite(pin, LOW); //Desactiva 'pin' delay(1000); //espera un segundo }

Smbolo
Llaves { }

Descripcion
Definen el comienzo y el final de bloques de funcin y bloques de declaraciones como void loop() y sentencias for e if. Un punto y coma debe usarse al final de cada declaracin y separa los elementos del programa.

Ejemplo
void loop() { statements; }

Punto y coma

int x = 13;

Smbolo
Bloques de comentarios /* .. */

Descripcin
Son reas de texto ignoradas por el programa y se usan para grandes descripciones de cdigo o comentarios que ayudan a otras personas a entender partes del programa Proporcionan ms informacin sobre qu lleva la declaracin o proporcionar un recordatorio en el futuro.

Ejemplo
/* Este es un bloque de comentario encerrado no olvides cerrar el comentario tienen que estar balanceados! */

Comentarios de lnea

//

// Este es un comentario de una lnea

Smbolo
Variables

Descripcin Almacena un valor numrico que pueden ir cambiando continuamente.

Ejemplo int inputVariable = 0;

Tipos de datos

Tipos de Datos byte

Descripcin Almacena un valor numrico de 8 bits sin puntos decimales. Tienen un rango de 0 a 255 Datos primarios para almacenamiento de nmeros sin puntos decimales y almacenan un valor de 16 bits con un rango de -32,768 a 32,767

Ejemplo byte someVariable = 180;

int

int someVariable = 1500;

Tipos de datos

Tipos de Datos
long

Descripcin
Tipo de datos de tamao extendido para enteros largos, sin puntos decimales, almacenados en un valor de 32 bits con un rango de -2,146,483,648 a 2,147,483,647 . Los nmeros en punto flotante tienen mayor resolucin que los enteros y se almacenan como valor de 32 bits con un rango de 3.4028235E+38 a 3.4028235E+38.

Ejemplo
long someVariable = 90000;

float

float someVariable = 3.14

Tipos de datos

Tipos de Datos Arrays

Descripcin

Ejemplo

Es una coleccin de int myArray[5]; valores que son accedidos con un ndice numrico

Aritmtica en el Arduino

Los operadores aritmticos incluyen suma, resta, multiplicacin y divisin. Ejemplo: y = y+3; x = x-7; i = j*6; r = r/5;

Asignaciones compuestas
Las asignaciones compuestas combinan una operacin aritmtica con una asignacin de variable. Ejemplo: x++; //lo mismo que x = x+1 x--; //lo mismo que x = x-1 x += y; //lo mismo que x = x+y x -= y; //lo mismo que x = x-y x *= y; //lo mismo que x = x*y x /= y; //lo mismo que x = x/y

Operadores de comparacin
Su principal funcin es determinar si una condicin especfica es cierta. Ejemplo: x == y; //x es igual a y x != y; //x no es igual a y x < y; //x es menor que y x > y; //x es mayor que y x <= y; //x es menor o igual que y x >= y; //x es mayor o igual que y

Operadores lgicos

 Arduino usa tres operadores lgicos que son: AND, OR y NOT. Devuelven generalmente TRUE o FALSE. Ejemplo:         

//AND lgico: if(x>0 && x<5) //verdadero slo si las dos expresiones son ciertas //OR lgico: if(x>0 || y>0) //verdadero si al menos una expresin es cierta //NOT lgico: if(!(x>0)) //verdadero slo si la expresin es falsa

Constantes

Descripcin
True / False Son constantes Booleanas. FALSE=0 TRUE=1 Defines los niveles lgicos de los puertos digitales. HIGH=5 Volts LOW=0 Volts. Usadas con la funcin pinMode() para definir el modo de un pin digital como INPUT u OUTPUT.

Ejemplo
if(b == TRUE) { doSomething; } digitalWrite(13, HIGH);

high/low

input/output

pinMode(13, OUTPUT);

Control de Flujo
Descripcin
if Comprueban si cierta condicin ha sido alcanzada y ejecutan todas las sentencias dentro de las llaves si la declaracin es cierta. Si es falsa el programa ignora la sentencia. . else else puede preceder a otra comprobacin if, por lo que mltiples y mutuas comprobaciones exclusivas pueden ejecutarse al mismo tiempo

Ejemplo
if(someVariable ?? value) { doSomething; }

If

if(inputPin == HIGH) { doThingA; } else { doThingB; }

Control de Flujo

Descripcin for Repite un bloque de declaraciones encerradas en llaves un nmero especfico de veces Este bucle se repetir continuamente e infinitamente hasta que la expresin dentro del parntesis se vuelva falsa

Ejemplo for(inicializacion; condicion; expresion) { doSomething; } while(someVariable ?? value) { doSomething; }

while

Control de Flujo

Descripcin do. . . while Bucle que trabaja de la misma forma que el bucle while con la excepcin de que la condicin es testeada al final del bucle, por lo que el bucle do. . . while siempre se ejecutar al menos una vez

Ejemplo do { x = readSensors(); //asigna el valor de readSensors() a x delay(50); //pausa de 50 milisegundos }while(x < 100); //repite si x es menor que 100

Entradas y salidas Digitales


 pinMode(pin, mode) Configura un pin especfico para que se comporte como INPUT o como OUTPUT. pinMode(pin, OUTPUT); //ajusta 'pin' como salida
NOTA: La corriente excesiva pueden daar o destruir el pin de salida, o daar el chip ATmega. A menudo es una buena idea conectar un pin OUTPUT a un dispositivo externo en serie con una resistencia de 470Ohm o 1KOhm

Entradas y salidas Digitales


 DigitalRead(pin) Lee el valor desde un pin digital especificado con el resultado HIGH o LOW. El pin puede ser especificado o como una variable o como una constante (0 - 13). value = digitalRead(Pin); //ajusta 'value' igual al pin de entrada

Entradas y Salidas Analgicas


 analogRead(pin) Lee el valor desde un pin analgico especificado con una resolucin de 10 bits. Esta funcin slo trabaja en los pines analgicos (0 - 5). Los valores enteros devueltos estn en el rango de 0 a 1023. value = analogRead(pin); //ajusta 'value' igual a 'pin'

Entradas y Salidas Analgicas


 analogWrite(pin, value) Escribe un valor pseudo analgico usando modulacin por ancho de pulso (PWM). analogWrite(pin, value); //escribe 'value' al 'pin' analgico

Tiempo

 delay(ms) Pausa tu programa por la cantidad de tiempo especificada en milisegundos, donde 1000 es igual a 1 segundo.  delay(1000); //espera por un segundo

Tiempo

 millis() Devuelve el nmero de milisegundos desde que la placa Arduino empez a ejecutar el programa actual como un valor long sin signo. value = millis(); //ajusta 'value' igual a millis()
Nota: Este nmero se desbordar (resetear de nuevo a cero), despus de aproximadamente 9 horas.

Comunicacin: Serial

Serial.begin(rate) Inicializa el puerto serial y asigna una tasa de baudios para la transmisin . void setup() { Serial.begin(9600); //abre el puerto serie //ajusta la tasa de datos a 9600 bps }
Nota: Cuando se usa la comunicacin serie, los pines digitales 0 (Rx) y 1 (Tx) no pueden ser usados al mismo tiempo.

Comunicacin: Serial
Serial.println(data) Imprime datos al puerto serie, seguido de un retorno de carro y avance de lnea automticos. Este comando toma la misma forma que Serial.print(), pero es ms fcil para leer datos en el Serial Monitor. Serial.println(analogValue); //envia el valor de 'analogValue' //Ejemplo de aplicacin void setup() { Serial.begin(9600); //ajusta al serie a 9600 bps } void loop() { Serial.println(analogRead(0)); //envia valor analogico delay(1000); //pausa por 1 segundo }

You might also like