Tutorial y ejercicios de arduino.

Anuncio
http://arduino.cc/es/Reference/HomePage
Tutorial de Arduino UNO:
Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un
entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de
programación Processing/Wiring que se basa en C/C++.y el cargador de arranque (boot loader) que
corre en la placa.
Al ser open-hardware, tanto su diseño como su distribución es libre. Es decir, puede utilizarse
libremente para el desarrollo de cualquier tipo de proyecto sin haber adquirido ninguna licencia.
Entradas y Salidas
Cada uno de los 14 pines digitales del Arduino puede ser usado como entrada o salida digital, usando
funciones pinMode(), digitalWrite() y digitalRead() . Operan a 5 voltios. Cada pin puede proporcionar o
recibir un máximo de 40 mA y tiene una resistencia interna “pull-up” (desconectada por defecto) de 2050 KOhms. Además, algunos pines tienen funciones especiales:
Pines serie Rx y Tx : Sirven para recibir transmitir datos (TTL), están conectados al chip FTDI, el cual
hace conversion de USB a serie- TTL.
Interruptores externos: 2 y 3. Estos pines pueden ser configurados para disparar un interruptor en un
valor bajo, un margen creciente o decreciente, o un cambio de valor. Con la función attachInterrupt().
PWM: 3, 5, 6, 9, 10 y 11. Proporcionan salida PWM de 8 bits con la función analogWrite() .
I ²C: 4 (SDA) y 5 (SCL): El software Arduino incluye una librería Wire para simplifcar el uso del bus I
²C. Son buses para comunicarse con otros dispositivos. Soportan comunicación con libreria Wire. Esta
libreria se utiliza para comunicarse con elementos TWI (Two Wire Interfaces) que tienen mas velocidad.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines soportan comunicación SPI, la cual,
aunque proporcionada por el hardware subyacente, no está actualmente incluida en el lengua je Arduino.
LED: 13. Hay un LED empotrado conectado al pin digital 13. Cuando el pin está a valor HIGH, el LED
está encendido, cuando el pin está a LOW, está apagado.
Tiene 6 entradas analógicas, cada una de las cuales proporciona 10 bits de resolución (por ejemplo
1024 valores diferentes). Por defecto miden 5 voltios desde tierra, aunque es posible cambiar el valor
más alto de su rango usando el pin ARF y algún código de bajo nivel. Además, algunos pines tienen
funcionalidad especializada:
AREF: Voltaje de referencia para las entradas analógicas. Usado con analogReference(). Es para
entradas analógicas. Nos permite dar a la placa un voltaje de referencia al suministrarle una alimentación
externa. si queremos medir el voltaje con un rango maximo de 3,3v, alimentariamos 3,3v en el pin
AREF con un regulador de voltaje IC. entonces el ADC representaria 3,22 mV.
http://littlebirdelectronics.com/products/voltage-regulator-33v.
Reset. Pone esta linea a LOW para resetear el microcontrolador. Típicamente usada para añadir un
botón de reset a dispositivos que bloquean a la placa principal.
Alimentación
Puede ser alimentado vía la conexión USB o con una fuente de alimentación externa. El origen de la
alimentación se selecciona automáticamente. Las fuentes de alimentación externas (no-USB) pueden ser
tanto un transformador o una batería. El transformador se puede conectar usando un conector jack
macho de 2.1mm con centro positivo en el conector hembra de la placa. Los cables de la batería puede
conectarse a los pines Gnd y Vin en los conectores de alimentación (POWER).
Los pines de alimentación son los siguientes:
-VIN. La entrada de voltaje a la placa Arduino cuando se esta usando una fuente externa de
alimentación (en opuesto a los 5 voltios de la conexión USB). Se puede proporcionar voltaje a través de
este pin.
-5V. La fuente de voltaje estabilizado usado para alimentar el microcontrolador y otros componentes de
la placa. Esta puede provenir de VIN a través de un regulador integrado en la placa, o proporcionada
directamente por el USB o otra fuente estabilizada de 5V.
-3V3. Una fuente de voltaje a 3.3 voltios generada en el chip FTDI integrado en la placa. La corriente
máxima soportada 50mA.
-GND. Pines de toma de tierra.
Arduno UNO
La Placa Arduno UNO tiene un micro controlador ATMEGA16U2-MU que utiliza como conversor
USB en vez del chip FTDI que utilizaban las antiguas placas. ademas tiene un procesador micro
controlador Atemega328, siendo mas rapida y optima que las antiguas Arduino Duemilanove y la
Diecimila con micro controlador Atemega168.
Instalación del Software Arduino
En Windows 7 instrucciones:
http://arduino.cc/en/Guide/Windows
http://www.dynamoelectronics.com/categoryblog/158-como-instalar-driver-arduino-uno.html
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=570
Drivers FTDI:
http://www.ftdichip.com/Drivers/VCP.htm
Entorno de Desarrollo
Arduino (Arduno Software)
para
El entorno de Desarrollo Arduino está constituido por un
editor de texto para escribir el código, un área de
mensajes, una consola de texto, una barra de
herramientas con botones para las funciones comunes, y
una serie de menús. Permite la conexión con el hardware
de Arduino para cargar los programas y comunicarse con
ellos.
Estructura de Programación
Por lo general un programa en Arduino constará de 3 partes:
1. Declaración de variables.
2. Función de inicialización. (setup)
3. Función de Loop. (Programa)
Declaración de Variables
Las variables son expresiones que almacenan valores, como las capturas o lecturas de los valores de
entrada de un pin analógico o sensor. Inicializas o das valor a una variable, haciéndola igual al valor que
quieres almacenar. Colocadas al principio del código pueden ser utilizadas en todo el programa.
Declaración de funciones
Las funciones te permiten crear piezas modulares de código, de forma que se puedan realizar ciertas
rutinas y retornar al área de código desde donde se realizó la llamada a la función. Colocadas al
principio del código pueden ser utilizadas en todo el programa.
Función de inicialización.
void setup() La función setup() es llamada justo en el momento en que el programa comienza. Se utiliza
para inicializar variables, definir los modos de entrada o salida de los pines, indicar librerías, etc.
Función de Loop. (Programa)
void loop() Después de crear la sección setup(), que inicializa y asigna los valores iniciales, la sección
loop() hace precisamente lo que su nombre indica en inglés(bucle), y se repite continuamente,
permitiendo que tu programa mute y responda. Se usa para controlar de forma activa la tarjeta Arduino.
El tiempo del bucle, varía según el número de instrucciones que contenga. Y se puede conocer y
controlar con las funciones de temporización (millis(), delay(), etc).
Arduino y Circuitos Basicos
1. Sensor de Luz con un LDR y Arduino
En arduino vamos a construir un Divisor de Voltaje para controlar el pulso de apagado y encendido de
un LED con un sensor LDR.
Un sensor de luz se compone de un LDR
como parte de un divisor de tensión resistivo.
Ejemplo:
Componentes:



1 LDR
1 Resistencia de 1kΩ
Un par de cables
Conexiones:
Programación:
En la variable val se almacenan los valores del LDR que al ser una “cantidad analógica” serán de 0 a
1023.
La Programación en Arduino es la siguiente:
//Analog Read_LDR_Print
int LightPin = 3; // selecciona el pin de entrada para el sensor de luz
int ledPin = 13; // selecciona el pin para el LED
int val = 0; // variable para almacenar el valor capturado desde el sensor
void setup() {
pinMode(ledPin, OUTPUT); // declara el ledPin en modo salida
Serial.begin(9600); // abre el puerto serie a 9600 bps
}
void loop() {
val = analogRead(LightPin);
// read the value from the sensor
digitalWrite(ledPin, HIGH); // enciende el LED
delay(val);
// detiene el programa por un tiempo
digitalWrite(ledPin, LOW);
// apaga el LED
delay(val);
// detiene el programa por un tiempo
int sensorValue = analogRead(A3); // lee el pin analogo 3
Serial.println(sensorValue); // imprime valores entre 0 y 1023 que recibe del pin
analogo 3
}
CÓPIA EL PROGRAMA EN EL ENTORNO ARDUINO, COMPÍLALO Y QUÉMALO (cárgalo en el
arduino)
Funciones de Programación:
Pines digitales:
pinMode(pin, mode): Configura el pin especificado para que se comporte como una entrada (input) o
una salida (output).
digitalWrite(pin, value): Asigna el valor de salida HIGH o LOW al pin especificado.
int digitalRead(pin): Lee o captura el valor de entrada del pin especificado, dará valores HIGH o
LOW. Devuelve un valor de tipo entero HIGH(1) o LOW (0).
Pines analógicos:
int analogRead(pin): Lee o captura el valor de entrada del especificado pin analógico, la tarjeta
Arduino realiza una conversión analógica a digital de 10 bits. Esto quiere decir que mapeará los
valores de voltaje de entrada, entre 0 y 5 voltios, a valores enteros comprendidos entre 0 y 1023. Esto
proporciona una resolución en la lectura de: 5 voltios / 1024 unidades, es decir, 0.0049 voltios (4.9
mV)por unidad. Los pines analógicos son solo de entrada por lo tanto no necesitan ser declarados como
modo INPUT (entrada) o OUTPUT (salida).
Serial: El arduino se comunica por serie vía USB con nuestro ordenador a través del chip FTDI. La
comunicación serial se puede utilizar para hacer un debugging (saber lo que está pasando en nuestro
programa) o para comunicarnos con otros programas. En nuestro taller lo utilizaremos para leer los
valores analógicos. Lo primero que hay que hacer es abrir el puerto y definir la velocidad con la que se
nos vamos a comunicar con en Arduino: void setup() { Serial.begin(9600); // Velocidad de la
transmisión y apertura del puerto } La velocidad para comunicarnos con el Monitor serial es 9600
Baudios. Con otros dispositivos puede ser otra, por ejemplo el protocolo MIDI sería a 31250 Baudios.
Intrucciones Seriales:
* Serial.begin(speed) //define el baudrate de la comunicación serie que se inicia
* Serial.print(data) // envía data como dato serial y aparece en el monitor serial.
* Serial.print("mensaje") // envía la palabra "mensaje" como dato serial y aparece en el monitor serial.
* Serial.println(data) // envía data como dato serial con un cambio de linea y retorno de carro y
aparece en el monitor serial.
EJERCICIO 1- Modifica el programa anterior para que, utilizando las instrucciones seriales, aparezca
en el monitor serial detrás de cada valor procedente de la LDR el mensaje "sobre el nivel de oscuridad
maximo que es 1023".
EJERCICIO 2- Vuelve a modificar el programa creando otra variable llamada tempo que almacene el
valor de tiempo de espera marcado en delay pero en segundos y que lo muestre en el monitor serial
indicando también las unidades.Ejemplo de mensaje: “Espera 0.884 segundos”
Para ello necesitas los siguientes datos:
 La variable tempo ha de funcionar en todo el programa y contendrá decimales, por lo tanto al
declararla hay que indicárselo colocando float delante de tempo.
 La función delay trabaja en milisegundos.
 Los operadores matemáticos para realizar operaciones son los ya conocidos: + , - , * , /
2. Multiled y potenciometro con Arduino
Observa el siguiente esquema de montaje de 10 leds conectados a la placa en las conexiones digitales.
Nosotros lo vamos a montar solo con 5 leds. Creamos un divisor de voltaje y controlamos el encendido
y apagado de los leds con una resistencia variable de 10k.
Circuito:
Programación:
//Mi multiled potenciometro:
// estas son costantes:
const int analogPin = A0;
// el pin al que el potenciometro esta conectado
const int ledCount = 5;
// el numero de leds en la barra
int ledPins[] = {2, 3, 4, 5, 6};
//describe el orden de los numeros de pines
donde conectamos los leds
void setup() {
// hace un conteo en bucle sobre todos los pines enviandolos todos a salida
for (int thisLed = 0; thisLed <= ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
// lee el potenciometro:
int sensorReading = analogRead(analogPin);
// mapea el resultado de rango desde 0 hasta el numero de leds:
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
// Hace un conteo en bucle sobre todos los leds:
for (int thisLed = 0; thisLed <= ledCount; thisLed++) {
// si la cantidad de elementos es menor que el nivel,
// encienda el pin para estos elementos:
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
// apague todos los pines mayores al ledlevel:
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
CÓPIA EL PROGRAMA EN EL ENTORNO ARDUINO, COMPÍLALO Y QUÉMALO (cárgalo en el
arduino)
Funciones de Programación:
Control del Flujo de Programa, Condicionales If
Cuando se quiere que el microcontrolador haga algo dependiendo de alguna condición se utilizara la
instrucción If. La instrucción If verifica la condición del enunciado escrito entre paréntesis y si esta
condición es verdadera hará las acciones que estén entre las claves.
If (expresión)
{ Hacer esto ; y esto también ; }
Donde la expresión puede ser evaluada por cualquiera de estas opciones:
a == b (a es igual a b)
a != b (a no es igual a b)
a < b (a es menor que b)
a > b (a es mayor que b)
a <= b (a es menor que o igual a b)
a >= b (a es mayor que o igual a b)
If-Else-If.
if (A < 500)
{ // Hacer esto }
else if (B >= 1000)
{ // Haz lo otro }
else { // Haz lo que te parezca }
Map: Re-mapea un número desde un rango hacia otro. Ésto significa que, un valor (value) con respecto
al rango fromLow-fromHight será mapeado al rango toLow-toHigh. Vamos, una especie de regla de tres.
Estructuras de repetición FOR
Las instrucción FOR ejecuta en un loop varias instrucciones de código, y lo hacen un determinado
número de veces, el número de veces que se realizan depende de el número de ciclos que determinemos
en el encabezado de la instrucción. En el siguiente ejemplo las instrucciones instrucc1, 2, 3,4,5 se
ejecutarán 10 veces, después de la décima seguirá el flujo del programa.
FOR (i=1; 1 <= 10; i ++)
{ instrucc 1 ; instrucc 2 ; instrucc 3 ; instrucc 4 ; instrucc 5 ; }
Declaración FOR: La declaración for es usada para repetir un bloque encerrado entre llaves. El bucle
for tiene tres partes o argumentos en su inicialización: for
(initialization;
//función(es); }
condition;
increment)
{
Realiza el control sobre una secuencia de repetición. Se
compone de tres partes: init (inicializado de la variable
local), test (condición) , y update (actualización del valor la
variable local), cada parte debe ser separada por punto y
coma “;”. El bucle continua hasta que la condición
establecida se cumple (es verdad) o no (falsa). Es útil
cuando se usa en combinación con vectores y operar sobre grupo de datos/pines.
EJERCICIO 3- Aprovechando lo aprendido en el ejemplo anterior, intenta completar el siguiente
programa para que consigamos el efecto de las luces de KITT el coche fantástico. Para ello utiliza el
montaje de leds anterior. El potenciómetro lo puedes quitar pues no lo necesitamos.
El coche fantastico
/* Coche fantástico 1*/
int pinArray[] = {2, 3, 4, 5, 6};
int count = 0;
int timer = 70;
void setup(){
for (count=0;count<=5;count++) {
pinMode(
);
}
}
void loop() {
for (count=0;
;
) {
digitalWrite(
);
delay(
);
digitalWrite(pinArray[count], LOW);
delay(
);
}
for (count=7;count>=0;
) {
);
);
);
);
}
}
SEÑAL TIPO PWM
La modulación por ancho de pulsos (también conocida como PWM, siglas en inglés de pulse-width
modulation) de una señal o fuente de energía es una técnica en la que se modifica el ciclo de trabajo de
una señal periódica.
PWM tiene diferentes usos:






Atenuación de un LED.
Disponer de una salida analógica; si la salida digital está filtrada, esto proveerá de un voltaje
entre el 0% y el 100%.
Generar señales de audio.
Proveer de un control de velocidad variable para motores.
Generar una señal modulada, por ejemplo para utilizar un LED infrarojo para control remoto.
Control paso a paso de Motores servo con una resolucion de 8 bits.
Si prendemos y apagamos la señal de alimentación de la carga (led o motor) lo suficientemente rápido
como para que el parpadeo no se note, podríamos “simular” la variación de luminosidad de un led o el
cambio en la velocidad del motor:
Esto funciona siempre y cuando no
hagamos este “switcheo” más lento de
30 veces por segundo. A partir de ahí
el “blink” del led se empezará a notar
y el ojo humano captará ese parpadeo.
En el caso de un motor, éste se
moverá en una forma pulsante. Lo que
se hace con PWM es variar
dinámicamente el “duty cycle” de
manera que el tiempo de alta
disminuya o aumente y en proporción
inversa, el de baja aumente o disminuya dependiendo de si queremos una led más atenuado o más
brillante, o un motor más lento o más rápido, respectivamente. Esto lo podemos ver en un ejemplo
práctico con Arduino, un led y una resistencia de 220 ohms.
3. Variar la intensidad de un LED usando un salida PWM
El circuito es el siguiente:
El LED está conectado al pin digital del Arduino con una
resistencia de 220 Ohms. La pata corta siempre a tierra y la positiva,
más larga del lado de la resistencia. La resistencia se coloca con el
fin de proteger el led. Enviamos valores entre 0 y 255. Arduino lee
estos Bytes y los representa como luminocidad del led a través de
pulsos PWM. Los valores irán gradualmente de 0 a 255, ya que
PWM es una “simulación” de analógico, en la que 0 = 0 Voltios y
255 = 5Voltios. Lo que hace el PWM es ir de estado alto (5 V) a
estado bajo (0 V.) en una determinada frecuencia, esa frecuencia
determina una media que el LED interpreta como analógica. Para
programar en arduino el control de dimmerizado del Led es
necesario utilizar un pin que genére PWM, en este ejemplo
utilizamos el pin 9.
Sketck Arduino:
// Dimmer auto LED
int contador = 0; // variable
int pin = 9; // pin 9 que puede generar PWM
void setup()
{ // No tenemos que declarar que es una salida analógica
}
void loop() { for(contador = 0 ; contador <= 255; contador ++) // ciclo para ir
subiendo el voltaje desde 0 a 5 voltios
{
analogWrite(pin, contador); // PWM
delay(15);
}
delay(600);
}
Funciones de Programación:
Analogwrite()
Escribe un valor analógico (PWM) en un pin. Puede ser usado para controlar la luminosidad de un LED
o la velocidad de un motor.
Después de llamar a la función analogWrite(), el pin generará una onda cuadrada estable con el ciclo de
trabajo especificado hasta que se vuelva a llamar a la función analogWrite() (o una llamada a las
funciones digitalRead() o digitalWrite() en el mismo pin). La frecuencia de la señal PWM sera de
aproximadamente 490 Hz.
EJERCICIO 4- Modifica el sketch anterior para que el led, además de aumentar su intensidad, la
disminuya de la misma forma, de tal manera que se encienda y se apague progresivamente de
forma cíclica.
4. Variar la intensidad de un LED desde el teclado
En el mismo montaje que el ejercicio anterior, también podemos controlar el PWM con un programa
(monitor serial) que se comunique con arduino a través del puerto serial del ordenador introduciendo
valores variables a través del teclado . El puerto serial se comunica con el sistema binario en palabras de
8 bits (bytes).
Sabiendo esto, para enviar información a través del puerto serial, debemos convertir nuestra información
ASCII a información binaria, y para eso utilizamos la función byte. Un byte representa valores desde 0
hasta 255. Por eso, los datos que enviamos desde un a través del serial, son valores comprendidos en
este rango. En este caso Programamos en Arduino:
Sketch de Arduino:
//Dimmer LED
const int ledPin = 9;
// El pin al que el LED está conectado
void setup()
{
// Inicializamos puerto serie a 9600 bps:
Serial.begin(9600);
// inicializamos el ledPin como salida:
pinMode(ledPin, OUTPUT);
}
void loop() {
byte brightness;
// chequeamos que los datos hayan sido enviados por el ordenador:
if (Serial.available()) {
// Lee el byte mas reciente (debe ser entre 0 y 255):
brightness = Serial.read();
// Determina la luminosidad del LED:
analogWrite(ledPin, brightness);
}
}
Funciones de programación
byte: Un byte almacena un número sin signo de 8-bit, desde 0 hasta 255.
Ejemplo:
byte b = B10010; // “B” es el formateador binario (B10010 = 18 decimal)
Serial:
read(): Lee los datos entrantes del puerto serie.
available(): Devuelve el número de bytes (caracteres) disponibles para ser leidos por el puerto serie. Se
refiere a datos ya recibidos y disponibles en el buffer de recepción del puerto (que tiene una capacidad
de 128 bytes).Materiales
EJERCICIO 5- Con la ayuda del condicional if-else-if visto anteriormente y la función
serial.print(), modifica el sketch anterior para que a cada valor que introduzcamos, aparezca en el
monitor serial un mensaje sobre la intensidad del brillo del led (BRILLO ALTO, BRILLO BAJO…)
Motor Servo
Un motor servo es un dispositivo actuador que tiene la capacidad de ubicarse en cualquier posición
dentro de su rango de operación, y de mantenerse estable en dicha posición.
Consta de un motor de corriente continua, con una caja reductora y un circuito de control, para su
posicionamiento.
Los servos estandar llevan 3 cables : tensión, tierra y control. Se mueven en función de pulsos que le
enviamos a traves del cable de control y estos pulsos que le enviamos son los que establecen la posición
del servo. El servo espera pulsos cada 20 milisegundos para tener una idea correcta de la posición que ha
de tener. En general los servos giran unos 180 grados, aunque hay algunos que giran más. Tienen una
amplitud de pulsos de entre 0.5 y 2.5 milisegundos para establecer la posición. Los servomotores hacen
uso de la modulación por ancho de pulsos (PWM) para controlar la dirección o posición de los motores
de corriente continua. La mayoría trabaja en la frecuencia de 50 hercios, así las señales PWM tendrán un
periodo de veinte milisegundos. La electrónica dentro del servomotor responderá al ancho de la señal
modulada. Si los circuitos dentro del servomotor reciben una señal de entre 0,5 a 1,4 milisegundos, este
se moverá en sentido horario; entre 1,6 a 2 milisegundos moverá el servomotor en sentido antihorario;
1,5 milisegundos representa un estado neutro para los servomotores estándares.
PPM
PPM o -Pulse Position Modulation es un código implementado en la lbrería de servos. Es como un
PWM pero con un duty cycle muy bajo, para servos utiliza 50Hz en vez de 490Hz. Esto permite utilizar
varios servos a la vez. Funciona de la siguiente manera: El tiempo de duración del pulso es: 2ms, en el
cual se determina la posición del servo. Esta secuencia es repetida 50 veces por segundo. El punto limite
de la izquierda 1 ms, punto medio 1.5 ms y punto limite de la derecha 2 ms. Servo #1: Far Left
Command: Time ON = 1 + 0.0 ms = 1.0 ms Servo #2: Neutral Command: Time ON = 1 + 0.5 ms = 1.5
ms Servo #3: Far Right Command: Time ON = 1 + 1.0 ms= 2.0 ms.
En los siguientes tutoriales podemos encontrar una alternativa sencilla de conectar el motor servo a la
placa Arduino:
http://arduino.cc/es/Tutorial/Sweep
http://blog.bricogeek.com/noticias/tutoriales/tutorial-control-de-servomotores/
En estos tutoriales vemos que el motor es conectado directamente a los 5 v y GND de la placa arduino.
Esto funciona muy bien con mini-motores o en el caso en que hagamos movimientos ocacionales y
sutiles. En el caso en que queramos hacer movimientos rapidos en bucle, es preferible conectar el motor
a una fuente eléctrica DC externa de 5v ya que el motor podria pedir mas corriente de la que la placa
Arduino le pueda dar. Los pines de salida de Arduino pueden entregar hasta 40 mA, sin embargo, los
motores pueden tener peaks de alrededor de 700mA.
Circuito:
Conexión Motor servo: Cable negro ó marron al (-) de la fuente eléctrica externa y a GND de Arduino.
Cable Rojo al (+) de la fuente eléctrica externa. Cable Blanco ó Amarillo al Pin PWM de Arduino.
5. Controlando la posición de un Motor Servo
En este ejemplo el motor Servo gira 180 grados
gracias al Sketch de Arduino. El motor es conectado
a una fuente de poder externa y la señal de control
es enviada por el pin digital 9.
sketch de Arduino:
#include <Servo.h>
Servo myservo; // creamos un objeto servo
para controlar nuestro servo
int pos = 0; // variable para almacenar la
posición del servo
void setup()
{
myservo.attach(9); // atribuye al pin 9 el objeto servo
}
void loop()
{
for(pos = 0; pos < 180; pos += 1) // avanza de 0 a 180 grados
{ // en saltos de un grado
myservo.write(pos); // mueve a la posición de la variable 'pos'
delay(20); // espera 20ms
}
for(pos = 180; pos>=1; pos-=1) // va de 180 a 0 grados
{
myservo.write(pos);
delay(20);
}
}
Funciones de Programación
Usos standard de la libreria Servo
attach(int): Convierte el pin en un servo driver. Este remplaza al pinMode.
detach(): Libera un pin del servo driving.
write(int): Da el angulo del servo en grados, 0 a 180.
read(): Devuelve el valor al ultimo write().
attached(): Devuelve 1 si el servo está conectado.
EJERCICIO 6- Modifica el sketch anterior para que me permita introducir el ángulo de giro
desde el teclado y que además aparezca en el monitor serial un mensaje con el ángulo en el que se
encuentra en ese momento el servo.
Descargar