POLOLU manual-programing

1. Introducción El orangután de LV-168 conectado a un soporte de la batería de 3 AA. Orangután del bebé B con pines de

Views 81 Downloads 0 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

1. Introducción

El orangután de LV-168 conectado a un soporte de la batería de 3 AA.

Orangután del bebé B con pines de cabecera incluidos soldado en la instalación de tablero.

Arduino es una plataforma de prototipado popular, de código abierto que hace que sea fácil para las personas con poca experiencia en la electrónica para entrar en el mundo de los microcontroladores y programación embebida. El entorno Arduino consiste en un entorno de código abierto de desarrollo integrado (IDE) y el compilador, librerías de software, y placas de hardware programable basado en el ATmega168 potente y microcontroladores Atmega328. Debido a que nuestro Orangután SV-xx8 , orangután LV-168 , y de bebé orangután B controladores de robots usan estos mismos microcontroladores, tienen un alto grado de solapamiento con Arduino. Por tanto, nuestros controladores de robots orangután pueden ser una alternativa atractiva a hardware oficial de Arduino para aquellos que ya están familiarizados con el entorno Arduino, y el medio ambiente pueden ser una alternativa amigable para los principiantes a AVR Studio para aquellos que buscan para empezar con los orangutanes.

Nota: El robot 3pi Pololu tiene efectivamente un orangután SV-xx8 como su núcleo, por lo que esta guía y las bibliotecas orangután Arduino aplica al 3pi también. Para obtener más información sobre el 3pi, consulte la guía del usuario 3pi .

La oferta orangutanes y robot 3pi hardware que Arduinos no lo hacen, como controladores de motor doble de a bordo integrado. Esto los hace muy adecuados para aplicaciones que implican el control de pequeñas y medianas robots. El orangután SV-xx8, orangután LV-168, y el robot 3pi también han integrado pulsadores, un zumbador piezo, y un LCD extraíble, todas las cuales son características adicionales que no se encuentran en Arduinos oficiales. Con algunos cambios menores en los archivos de configuración de software de Arduino, se hace posible programar nuestros orangutanes y robot 3pi usando el Arduino IDE y bibliotecas. Esta guía le guiará a través del proceso de reconfiguración de la Arduino IDE, y ofrecerá una serie de bibliotecas personalizadas que harán más fácil para hacer interfaz con todo el hardware a bordo del orangután / de 3pi.

Una diferencia clave entre las tablas estándar de Arduino y los controladores de robots orangután es que la mayoría vienen con Arduino USB a serial adaptadores integrados, que permiten conectar a su computadora y el programa a través de gestores de arranque pre-cargado, mientras que los orangutanes carecen integrado USB- a serie adaptadores. Como tal, para el Orangután SV-xx8, LV-168 y el robot 3pi, le recomendamos que programe los orangutanes o robot 3pi usando un ISP AVR (denominado ICSP en el mundo Arduino) programador como nuestro USB AVR Programmer . Al adoptar este enfoque y dejando fuera el gestor de arranque, se obtiene un 2 KB extra de espacio del programa. También evitar el retraso del gestor de arranque al encender o reiniciar el tablero.

Pololu programador AVR USB con cable incluido ISP seis pines.

Nota: Este documento se aplica sólo al robot 3pi y Orangután SV-xx8 , orangután LV-168 , y el bebé orangután B controladores de robots. Para simplificar, los tres últimos dispositivos se denominarán a partir de ahora

como "orangutanes" , a menos que una distinción debe hacerse entre los modelos Orangután específicos. Este documento hacenosolicitar a la originalorangután , orangután del bebé , orangután X2 , o SVP Orangután de control del robot. 2. ATmega168 Mapping / 328-Pin Arduino En nuestra documentación estándar orangután y 3pi, utilizamos la misma convención que Atmel utiliza en su ATmega168 / 328 hoja de datos, en referencia a las patillas de sus puertos asociados. Por ejemplo, el pin PD7 es el pin 7 del puerto D. Se utiliza esta convención, ya que cada puerto es controlado por sus propios registros AVR, y los bits de estos registros corresponden a los pines individuales. El Arduino aísla al usuario de este nivel de detalle, en referencia a los pines de E / S como pines digitales 0-13 y entradas analógicas 0 - 7. Tenga en cuenta que esta terminología puede ser un poco engañoso ya que las entradas analógicas 0-5 también se puede utilizar como yo digital de propósito general pines E / S (referido como pines digitales 14-19). Usted puede visitar http://www.arduino.cc/en/Hacking/PinMapping168 para ver exactamente cómo los mega168 / 328 pines se asignan a los pines de Arduino. Tenga en cuenta que esta página muestra un chip encapsulado DIP de 28 pines, mientras que los orangutanes llevan pequeños paquetes de 32 pines del FML que contienen dos entradas analógicas dedicadas adicionales: ADC6 y ADC7. En el entorno de Arduino, estas patillas se convierten en entradas analógicas Arduino 6 y 7, respectivamente. El diagrama siguiente proviene de la página vinculada anteriormente:

2.a. Orangután SV-xx8 y BT-168 Pin Asignaciones

Orangután SV-168 vista desde abajo con dimensiones (cartografía pin de Arduino).

Orangután LV-168 vista desde abajo con dimensiones (cartografía pin de Arduino).

Tabla Asignación Pin Ordenado por función Función

Arduino Pin

mega168 Pin

digital de E / S (x8)

pines digitales 0 y 1 entradas analógicas 0-5

PD0, PD1, PC0 - PC5

entradas analógicas (x8)

entradas analógicas 0-7

PC0 - PC5, ADC6, ADC7

1 de control del motor (A y B)

pines digitales 5 y 6

PD5 y PD6

2 de control del motor (A y B)

pines digitales 3 y 11

PD3 y PB3

LED rojo de usuario

pin digital 1

PD1

LED verde usuario

pin digital 7

PD7

pulsadores de usuario (x3)

entradas digitales 9, 12 y 13

PB1, PB4 y PB5

zumbador

pin digital 10

PB2

Control LCD (RS, R / W, E)

pines digitales 2, 8 y 4

PD2, PB0, y PD4

Datos LCD (4 bits: DB4 - DB7)

pines digitales 9, 12, 13 y 7

PB1, PB4, PB5, y PD7

trimmer de usuario potenciómetro

entrada analógica 7 (a través de puente)

ADC7

sensor de temperatura (sólo LV-168) de la batería del monitor de tensión (SV-168 solamente)

entrada analógica 6 (a través de puente SMT)

ADC6

Líneas de programación ICSP (x3)

pines digitales 11, 12 y 13

PB3, PB4, PB5

pulsador de rearme

reajustar

PC6

UART (RX y TX)

pines digitales 0 y 1

PD0 y PD1

I2C / TWI (SDA y SCL)

entradas analógicas 4 y 5

PC4 y PC5

SPI

inaccesible para el usuario

Tabla Asignación Pin Ordenado por Pin Arduino Pin

Función orangután

Notas / Funciones Alternos

pin digital 0

E / S digital

USART pin de entrada (RXD)

pin digital 1

E / S digital

conectado al LED rojo de usuario (altas vueltas LED encendido) pin de salida USART (TXD)

pin digital 2

De control LCD de

interrupción externa 0 (INT0)

línea RS pin digital 3

Línea de control M2 Timer2 salida PWM B (OC2B)

pin digital 4

Línea de control LCD E

pin digital 5

Línea de control M1 Timer0 salida PWM B (OC0B)

pin digital 6

Línea de control M1 Timer0 PWM de salida A (OC0A)

pin digital 7

Línea de datos LCD conectado al LED verde usuario (altas vueltas LED encendido) DB7

pin digital 8

LCD línea de control R / W

pin digital 9

Línea de datos LCD pulsador de usuario (pulsando tira pin baja) DB4 Timer1 salida PWM A (OC1A)

pin digital 10

zumbador

Timer1 salida PWM B (OC1B)

pin digital 11

Línea de control M2

Salida Timer2 PWM A (OC2A) línea de programación ISP

pin digital 12

Línea de datos LCD pulsador de usuario (pulsando tira pin baja) Precaución: también una línea de programación ISP DB5

pin digital 13

Línea de datos LCD pulsador de usuario (pulsando tira pin baja) Precaución: también una línea de programación ISP DB6

entrada analógica 0

entrada analógica y E / S digital

ADC canal de entrada 0 (ADC0)

entrada analógica 1

entrada analógica y E / S digital

Canal de entrada ADC 1 (ADC1)

entrada analógica 2

entrada analógica y E / S digital

Canal de entrada ADC 2 (ADC2)

USART entrada de reloj externa / salida (XCK) contador externo Timer0 (T0)

Timer1 captura de entrada (ICP1) salida de reloj del sistema dividido (CLK0)

entrada analógica 3

entrada analógica y E / S digital

Canal de entrada ADC 3 (ADC3)

entrada analógica 4

entrada analógica y E / S digital

Canal de entrada ADC 4 (ADC4) I2C / TWI línea de datos de entrada / salida (SDA)

entrada analógica 5

entrada analógica y E / S digital

Canal de entrada ADC 5 (ADC5) I2C / TWI línea de reloj (SCL)

entrada analógica 6

SMT puenteado a sensor de temperatura (sólo LV-168) SMT puenteado de supervisar voltaje de la de entrada analógica batería (SV-168 solamente) canal de entrada ADC 6 (ADC6) dedicada

entrada analógica 7

de entrada analógica puenteado a recortador usuario potenciómetro dedicada del canal de entrada ADC 7 (ADC7)

reajustar

pulsador de rearme

tirado internamente alta; activo bajo E / S digital desactivado por defecto

2.b. bebé orangután B Pin Asignaciones

Tabla Asignación Pin Ordenado por función Función

Arduino Pin

mega168 Pin

digital de E / S (x16)

pines digitales 0-2, 4, 7-10, 12, 13 entradas analógicas 0-5

PD0 - PD2, PD4, PD7, PB0 - PB2, PB4, PB5, PC0 - PC5

entradas analógicas (x8)

entradas analógicas 0-7

PC0 - PC5, ADC6, ADC7

1 de control del motor (A y B)

pines digitales 5 y 6

PD5 y PD6

2 de control del motor (A y B)

pines digitales 3 y 11

PD3 y PB3

LED rojo de usuario

pin digital 1

PD1

trimmer de usuario potenciómetro

entrada analógica 7

ADC7

Líneas de programación ICSP (x3)

pines digitales 11, 12 y 13

PB3, PB4, PB5

REINICIO

reajustar

PC6

UART (RX y TX)

pines digitales 0 y 1

PD0 y PD1

I2C / TWI (SDA y SCL)

entradas analógicas 4 y 5

PC4 y PC5

SPI

inaccesible para el usuario

Timer1 salidas PWM (A y B)

pines digitales 9 y 10

PB1 y PB2

Tabla Asignación Pin Ordenado por Pin Arduino Pin

Función orangután

Notas / Funciones Alternos

pin digital 0

E / S digital

USART pin de entrada (RXD)

pin digital 1

E / S digital

conectado al LED rojo de usuario (altas vueltas LED encendido) pin de salida USART (TXD)

pin digital 2

E / S digital

interrupción externa 0 (INT0)

pin digital 3

Línea de control M2

Timer2 salida PWM B (OC2B)

pin digital 4

E / S digital

USART entrada de reloj externa / salida (XCK) contador externo Timer0 (T0)

pin digital 5

Línea de control M1

Timer0 salida PWM B (OC0B)

pin digital 6

Línea de control M1

Timer0 PWM de salida A (OC0A)

pin digital 7

E / S digital

pin digital 8

E / S digital

Timer1 captura de entrada (ICP1) salida de reloj del sistema dividido (CLK0)

pin digital 9

E / S digital

Timer1 salida PWM A (OC1A)

pin digital 10

E / S digital

Timer1 salida PWM B (OC1B)

pin digital 11

Línea de control M2

Salida Timer2 PWM A (OC2A) línea de programación ISP

pin digital 12

E / S digital

Precaución: también una línea de programación ISP

pin digital 13

E / S digital

Precaución: también una línea de programación ISP

entrada analógica 0

entrada analógica y E / S digital

ADC canal de entrada 0 (ADC0)

entrada analógica 1

entrada analógica y E / S digital

Canal de entrada ADC 1 (ADC1)

entrada analógica 2

entrada analógica y E / S digital

Canal de entrada ADC 2 (ADC2)

entrada analógica 3

entrada analógica y E / S digital

Canal de entrada ADC 3 (ADC3)

entrada analógica 4

entrada analógica y E / S digital

Canal de entrada ADC 4 (ADC4) I2C / TWI línea de datos de entrada / salida (SDA)

entrada analógica 5

entrada analógica y E / S digital

Canal de entrada ADC 5 (ADC5) I2C / TWI línea de reloj (SCL)

entrada analógica 6

de entrada analógica dedicada

Canal de entrada ADC 6 (ADC6)

entrada analógica 7

de entrada analógica dedicada

conectado al recortador de usuario potenciómetro canal de entrada ADC 7 (ADC7)

reajustar

REINICIO pin

tirado internamente alta; activo bajo E / S digital desactivado por defecto

2.c 3pi Robot Pin Asignaciones

Características generales del robot 3pi Pololu, vista desde arriba.

Etiquetada vista inferior del robot 3pi Pololu.

Características específicas del robot 3pi Pololu, vista desde arriba.

Tabla Asignación Pin Ordenado por función Función

Arduino Pin

mega168 Pin

Me digital gratuito / Os (x3) (Quite el puente PC5 al pin digital gratuito 19)

pines digitales 0, 1, 19

PD0, PD1, PC5

entradas analógicas libres (si se quita los puentes, x3)

entradas analógicas 5-7

PC5, ADC6, ADC7

motor 1 (motor izquierdo) de control (A y B)

pines digitales 5 y 6

PD5 y PD6

motor 2 (motor derecho) de control (A y B)

pines digitales 3 y 11

PD3 y PB3

Sensores de reflectancia de QTR-RC (de izquierda a derecha, x5)

pines digitales 14-18

PC0 - PC4

rojo (izquierda) LED usuario

pin digital 1

PD1

verde (derecha) LED usuario

pin digital 7

PD7

pulsadores de usuario (de izquierda a derecha, x3)

entradas digitales 9, 12 y 13

PB1, PB4 y PB5

zumbador

pin digital 10

PB2

Control LCD (RS, R / W, E)

pines digitales 2, 8 y 4

PD2, PB0, y PD4

Datos LCD (4 bits: DB4 - DB7)

pines digitales 9, 12, 13 y 7

PB1, PB4, PB5, y PD7

sensor de reflectancia IR LED de control (conducir bajo para encender LEDs IR apagado)

pin digital 19 (a través del puente)

PC5

trimmer de usuario potenciómetro

entrada analógica 7 (a través de puente)

ADC7

2 / 3rds de voltaje de la batería

entrada analógica 6 (a través de puente)

ADC6

Líneas de programación ICSP (x3)

pines digitales 11, 12 y 13

PB3, PB4, PB5

pulsador de rearme

reajustar

PC6

UART (RX y TX)

pines digitales 0 y 1

PD0 y PD1

I2C / TWI

inaccesible para el usuario

SPI

inaccesible para el usuario

Tabla Asignación Pin Ordenado por Pin Arduino Pin

Función orangután

Notas / Funciones Alternos

pin digital 0

Me digital gratuito / S

USART pin de entrada (RXD)

pin digital 1

Me digital gratuito / S

conectado al LED rojo de usuario (altas vueltas LED encendido) pin de salida USART (TXD)

pin digital 2

De control LCD de línea RS

interrupción externa 0 (INT0)

pin digital 3

Línea de control M2

Timer2 salida PWM B (OC2B)

pin digital 4

Línea de control LCD E

USART entrada de reloj externa / salida (XCK) contador externo Timer0 (T0)

pin digital 5

Línea de control M1

Timer0 salida PWM B (OC0B)

pin digital 6

Línea de control M1

Timer0 PWM de salida A (OC0A)

pin digital 7

Línea de datos LCD DB7

conectado al LED verde usuario (altas vueltas LED encendido)

pin digital 8

LCD línea de control R / W

Timer1 captura de entrada (ICP1) salida de reloj del sistema dividido (CLK0)

pin digital 9

Línea de datos LCD DB4

pulsador de usuario (pulsando tira pin baja) Timer1 salida PWM A (OC1A)

pin digital 10

zumbador

Timer1 salida PWM B (OC1B)

pin digital 11

Línea de control M2

Salida Timer2 PWM A (OC2A) línea de programación ISP

pin digital 12

Línea de datos LCD DB5

pulsador de usuario (pulsando tira pin baja) Precaución: también una línea de

programación ISP pulsador de usuario (pulsando tira pin baja) Precaución: también una línea de programación ISP

pin digital 13

Línea de datos LCD DB6

pin digital 14

Sensor de reflectancia de QTR- (Unidad de alta para el 10 de nosotros, y luego esperar a la entrada de línea para ir bajo) RC sensor marcado PC0 (sensor más a la izquierda)

pin digital 15

Sensor de reflectancia de QTR- (Unidad de alta para el 10 de nosotros, y luego esperar a la entrada de línea para ir bajo) RC sensor marcado PC1

pin digital 16

Sensor de reflectancia de QTR- (Unidad de alta para el 10 de nosotros, y luego esperar a la entrada de línea para ir bajo) RC sensor marcado PC2 (sensor central)

pin digital 17

Sensor de reflectancia de QTR- (Unidad de alta para el 10 de nosotros, y luego esperar a la entrada de línea para ir bajo) RC sensor marcado PC3

pin digital 18

Sensor de reflectancia de QTR- (Unidad de alta para el 10 de nosotros, y luego esperar a la entrada de línea para ir bajo) RC sensor marcado PC4 (sensor más a la derecha)

pin digital 19

entrada analógica y E / S digital

puenteado con LEDs IR sensores ' (conducir bajo apaga emisores) canal de entrada ADC 5 (ADC5)

entrada analógica de entrada analógica dedicada 6

puenteado a 2 / 3rds de voltaje de la batería del canal de entrada ADC 6 (ADC6)

entrada analógica de entrada analógica dedicada 7

puenteado a recortador usuario potenciómetro del canal de entrada ADC 7 (ADC7)

reajustar

tirado internamente alta; activo bajo E / S digital desactivado por defecto

pulsador de rearme

3. Configuración del Arduino Medio Ambiente

Las instrucciones de configuración de esta sección explican cómo alterar el Arduino IDE para que programe su orangután o un robot 3pi usando la configuración correcta, utilizando un programador AVR ISP que soporte el protocolo avrispv2 (como el programador AVR Pololu USB ) o un Arduino bootloader. 1. Ir a http://www.arduino.cc/en/Main/Software y descargar el software más reciente para su plataforma Arduino (Arduino 1.0.1 partir de este escrito). 2. Agregue lo siguiente al final de la boards.txt archivo en el arduino-1.0.1 / hardware / Arduino directorio: 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

################################################## ############ orangutan48pgm.name = Pololu Orangután del bebé B-48 a través del programador orangutan48pgm.upload.using = avrispv2 orangutan48pgm.upload.maximum_size = 4,096 orangutan48pgm.build.mcu = ATmega48 orangutan48pgm.build.f_cpu = 20000000L orangutan48pgm.build.core = arduino orangutan48pgm.build.variant = estándar ################################################## ############ orangutan168pgm.name = Pololu Orangután o robot 3pi w / ATmega168 vía programador orangutan168pgm.upload.using = avrispv2 orangutan168pgm.upload.maximum_size = 16384 orangutan168pgm.build.mcu = atmega168 orangutan168pgm.build.f_cpu = 20000000L

24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.

orangutan168pgm.build.core = arduino orangutan168pgm.build.variant = estándar ################################################## ############ orangutan328pgm.name = Pololu Orangután o robot 3pi w / ATmega328P través Programador orangutan328pgm.upload.using = avrispv2 orangutan328pgm.upload.maximum_size = 32768 orangutan328pgm.build.mcu = ATmega328P orangutan328pgm.build.f_cpu = 20000000L orangutan328pgm.build.core = arduino orangutan328pgm.build.variant = estándar

Esto agregará tres opciones para la Herramientas> Junta menú del IDE de Arduino. Si prefiere utilizar un programador diferente que no admite el protocolo avrispv2 , a continuación, cambiar los upload.using líneas para que coincida con el nombre de su programador / protocolo, y omita el paso 3 (si el programador ya está definido por el entorno Arduino) o añadir la entrada correspondiente para su programador en programmers.txt . Estas dos entradas siguientes son opcionales, pero le permiten usar un gestor de arranque Arduino en lugar de un programador externo: ################################################## ############

orangutan168.name = Pololu Orangután o robot 3pi w / ATmega168 a través del cargador de arranque orangutan168.upload.protocol = arduino orangutan168.upload.maximum_size = 15872 orangutan168.upload.speed = 144000 orangutan168.bootloader.low_fuses = 0xF6 orangutan168.bootloader.high_fuses = 0xdd orangutan168.bootloader.extended_fuses = 0x04 orangutan168.bootloader.path = optiboot orangutan168.bootloader.file = optiboot_atmega168.hex orangutan168.bootloader.unlock_bits = 0x3F orangutan168.bootloader.lock_bits = 0x0F orangutan168.build.mcu = atmega168 orangutan168.build.f_cpu = 20000000L orangutan168.build.core = arduino orangutan168.build.variant = estándar ################################################## ############ orangutan328.name = Pololu Orangután o robot 3pi w / ATmega328P a través del cargador de arranque orangutan328.upload.protocol = arduino orangutan328.upload.maximum_size = 32256 orangutan328.upload.speed = 144000 orangutan328.bootloader.low_fuses = 0xF6 orangutan328.bootloader.high_fuses = 0xDE

orangutan328.bootloader.extended_fuses = 0x05 orangutan328.bootloader.path = optiboot orangutan328.bootloader.file = optiboot_atmega328.hex orangutan328.bootloader.unlock_bits = 0x3F orangutan328.bootloader.lock_bits = 0x0F orangutan328.build.mcu = ATmega328P orangutan328.build.f_cpu = 20000000L orangutan328.build.core = arduino orangutan328.build.variant = estándar

Si desea utilizar el gestor de arranque , usted todavía tendrá que utilizar un programador AVR cargar inicialmente el gestor de arranque en su orangután o 3pi, y usted también tendrá que obtener un adaptador serie USB-a-o RS-232-a-TTL adaptador de serie a través del cual el software Arduino puede hablar con el bootloader de Arduino en su dispositivo. El Pololu USB AVR programador puede servir como su programador AVR ISP y de USB a serial adaptador. Tenga en cuenta que tendrá que o bien restablecer el orangután / 3pi manualmente cuando se programa con el gestor de arranque o modificar el hardware para permitir que la señal de control DTR a auto-reset del microcontrolador. Tenga en cuenta que el bebé orangután B- 48 tiene un microcontrolador ATmega48, que carece de una sección del gestor de arranque, es decir, la versión B-48 sólo se puede programar utilizando un ICSP. 37. Si está utilizando un programador AVR ISP como nuestro USB AVR programador, añadir lo siguiente al final de la programmers.txt archivo en el arduino-1.0.1 / hardware / Arduino directorio: 38.

avrispv2.name = AVR ISP v2

39.

avrispv2.communication = serial avrispv2.protocol = avrispv2

Esto permitirá que el Arduino IDE para programar con el protocolo avrispv2 utilizado por nuestro USB AVR Programmer. . 4 Utilizando el Arduino IDE: un LED parpadeante Ahora es el momento de dar el Arduino IDE para dar una vuelta. Nuestro primer objetivo será cargar un boceto LED parpadeante sencillo (programa de Arduino) en nuestra orangután o 3pi. Abra el Arduino IDE y crear el siguiente bosquejo: ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

/ * * Blink * * El ejemplo básico Arduino, modificado para trabajar para los orangutanes. * Se enciende un LED durante un segundo, y luego se apaga durante un segundo, * y así sucesivamente ... Nos usar el pin 1 porque orangutanes tienen un LED * en PD1, que corresponde a Arduino pin 1. * * http://www.arduino.cc/en/Tutorial/Blink * / int ledPin = 1;

// LED conectado al pin digital 1 (PD1) en orangutanes

void setup () { pinMode (ledPin, OUTPUT); }

// ejecutar una vez, cuando se inicia el croquis

void loop () {

// ejecutar una y otra vez

// establece el pin digital como salida

18 19 20 21 22 23 24 25

}

digitalWrite (ledPin, HIGH); retardo (1000); digitalWrite (ledPin, LOW); retardo (1000);

// establece el LED el // espera un segundo // establece el LED apagado // espera un segundo

O copie el texto anterior en un nuevo boceto en blanco, o descargar este como OrangutanBlinkExample.pde (pde 1k) y abrirlo en el IDE de Arduino. Selecciona una de nuestras tablas especialmente creados utilizando el menú Herramientas> Junta:

bosquejo

Seleccione el programador:

Si está utilizando un Pololu USB AVR programador, seleccione "AVR ISP v2" en el menú Programador. De lo contrario, consulte la documentación de su programador para averiguar qué opción para seleccionar. Seleccione el puerto serie del programador:

Si está utilizando un Pololu USB AVR programador, asegúrese de que ha instalado los controladores adecuados (véase la guía del usuario del programador ) y conectarlo a su ordenador. Una vez hecho esto, usted debería ser capaz de ver su puerto COM aparece en las Herramientas> Serial Port menú. Si usted no sabe qué puerto COM su programador está activada, se puede determinar esto crianza de administrador de dispositivos de su equipo y la ampliación de los Puertos (COM & LPT) lista. Para abrir el administrador de dispositivos, haga clic en "Mi PC" y seleccione Administrar , haga clic en elAdministrador de dispositivos de opción que aparece en el lado izquierdo, en Herramientas del sistema . Busque el puerto que dice "Pololu USB AVR Programmer Puerto de programación".

Si está utilizando un verdadero programador USB (es decir, uno que no emula un puerto serie), que no es necesario para seleccionar un puerto serie. Programa tu o 3pi Orangután con el boceto: Conecte el programador con el orangután o 3pi a través de su jefe de la ISP de seis pines, asegurándose de que el pin 1 de las líneas programador hasta con el pin 1 del conector de programación del objetivo. El Orangután SV-xx8, orangután LV-168, y 3pi cada uno tiene una cabecera envuelta que hará cumplir la orientación pin correcto, pero el bebé orangután B no lo hace. Pin 1 del orangután del bebé está marcado por una flecha de cobre en el PCB y el pin 1 en nuestro USB AVR Programmer está marcada por un triángulo de plástico en relieve en el conector IDC. Con el programador conectado a su ordenador y su orangután o 3pi, haga clic en el Subir al Consejo Directivo del I / O botón (en el círculo en la siguiente captura de pantalla) o pulse Ctrl + T para compilar el boceto y lo cargue en el dispositivo de destino. La barra de estado en la parte inferior de la ventana dirá "Subida a la I / O Board ...", mientras que la carga está en curso y se leerá "uploading Done." Cuando la carga esté completa. Si todo ha funcionado correctamente ahora debería ver usuario roja del blanco LED parpadeante y apaga cada segundo. Tenga en cuenta

que si está utilizando un 3pi y aún no ha soldado en los LED opcionales a través de hoyos, usted tendrá que mirar en la parte inferior del robot para ver el parpadeo del LED.

5. Arduino Bibliotecas para el orangután y el robot 3pi

Nota: Debido a que los orangutanes no fueron diseñados como placas Arduino oficiales, no todo el código de la biblioteca Arduino existente será directamente compatible con ellos. Por ejemplo, ciertas funciones Arduino como delayMicroseconds () y pulseIn () están diseñados para funcionar a 16 MHz y por lo tanto su comportamiento se ve alterada por el reloj del orangután de 20 MHz. En otros casos, las bibliotecas-orangután específica pueden entrar en conflicto con las librerías de Arduino existentes, si los dos están compitiendo por los mismos periféricos de hardware mega168 (por ejemplo, dos bibliotecas que intentan utilizar Timer1 de diferentes maneras no será compatible). Visión de conjunto En esta sección se ofrece una serie de bibliotecas-orangután específica que le permiten hacer interfaz con facilidad con el hardware / 3pi orangután desde el entorno Arduino. Es importante tener en cuenta que el bebé orangután B es un subconjunto de hardware de la mayor orangután SV-xx8 y LV-168, y estos orangutanes son (casi) un subconjunto de hardware del robot 3pi. Lo que esto significa es que cualquier código de la biblioteca que funciona en el bebé orangután B también trabajará en el robot orangután y 3pi, y (casi) cualquier código de la biblioteca que funciona en el orangután también trabajará en el 3pi. Las siguientes subsecciones contienen documentación detallada de cada biblioteca orangután Arduino. Todas las bibliotecas que se aplican al orangután va a trabajar para el hardware correspondiente en el robot 3pi . La única clase biblioteca para lo cual es significativo tener varias instancias es PololuQTRSensors. Todas las otras clases consisten enteramente en métodos estáticos, por lo que no tiene sentido para crear instancias de ellos varias veces. Desde la versión 101 215, las versiones C de las funciones de la biblioteca también están disponibles para su uso en sus programas de Arduino. Esto significa que hay tres formas posibles para que usted pueda llamar a los métodos de la biblioteca: ?

1 2

unsigned int x;

3 4 5 6 7 8 9 10 11

// C ++ a través de la función objeto instanciado OrangutanAnalog analógica; // esta línea se coloca generalmente por encima de setup () x = analog.readTrimpot (); // C ++ función a través ámbito de clase x = OrangutanAnalog :: readTrimpot (); / / función C x = read_trimpot ();

Las únicas clases de biblioteca que necesitan ser inicializado explícitamente antes de que se utilizan son PololuQTRSensors y Pololu3pi, ya que estos objetos se inicializan con los parámetros especificados por el usuario. Ninguno de los restantes objetos de la biblioteca Orangután debe inicializar explícitamente en su configuración () función que la inicialización se realiza automáticamente cuando sea necesario. Instrucciones de descarga Los Pololu Arduino Bibliotecas están dentro de un archivo comprimido, que se puede descargar desde el siguiente enlace:  Pololu Arduino Bibliotecas versión 120914 (107k postal) , probado con Arduino 1.0.1 Si está utilizando una versión anterior del entorno Arduino, le recomendamos que actualice a Arduino 1.0.1 y utilizar la última versión de los Pololu Arduino Bibliotecas. Sin embargo, las versiones anteriores de las bibliotecas se proporcionan para garantizar la compatibilidad con los entornos Arduino mayores:  PololuArduinoLibraries-111221 (107k zip), probados con Arduino 1.0  PololuArduinoLibraries-101215 (107k zip), probados con Arduino 0021  PololuArduinoLibraries-080929 (86k zip), probados con Arduino 0012  PololuArduinoLibraries-080826 (80k zip), probados con Arduino 0011 Instalación

Nota: Si actualmente tiene una versión más antigua de nuestras Pololu Arduino Bibliotecas, el primer paso debe ser el de eliminar todos los directorios Orangutan___ y Pololu___ desde el directorio de bibliotecas. Si no realiza este paso, la versión más reciente de las bibliotecas no puede ser compilado. Descomprimir el archivo y mover cada uno de los directorios Orangutan___ y Pololu___ dentro de la carpetalibpololu avr en la bibliotecas subdirectorio dentro de su cuaderno de dibujo Arduino. Usted puede ver su ubicación cuaderno de dibujo seleccionando Archivo> Preferencias en el entorno Arduino; si no hay ya una carpeta "bibliotecas" en ese lugar, usted debe crear usted mismo. La captura de pantalla muestra donde los directorios de librerías deben aparecer una vez que se extraen:

Después de instalar la biblioteca, reinicie el entorno de Arduino para que pueda encontrar las librerías y sus ejemplos. Ahora debería ser capaz de utilizar estas bibliotecas en sus bocetos. Por ejemplo, si desea utilizar la biblioteca OrangutanBuzzer, puede seleccionar Sketch> Importar biblioteca> OrangutanBuzzer desde tu Arduino

IDE, o simplemente puede escribir #include en la parte superior de su dibujo. Tenga en cuenta que puede que tenga que reiniciar el Arduino IDE antes de ver las nuevas bibliotecas. Si usted no necesita la funcionalidad de una biblioteca específica, debe dejarlo fuera de su dibujo (simplemente elimine el # include línea asociada a ella desde la parte superior de su esquema si ya has agregado él). Bibliotecas incluidas ocuparán espacio del programa, incluso si estos no se utilicen en su programa.

Ejemplos de uso La mayoría de las bibliotecas cuentan con al menos un ejemplo boceto que muestra cómo se puede utilizar la biblioteca. Para cargar un boceto ejemplo, abra el Arduino IDE y vaya a Archivo> Ejemplos> Orangutan____ .

La biblioteca Pololu3pi viene con varios bocetos de seguimiento de líneas y ejemplo laberinto de resolución detallados que se pueden cargar mediante Archivo> Ejemplos> Pololu3pi . 5.a OrangutanAnalog - Analog Biblioteca entrada Visión de conjunto Esta biblioteca proporciona un conjunto de métodos que se pueden utilizar para leer las entradas de tensión analógicas, así como las funciones específicamente diseñadas para leer el valor del potenciómetro de ajuste (en el robot 3pi , Orangután SV-xx8 , orangután LV-168 , y el bebé orangután B ), el nivel de voltaje de la batería en milivoltios (robot 3pi, SV-xx8), y el valor del sensor de temperatura en décimas de grado F o C (en el orangután sólo LV-168). Esta biblioteca le da más control de las funciones de entrada analógica Arduino existentes. No es necesario para inicializar el objeto OrangutanAnalog antes de su uso. Toda la inicialización se realiza automáticamente cuando sea necesario. Todos los métodos de esta clase son estáticos; nunca se debe tener más de una instancia de un objeto OrangutanAnalog en su dibujo. Métodos OrangutanAnalog La documentación completa de los métodos de esta biblioteca se puede encontrar en la sección 2 de la Pololu AVR Library Command Reference . Ejemplos de uso Esta biblioteca cuenta con dos bocetos de ejemplo que se pueden cargar por ir a Archivo> Ejemplos> OrangutanAnalog . Los ejemplos de bocetos que vienen con el OrangutanMotors biblioteca también hacen uso limitado de esta biblioteca. 1. OrangutanAnalogExample Muestra cómo puede utilizar los métodos en esta biblioteca para leer el voltaje analógico del potenciómetro de ajuste en el fondo, mientras que el resto de su código se ejecuta. Si el ADC es libre, el programa se inicia una

conversión en el potenciómetro de entrada analógica (canal 7), y luego se procede a ejecutar el resto del código en bucle (), mientras que las obras de hardware ADC. Sondeo del método isConverting () permite que el programa para determinar cuándo se completa la conversión y para actualizar su noción del valor trimpot en consecuencia. Se da retroalimentación a través del LED rojo de usuario, cuyo brillo se hace a escala con la posición trimpot. ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

#include #include / * * OrangutanAnalogExample para el 3pi, Orangután SV-xx8, * orangután LV-168, o Orangután del bebé B * * Este bosquejo utiliza la biblioteca OrangutanAnalog para leer la salida de tensión * del potenciómetro de ajuste en el fondo mientras que el resto del bucle principal ejecuta. * El LED destella de manera que su brillo aparece proporcional a la * trimpot

leds; analógica OrangutanAnalog; unsigned int suma; sin firmar int ; avg sin firmar Char muestras; void setup () { analog.setMode (MODE_8_BIT); suma = 0;

// Se ejecuta una vez, cuando se inicia el croquis // 8 bits analógica-digital conversiones

25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

muestras = 0; avg = 0; analog.startConversion (ajuste);

// inicia conversión inicial

} void loop () // ejecutar una y otra vez { si (! analog.isConverting ()) // si la conversión es hecho ... { suma + = analog.conversionResult (); // obtener resultar analog.startConversion (ajuste); // y comenzará la próxima conversión si (++ muestras == 20) { avg = suma / 20; // compute promedio de 20 muestras de resultado ADC muestras = 0; suma = 0; } }

}

// cuando avg == 0, el LED rojo está casi totalmente fuera // cuando avg == 255, el LED rojo está casi totalmente de brillo // debe escalar de forma lineal entre leds.red (LOW); // LED apagado rojos delayMicroseconds (256 - avg); leds.red (HIGH); // LED rojo en delayMicroseconds (avg + 1);

55

2. OrangutanAnalogExample2 Previsto para el uso en el orangután LV-168. Tenga en cuenta que se ejecutará en el robot 3pi y Orangután SV-xx8, pero la temperatura mostrada será incorrecta como la entrada analógica conectada a la sonda de temperatura en el orangután LV-168 está conectado a 2 / 3rds de la tensión de la batería en el 3pi y 1/3 de la tensión de la batería en el Orangután SV-xx8. Se muestra en la pantalla LCD de la salida potenciómetro de ajuste en milivoltios y la salida del sensor de temperatura en grados Fahrenheit. Si mantiene el dedo en la parte inferior del PCB del orangután de LV-168, cerca del centro de la tabla, debería ver la lectura de temperatura lentamente comenzará a subir. Tenga cuidado de no zap la tarjeta con descargas electrostáticas si intenta esto! ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

#include #include / * * OrangutanAnalogExample2: el orangután de LV-168 * * Este bosquejo utiliza la biblioteca OrangutanAnalog para leer la salida de voltaje * del potenciómetro (en milivoltios) y leer la Orangután de LV-168 * Sensor de temperatura en grados Farenheit. Estos valores se imprimen a * la pantalla LCD 10 veces por segundo. Este ejemplo es para uso con el * orangután LV-168, a pesar de todo, pero la porción de medición de temperatura * funcionará en el robot 3pi (en el 3pi, entrada analógica 6 se conecta a 2 / 3rds * de la tensión de la batería en lugar de una sensor de temperatura) y el * Orangután SV-xx8 (en el SV-xx8, entrada analógica 6 se conecta a 1/3 de * el voltaje de la batería). * * Usted debe ver el cambio de voltaje trimpot como usted le da vuelta, y usted puede * obtener la lectura de temperatura para aumentar poco a poco mediante la celebración de un dedo en el * inferior del PCB del orangután de LV-168, cerca del centro de la tabla. * Tenga cuidado de no zap la tarjeta con descargas electrostáticas si * ¡Inténtelo!

19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

* / OrangutanLCD lcd ; OrangutanAnalog analógica; void setup () { analog.setMode (MODE_10_BIT); }

// ejecuta una vez, cuando se inicia el croquis // 10 bits analógica-digital conversiones

void loop () // ejecutar una y otra vez { lcd .gotoXY (0,0); // cursor del LCD a la posición inicial (arriba a la izquierda) lcd.print (analog.toMillivolts (analog.readTrimpot ())); // salida trimpot en mV lcd.print ( "mV" ) ; // espacios añadidos son sobrescribir sobra caracteres lcd.gotoXY (0, 1);

// LCD cursor al inicio de la segunda línea

// obtener la temperatura en décimas de grado F unsigned int temp = analog.readTemperatureF (); lcd.print (temp / 10); // obtener el número total de grados lcd.print ( '.' ); // imprime el punto decimal lcd.print (temp - (temp / 10) * 10); // impresión el décimas dígitos lcd.print (( Char ) 223); // imprime un símbolo de grado lcd.print ( "F" ); // espacios añadidos son sobrescribir la izquierda sobre caracteres de retardo (100); }

// Espera a 100 ms ( reduce el parpadeo LCD)

49

5.b OrangutanBuzzer - de Alto Nivel Buzzer Control Library Visión de conjunto Esta biblioteca le permite controlar fácilmente el zumbador piezo en el robot 3pi , Orangután SV-xx8 y orangután LV-168 . Te da la opción de jugar ya sea una nota o una frecuencia para una duración especificada en un volumen determinado, o puede utilizar el juego () método para reproducir una melodía entera en el fondo. Control Zumbador se logra utilizando una de las salidas PWM Timer1, y la duración de tiempo se realiza mediante una alarma de desbordamiento Timer1, por lo que esta biblioteca estará en conflicto con otras bibliotecas que dependen de o reconfiguran Timer1 . Por ejemplo, la función de Arduino analogWrite () no funcionará en los pines de salida PWM Timer1 una vez que han comenzado a utilizar esta biblioteca en su dibujo. La ventaja de este enfoque es que se puede jugar notas sobre la bocina, dejando la CPU sobre todo libre para ejecutar el resto de tu código. Esto significa que puede tener un juego melodía de fondo mientras su 3pi orangután o hace su tarea principal. Usted puede sondear el isPlaying () método para determinar cuando el timbre se terminó de tocar. No es necesario para inicializar el objeto OrangutanBuzzer antes de su uso. Toda la inicialización se realiza automáticamente cuando sea necesario. Todos los métodos de esta clase son estáticos; nunca se debe tener más de una instancia de un objeto OrangutanBuzzer en su dibujo. Métodos OrangutanBuzzer La documentación completa de los métodos de esta biblioteca se puede encontrar en la sección 3 de la Pololu AVR Library Command Reference . Ejemplos de uso

Esta biblioteca cuenta con tres bocetos de ejemplo que se pueden cargar por ir a Archivo> Ejemplos> OrangutanBuzzer . 1. OrangutanBuzzerExample Demuestra una forma de utilizar de esta biblioteca PlayNote () método para tocar una melodía sencilla almacenada en la memoria RAM. Se debe comenzar inmediatamente a tocar la melodía, y se puede utilizar el botón de usuario superior para detener y reproducir la melodía. El ejemplo está estructurado de modo que usted puede añadir su propio código para loop () y la melodía todavía jugará normalmente en el fondo, asumiendo que su código se ejecuta con la suficiente rapidez para evitar la inserción de los retrasos entre las notas. Puede utilizar esta misma técnica para tocar melodías que se han almacenado en la EEPROM (la mega168 tiene suficiente espacio en la memoria EEPROM para almacenar 170 notas). ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

#include #include #include / * * OrangutanBuzzerExample: para el Orangután SV-xx8, orangután LV-168, * y 3pi robot * * En este ejemplo se utiliza la biblioteca OrangutanBuzzer para jugar una serie de notas sobre * el timbre. También utiliza la biblioteca OrangutanLCD para mostrar las notas que es * de juego, y utiliza la biblioteca OrangutanPushbuttons para permitir al usuario * STOP / RESET la melodía con la parte superior

MELODY_LENGTH 95

17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

// Estas matrices ocupan un total de 285 bytes de RAM (de un límite 1k) sin firmar carbón nota [MELODY_LENGTH] = { NOTE_E (5), SILENT_NOTE, NOTE_E (5), SILENT_NOTE, NOTE_E (5), SILENT_NOTE , NOTE_C (5), NOTE_E (5), NOTE_G (5), SILENT_NOTE, NOTE_G (4), SILENT_NOTE, NOTE_C (5), NOTE_G (4), SILENT_NOTE, NOTE_E (4), NOTE_A (4), NOTE_B (4 ), NOTE_B_FLAT (4), NOTE_A (4), NOTE_G (4), NOTE_E (5), NOTE_G (5), NOTE_A (5), NOTE_F (5), NOTE_G (5), SILENT_NOTE, NOTE_E (5), NOTE_C (5), NOTE_D (5), NOTE_B (4), NOTE_C (5), NOTE_G (4), SILENT_NOTE, NOTE_E (4), NOTE_A (4), NOTE_B (4), NOTE_B_FLAT (4), NOTE_A (4) , NOTE_G (4), NOTE_E (5), NOTE_G (5), NOTE_A (5), NOTE_F (5), NOTE_G (5), SILENT_NOTE, NOTE_E (5), NOTE_C (5), NOTE_D (5), NOTE_B ( 4), SILENT_NOTE, NOTE_G (5), NOTE_F_SHARP (5), NOTE_F (5), NOTE_D_SHARP (5), NOTE_E (5), SILENT_NOTE, NOTE_G_SHARP (4), NOTE_A (4), NOTE_C (5), SILENT_NOTE, NOTE_A (4), NOTE_C (5), NOTE_D (5), SILENT_NOTE, NOTE_G (5), NOTE_F_SHARP (5), NOTE_F (5), NOTE_D_SHARP (5), NOTE_E (5), SILENT_NOTE, NOTE_C (6), SILENT_NOTE, NOTE_C (6), SILENT_NOTE, NOTE_C (6), SILENT_NOTE, NOTE_G (5), NOTE_F_SHARP (5), NOTE_F (5), NOTE_D_SHARP (5), NOTE_E (5), SILENT_NOTE, NOTE_G_SHARP (4), NOTE_A (4) , NOTE_C (5), SILENT_NOTE, NOTE_A (4), NOTE_C (5), NOTE_D (5), SILENT_NOTE, NOTE_E_FLAT (5), SILENT_NOTE, NOTE_D (5), NOTE_C (5) }; unsigned int duración [MELODY_LENGTH] =

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

{ 100, 25, 125, 125, 125, 125, 125, 250, 250, 250, 250, 250, 375, 125, 250, 375, 250, 250, 125, 250, 167, 167, 167, 250, 125 , 125, 125, 250, 125, 125, 375, 375, 125, 250, 375, 250, 250, 125, 250, 167, 167, 167, 250, 125, 125, 125, 250, 125, 125, 375 , 250, 125, 125, 125, 250, 125, 125, 125, 125, 125, 125, 125, 125, 125, 250, 125, 125, 125, 250, 125, 125, 200, 50, 100, 25 , 500, 250, 125, 125, 125, 250, 125, 125, 125, 125, 125, 125, 125, 125, 125, 250, 250, 125, 375, 500

};

OrangutanLCD del LCD; OrangutanPushbuttons botones; zumbador OrangutanBuzzer ; sin firmar carbón currentIdx; void setup () { currentIdx = 0; lcd.print ( "Música!" ); }

// ejecutar una vez, cuando se inicia el croquis

void { // // si {

// ejecutar una y otra vez

loop ()

si no han terminado de jugar la canción y el zumbador está listo para la siguiente nota, reproducir la siguiente nota (currentIdx