Seminario de arduino DeustoTech

4,497 views

Published on

Seminario introductorio a la plataforma Arduino

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,497
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
252
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Seminario de arduino DeustoTech

  1. 1. Seminario de ArduinoJuan José Echevarría, Adolfo García
  2. 2. Índice ¿Qué es Arduino? Historia Placas Configuración Programación Interacción pines digitales/analógicos Acceso a memoria Timers Interrupciones UART/SPI/I2C Sleep/Power Ejercicios Seminario Arduino
  3. 3. ¿Qué es Arduino? Plataforma Electrónica Software/Lenguaje de Programación Sistema Open Source USO FÁCIL E INTUITIVO www.arduino.cc Seminario Arduino
  4. 4. ¿Cómo surge Arduino? 2005 ->Instituto de Diseño Interactivo Ivrea (Italia)  David Cuartielles y Massimo Banzi Problemas existentes  Limitación tecnológica  Usuario no experto  Plataformas existentes ->complejas, especializadas o cerradas  Limitación económica Solución  Plataforma OpenSource ¡¡¡La comunidad Arduino tiene más de 120 mil usuarios!!!! Seminario Arduino
  5. 5. ¿Por qué usar Arduino? Sencilla Programación Rápido Prototipado Grabación mediante USB Gran extensibilidad todo tipo de sensórica y comunicaciones. “SHIELDS” SHIELD: Módulo extra para añadir funciones:  Ethernet, Wifi, Zigbee, GPRS,… Seminario Arduino
  6. 6. Placas: Arduino Uno uC ATmega 328 a 16MHz Flash 32KB RAM 2KB EEPROM 1KB 5 entradas Analógicas [0-5V] 14 Pines E/S Digitales  6 PWM Puerto serie (0,1) I2C (4,5) SPI (10, 11, 12, 13) Seminario Arduino
  7. 7. Placas: Arduino Mega2560 uC ATmega 2560 a 16MHz Flash 256KB RAM 8KB EEPROM 4KB 15 entradas Analógicas [0-5V] 54 Pines E/S Digitales  14 PWM 4 Puertos series (0-1,19-18,17-16,15- 14) I2C (20,21) SPI (50,51,52,53) Seminario Arduino
  8. 8. Placas: Arduino Fio y Nano Fio  Orientado a aplicaciones inalámbricas  Atmega328P a 8MHz  14 Entradas/Salidas digitales  6 PWM  Pines de alimentación de 3.3V  Conector para baterías  Conector para módulos xbee Nano  Idénticas características que Duemilanove  Alimentación a través de mini-USB  Pensado para aplicaciones embebidas Seminario Arduino
  9. 9. Placas: Arduino LilyPad y Seeeduino FilmSeminario Arduino
  10. 10. Shields Arduino Ethernet XBEE Wifi RelésSeminario Arduino
  11. 11. Características entorno Arduino Basado en C/C++ Librerías-> programación por objetos (C++)  Serial.begin(9600);  Servo servo1; Librerías familia AVR Entorno propio de desarrollo Seminario Arduino
  12. 12. Arduino IDE: configuración Descargar la última publicación de la página web -> www.arduino.cc Descomprimir fichero Conectar Arduino mediante USB  Si los drivers no se instalan automáticamente, instalar manualmente en …/arduino/drivers Ejecutar aplicación Seleccionar el puerto serie Seleccionar la placa Arduino en uso Seminario Arduino
  13. 13. Arduino IDESeminario Arduino
  14. 14. Programación Estructura:  setup( )  Al inicio de un programa  Inicia variables, configura los pins, librerías, ...  loop()  Función principal del programa  Bucle infinito Estructuras de control, operadores, tipos de datos…  C/C++ Constantes propias  HIGH/LOW  INPUT/OUTPUT Seminario Arduino
  15. 15. Funciones E/S Funciones E/S digitales:  pinMode(pin, modo); Inicialización  digitalWrite(pin, estado); Activación de una salida  Val=digitalRead(pin); Lectura de una entrada Funciones E/S analógicas y PWM:  analogWrite(pin, valor); Salida en PWM  Val=analogRead(pin); Entrada  Val= map(Val,init,fin,init2,fin2) Mapear valor Función espera:  delay(ms) Retraso en milisegundos Seminario Arduino
  16. 16. EjemploSeminario Arduino
  17. 17. UART Arduino Uno  Serial: Pines 0 (Rx) y 1 (Tx) -> compartido con USB Arduino Mega  Serial: Pines 0 (Rx) y 1 (Tx) -> compartido con USB  Serial1: Pines 19 (Rx) y 18 (Tx)  Serial2: Pines 17 (Rx) y 16 (Tx)  Serial3: Pines 15 (Rx) y 14 (Tx) Funciones  byte=Serial.read(); Recepción serie  Serial.print(a)/Serial.println(a); Imprimir en pantalla  Serial.write(a); Envío de un dato  Serial.begin(baudios); Inicialización serie  num=Serial.available(); Comprobar si hay datos  Serial.end(); Seminario Arduino
  18. 18. EjemploSeminario Arduino
  19. 19. Interrupciones Externas  Arduino Uno  0 (pin digital 2)  1 (pin digital 3)  Arduino Mega  0 (pin digital 2)  1 (pin digital 3)  2 (pin digital 21)  3 (pin digital 20)  4 (pin digital 19)  5 (pin digital 18) Seminario Arduino
  20. 20. Interrupciones Externas  attachInterrupt(interrupción, función, modo)  interrupción-> número interrupción  0 o 1 -> Arduino Uno  0 a 5 -> Arduino Mega  función-> función a la que se salta cuando ocurre  modo-> cuándo ocurre  LOW-> pin está a valor bajo (LOW)  CHANGE-> pin cambia de valor  RISING-> pin pasa de valor bajo (LOW) a alto (HIGH)  FALLING-> pin cambie de valor alto (HIGH) a bajo (LOW) Seminario Arduino
  21. 21. EjemploSeminario Arduino
  22. 22. Timers Librerías  Timer1 -> http://www.arduino.cc/playground/Code/Timer1 Descargar y copiar librería al directorio „/arduino- 1.0/libraries/‟ Incluirla en la clase principal (.ino)  #include <TimerOne.h> Uso básico  Timer1.initialize(periodo);//iniciar timer con tiempo en ms  Timer1.attachInterrupt(función,periodo);//llamada a interrupción al desbordarse el timer (periodo opcional) Precisión  Timer1->16 bits (65536) y el preescaler /256 (16MHz/256) =65536/62500 = 1.048576s Seminario Arduino
  23. 23. PROGMEM Utilizar memoria flash para almacenar y leer variables No se pueden grabar datos durante ejecución, sólo lectura Incluir en cabecera  #include <avr/pgmspace.h> Guardar datos en memoria  char array[] PROGMEM={“hola”}; Leer (byte a byte en un bucle)  char=pgm_read_byte(&array[pos]); Seminario Arduino
  24. 24. EEPROM Escribir/leer en memoria EEPROM  Arduino Uno-> 1kB  Arduino Mega-> 4kB #include <EEPROM.h> EEPROM.write(dirección, valor);//valor de 0 a 255  Dirección de 0-1023: Arduino Uno  Dirección de 0-4095: Arduino Mega EEPROM.read(dirección);//lee un byte de una posición 100.000 ciclos lectura/escritura Permite uso durante ejecución Seminario Arduino
  25. 25. SPI Arduino como maestro Arduino Uno  10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Arduino Mega  50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS) Funciones  #include <SPI.h>  SPI.begin();//Iniciar librería SPI  SPI.transfer(byte);//Envía/recibe un byte vía SPI  SPI.setClockDivider(divisor);//Divisor de reloj relativo al reloj del sistema Seminario Arduino
  26. 26. SPI  SPI.setDataMode(modo);//polaridad y fase Modo Polaridad Fase reloj reloj SPI_MODE 0 0 0 SPI_MODE 0 1 1 SPI_MODE 1 0 2 SPI_MODE 1 1  SPI.setBitOrder(orden);//orden bits 3  LSBFIRST  MSBFIRST  SPI.end();Seminario Arduino
  27. 27. Wire Comunicación I2C Arduino Uno  A4 (SDA) y A5 (SCL) Arduino Mega  20 (SDA) and 21 (SCL) Funciones  Wire.begin(dirección);//unirse bus I2C->dirección esclavo 7 bits opcional, si no se especifica es maestro  Wire.beginTransmission(dirección);//empezar a comunicarse con esclavo  Wire.write(val);//datos a enviar Seminario Arduino
  28. 28. Wire  Wire.endTransmission();//fin Retorno Significado 0 Éxito 1 Datos no entran en búfer de tx 2 NACK en tx. de la dirección 3 NACK en tx. de los datos 4 Otro  Wire.requestFrom(dirección,cantidad);//pedir datos al esclavo  Wire.available();//cantidad de datos  Wire.read();//leer un byte  Interrupciones de servicioSeminario Arduino
  29. 29. EjemploSeminario Arduino
  30. 30. Otras librerías Comunicación con módulos XBee  http://code.google.com/p/xbee-arduino/ Twitter  http://arduino.cc/playground/Code/TwitterLibrary Servos  http://arduino.cc/en/Reference/Servo NewSoftSerial  http://arduiniana.org/libraries/newsoftserial/ Sleep (AVR)  http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html  http://donalmorrissey.blogspot.com/2010/04/putting-arduino-diecimila-to- sleep-part.html Power (AVR)  http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html Seminario Arduino
  31. 31. PREGUNTAS
  32. 32. PAUSASeminario Arduino
  33. 33. Shield desarrollada Conexiones  LDR: pin A0  Led rojo: pin 3  Led amarillo: pin 5  Led verde: pin 6  Pulsador 1: pin 4  Pulsador 2: pin 7  RFID: pin RX  Jumper desconectado para grabación  Jumper conectado para ejecución No conectar el jumper en los pines superiores Seminario Arduino
  34. 34. Ejercicios Desarrollar una aplicación que obtenga datos de un sensor de luz (LDR) y active un led proporcionalmente al reducir la iluminación. Desarrollar una aplicación que lea 2 tarjetas RFID, de forma que al pasar una de ellas encienda los leds, y al pasar la otra los apague. Seminario Arduino

×