tema 6: programaciÓn robÓtica.arduino

13
TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz 1 TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO 1. Control de un robot: Los sensores toman información del exterior y la mandan a la tarjeta controladora. La tarjeta la procesa y manda las ordenes de actuar a los actuadores. La tarjeta tiene que ser previamente programada mediante el ordenador. La tarjeta controladora o microcontrolador es un miniordenador o chip programable que lleva una memoria interna y en la que se pueden conectar los sensores y actuadores de nuestro robot. Este microcontrolador se programa mediante un ordenador a través de un software de programación. Nosotros utilizaremos la tarjeta controladora Arduino. Pines de alimentación: proporcionan la corriente continua necesaria para que funcionen los sensores y actuadores (motores,...) Pines de alimentación positiva a 3,3 o 5 V Pines de alimentación negativa o tierra o GND a 0 V. 14 pines para entradas/salidas digitales (pines del 0-13). Trabajan con valores binarios (1 ó 0): "1" corresponde a 5V (ENCENDIDO) y "0" corresponde a 0V (APAGADO). Se puede ampliar 6 pines digitales más utilizando los pines de las entradas analógicas como digitales. Entradas y Salidas Digitales PIN 0-13 Reset Conector USB PIN 13 LED Conector para alimentación externa 6-12 V Entradas Analógicas PIN 0-5 Microcontrolador PIN V IN PIN 5V PIN 3,3V PIN de tierra GND PINES de alimentación PIN de tierra GND Salidas Analógicas PIN 3,5,6,9,10,11 Regulador voltaje PIN Reset SENSORES: Sensor de luz,Sensor de Tª, Pulsador,... TARJETA CONTROLADORA ORDENADOR ACTUADORES: MOTOR, Lámpara, Zumbador,... CIRCUITOS ELECTRÓNICOS PROGRAMACIÓN

Upload: others

Post on 28-Nov-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

1

TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

1. Control de un robot:

Los sensores toman información del exterior y la mandan a la tarjeta controladora. La tarjeta la procesa y manda las ordenes de actuar a los actuadores. La tarjeta tiene que ser previamente programada mediante el ordenador.

La tarjeta controladora o microcontrolador es un miniordenador o chip programable que lleva una memoria interna y en la que se pueden conectar los sensores y actuadores de nuestro robot. Este microcontrolador se programa mediante un ordenador a través de un software de programación. Nosotros utilizaremos la tarjeta controladora Arduino.

Pines de alimentación: proporcionan la corriente continua necesaria para que funcionen los sensores y actuadores (motores,...)

Pines de alimentación positiva a 3,3 o 5 V Pines de alimentación negativa o tierra o GND a 0 V.

14 pines para entradas/salidas digitales (pines del 0-13). Trabajan con valores binarios (1 ó 0): "1" corresponde a 5V (ENCENDIDO) y "0" corresponde a 0V (APAGADO). Se puede ampliar 6 pines digitales más utilizando los pines de las entradas analógicas como digitales.

Entradas y Salidas Digitales PIN 0-13

Reset

Conector USB PIN 13 LED

Conector para alimentación

externa 6-12 V

Entradas Analógicas PIN 0-5

Microcontrolador

PIN V IN PIN 5V

PIN 3,3V

PIN de tierra GND

PINES de alimentación

PIN de tierra GND Salidas Analógicas PIN 3,5,6,9,10,11

Regulador voltaje

PIN Reset

SENSORES:

Sensor de luz,Sensor de Tª, Pulsador,...

TARJETA CONTROLADORA

ORDENADOR

ACTUADORES:

MOTOR, Lámpara, Zumbador,...

CIRCUITOS ELECTRÓNICOS

PROGRAMACIÓN

Page 2: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

2

6 pines para entradas analógicas (pines A0-A5). Los pines de entrada analógica reciben información en forma de voltaje con valores que pueden ir desde 0 V hasta 5 V. Utilizan un convertidor analógico/digital que traduce los 0-5 V a valores de 0-1023, (cuando se les da la orden analogRead).

6 pines para salidas analógicas (salidas PWM) Los pines 3, 5, 6, 9, 10 y 11 proporcionan una salida analógica y pueden tomar valores de 0 a 255 (cuando se les da la orden analogWrite). En otro caso serian entradas o salidas digitales.

Cada pin puede proporcionar o recibir como máximo una corriente 40 mA, por lo que no pueden mover un motor de CC. Será necesario amplificar la corriente mediante un transistor.

Es necesario conectar la placa mediante USB para cargar los programas. Después se puede desconectar el USB y alimentar la placa mediante una pila o fuente de alimentación.

2. Entorno software

Primero debemos seleccionar el tipo de dispositivo (Placa ó Board). Para ello pulsaremos en el menú "Herramientas" - "Placa" y seleccionaremos "Arduino Uno" (o el que hayamos adquirido). Seleccionaremos también el puerto serie asignado al controlador de Arduino (en nuestro caso COM3), para ello accederemos al menú "Herramientas" - "Puerto" - "COM3"

Verificar/Compilar. Chequea el código, identificando los errores. Cargar a la placa: Descarga el programa compilado desde el PC hasta la tarjeta arduino. Nuevo: crea un nuevo proyecto Abrir proyectos previamente guardados y también muestra los proyectos de ejemplos. Guarda el proyecto actual dentro de la carpeta Mis documentos /Arduino/sketchbook/.

Se puede guardarlo con un nombre distinto mediante el menú Archivo → Guardar como.

Realiza el monitoreo del puerto serial, abre una pantalla y muestra o visualiza

los datos enviados desde la tarjeta Arduino.

3. Estructura básica de un programa

La estructura de programación de Arduino divide el programa en tres partes: definición de variables. setup y loop.

Lo primero será crear y definir las variables mediante el comando int. Tenemos que dar nombre a la variable e indicar el lugar o pin donde van.

int ledverde = 7; (le damos el nombre ledverde y lo colocamos en el pin 7)

Se prefiere no utilizar los pines 0 y 1, para no equivocarnos con los valores lógicos binarios 0 y 1

La función void setup() constituye la preparación del programa y aquí se configuran los pines digitales como de SALIDA o ENTRADA. usando la función pinMode y mediante la instrucción OUTPUT o INPUT.

pinMode(ledverde, OUTPUT); (establece el led del pin7 como salida)

También se escriben aquí las funciones qué solo se ejecutan una vez.

Co

mp

ilar

Carg

ar

a la p

lac

a

Nu

evo

Ab

rir

Gu

ard

ar

Zona para escribir el código

Zona de mensajes del software. Errores y acciones

Ab

rir

el m

on

ito

r p

uert

o s

eri

e

Page 3: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

3

La función void loop() es la parte donde escribimos los programas que se ejecutan en forma de bucle (se ejecuta continuamente).

1ª 2ª

int ledverde = 12; //Pin donde va el led void setup()

pinMode(ledverde, OUTPUT);//Establece 'pin 12' como salida

void loop()

digitalWrite(ledverde, HIGH); // Enciende el led delay(1000); // Pausa un segundo

digitalWrite(ledverde, LOW); // Apaga el led delay(1000); // Pausa un segundo

Marcas de puntuación:

Las llaves . Se usan para indicar el principio y final de una función. Los paréntesis ( ) se utilizan para escribir funciones dentro de nuestros programas. Cada instrucción debe acabar con ;

Se pueden escribir comentarios para explicar un programa. Los comentarios no son obligatorios.

Los comentarios se indican con //. Para hacer comentarios que requieren más de una línea, se debe iniciar el comentario con /* y finalizarlo con */

4. Datos, variables y funciones

HIGH. Define el valor de entrada o salida del pin como ON (5 V o “1” en binario) LOW. Define el valor de entrada o salida del pin como OFF (0 V o “0” en binario)

Función pinMode(pin, mode) Función usada dentro de la función setup() para configurar como un pin debe comportarse, como entrada de información o salida de información a la placa Arduino (INPUT o OUTPUT).);

Ej. pinMode(ledPin, OUTPUT); // configura el ledPin como de salida.

INPUT. Se utiliza en la función pinMode() para definir la función del pin digital usado como entrada de datos (ej: pulsadores, sensores) OUTPUT. Se utiliza en la función pinMode() para definir la función del pin digital usado como salida de datos (ej: leds, motores)

Ej. pinMode(ledPin, OUTPUT);

Función digitalRead(pin) Lee el valor desde un pin digital específico. Devuelve un valor HIGH o LOW. El valor leído debemos almacenarlo en una variable

Ej. valorSensor = digitalRead(sensorPin);

Funcion digitalWrite(pin, valor) Introduce un valor (HIGH) o (LOW) en el pin digital especificado..

Ej. digitalWrite(ledPin, HIGH);

Función analogRead(pin) Lee el valor desde el pin analógico especificado . Esta función solo funciona en los pines analógicos (A0-A5). El valor resultante es un número entero de 0 a 1023. Los pines analógicos, a diferencia de los digitales no necesitan declararse previamente como INPUT o OUTPUT.

Ej. valorTemp = analogRead(sensorTempPin);

Función analogWrite(pin, valor) Escribe un valor analógico en un pin de salida marcado como PWM. Esta función está activa para los pines 3, 5, 6, 9, 10, 11.

Ej analogWrite(pin, 110); // escribe el valor '110' en el 'pin' analógico. Puede especificarse un valor de 0 - 255. Un valor 0 genera 0 V en el pin especificado y 255 genera 5 V.

Page 4: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

4

delay(ms). Realiza una pausa en el programa la cantidad de tiempo va en milisegundos

Ej delay(5000); // Pausa 5 segundos if (condición SI): Comprueba si una condición se cumple. La función se escribe entre llaves

if (valorSensor > 120) digitalWrite (ledPin, HIGH);

Puede utilizarse con uno o más operadores de comparación:

Para unir varias condiciones utilizamos los operadores lógicos Y / O

if…else: SI…..SINO

if (valorSensor > 120) digitalWrite (ledPin, HIGH); else digitalWrite (ledPin, LOW);

Podemos anidar varias sentencias if…else, siendo todas ellas, a su vez, mutuamente excluyentes:

if (valorSensor <= 0) delay(100); //se ejecuta con valores<0

else if (valorSensor < 100) delay(250); //se ejecuta con 0< valores>100

else if (valorSensor <= 200) delay(500); //se ejecuta con 100< valores>200

else delay(1000); //se ejecuta con valores>200

for (DURANTE): Repite un bloque encerrado entre llaves. permite indicar el número de iteraciones

o repeticiones Lleva 3 comandos: for ( declara la variable y la inicia ; condición ; incremento)

for (int i = 0; i <= 15; i ++) digitalWrite (ledPin, HIGH); //enciende y apaga el led 15 veces delay(100); digitalWrite (ledPin, LOW); delay(100);

Cada vez que se va a repetir el bucle, se revisa la condición, si es cierta, el bloque de funciones se ejecuta (en este caso, se suma), y la condición vuelve a ser comprobada de nuevo. Si la condición es falsa, el bucle termina

for (valorLDR = 0; valorLDR <= 255; valorLDR++) analogWrite (ledPin, valorLDR); delay(10); // Enciende el led de forma progresiva a intervalos

de 10 milisegundos

while (MIENTRAS): Se ejecuta continuamente hasta que la expresión de dentro del paréntesis

pasa a ser falsa. var = 0; while (var < 200) var++; // Hacer algo repetitivo 200 veces

do…while (HACER….MIENTRAS: Trabaja de la misma manera que el bucle while, con la excepción de que la condición se comprueba al final del bucle, por lo que este bucle se ejecuta

"siempre" al menos una vez. var = 0; do var++; while (var < 200)

break (ROMPER): Es usado para salir de los bucles do, for, o while, pasando por alto la condición normal del bucle.

for (i = 0; i < 10; i++) Console.WriteLine("valor de i: 0", i); if (i > 4) break;

== igual que != diferente que

< menor que > mayor que

<= menor o igual que >= mayor o igual que

&& Y lógico Ej: if (valorSensor1 > 0 && valorSensor2 < 5)

|| O lógico Ej :if ( valorSensor1 > 0 || valorSensor2 > 0)

Page 5: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

5

5. Ejercicios

Ejercicio 1.- Encender y apagar 7 leds de forma progresiva e intermitente (coche

fantástico):

Los leds deben encenderse de forma progresiva del 1 al 7 y apagarse del 7 al 1

CREACIÓN DE VARIABLES:

Una variable es un espacio en memoria o cajón contenedor donde almacenamos un valor. La variable tiene un nombre fijo y un valor que puede cambiar Los nombres de las variables:

no pueden contener espacios, por lo que las palabras deben separarse por guiones bajos o utilizando mayúsculas al inicio de cada palabra (valorSensor)

no pueden contener caracteres especiales, excepto guión bajo (_) pueden contener números, pero no empezar por ellos

//PROGRAMA PARA UN LED

int led1 = 2; // LED que se conecta al pin 2

void setup()

pinMode(led1, OUTPUT); // El p1n 7 será una salida digital

void loop()

digitalWrite(led1, HIGH); // Enciende el LED

delay(50); // Pausa de 50 milisegundos digitalWrite(led1, LOW); // Apaga el LED

delay(50); // Pausa de 50 milisegundos

El LED debe llevar una de protección de 100 a 220 Ω. A los actuadores la corriente + se la proporciona el pin de Arduino

ESQUEMA

int valorSensorLuz = 0; /* creamos una variable “valorSensorLuz”

para almacenar el valor lumínico del sensor y la iniciamos con valor cero */

Page 6: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

6

Ejercicio 2.- Encendido secuencial de un led y un motor durante 4 segundos al accionar

un pulsador:

Al presionar un pulsador encender un led 2 s y después encender el motor durante 2 segundos más. Luego se apaga el led y el motor.

- Crea las variables para los receptores led y motor; y para el sensor pulsador. Y define sus pines como de entrada y salida de información.

- Crea una variable llamada “valorPulsador” e inicializala en cero. La variable podrá valer 0 y 1. - Después define valorPulsador como la lectura digital del pulsador - Utiliza el comando condicional IF, para indicar la condición de funcionamiento

ITERACCIONES FOR:

Una iteracción es una repetición de algo un número de veces. Esto se puede conseguir con la instrucción

FOR, junto con una variable.

El bucle FOR es un bucle contador, utilizado para repetir un proceso un número de veces.

FOR necesita 3 parámetros separados por un carácter de punto y coma.

- Una variable que irá tomando valores según una cierta regla, y a la que asignamos un valor

inicial. En el ejemplo: i = 0 .

- Una condición, que indica hasta cuándo debe continuar el ciclo (número de repeticiones). En el

ejemplo mientras la i sea menor que 16, o sea hasta el 15: i <=15

- Un incremento o como cambia la variable en cada iteración. En nuestro caso i++ (i= i+1, que

incremente en uno la variable i, al final de cada iteración).

valorPulsador = digitalRead (pulsador);

if (valorPulsador == HIGH) // Si se activa el pulsador

digitalWrite (led, HIGH); // enciende el led delay(2000); // Pausa de 2 segundos

digitalWrite (led, LOW); // Apaga el led

ESQUEMA

El pulsador debe llevar una resistencia pull-down de 10 K antes de llegar a negativo o GND, para evitar cortocircuitos

Los pines de arduino no proporcionan suficiente corriente para mover el motor, por lo que es necesario amplificar esta corriente con un transistor (protegeremos la base con una resistencia de 1K)

Minipulsador CI 4 patas

La conexión del pulsador debe hacerse conectando 2 patas en diagonal o 2 patas en horizontal

Page 7: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

7

Ejercicio 3.- LUCES COCHE FANTÁSTICO: encendido y apagado secuencial y progresivo

de 8 leds:

- Se deben encender de forma progresiva 8 leds, con un tiempo de encendido de 100 ms. Luego deben apagarse también de forma progresiva.

- Crea una variable llamada “ledn” e inicializala en dos. - Utiliza un bucle FOR para declarar los 8 leds como pines OUTPUT, en el void setup - Utiliza un bucle FOR para el encendido y otro bucle FOR para el apagado, en el void loop

SALIDAS ANALÓGICAS

Los pines de salida analógica son los pines 3, 5, 6, 9, 10 y 11 y pueden tomar valores de 0 a 255.

Ejercicio 4.- ENCENDIDO Y APAGADO PROGRESIVO DE UN LED al detectar una presencia:

- Para que el led se encienda desde el valor 0 hasta el 255 utiliza un bucle FOR y espera 100 ms en cada valor.

- Al llegar al valor máximo espera 2 s y apaga el led de forma progresiva.

int i=6; //declara e inicia la variable en 6

for (i=6; i<14; i++)

digitalWrite (i, HIGH); // enciende el led del pin 6 indicado

delay(2000); // Pausa de 2 segundos

digitalWrite (i, LOW); // Apaga el led

// Se repite el proceso para los pines del 6 al 13

int led=6; //declara e inicia el led en pin 6

for (int i=0; i<=15; i++)

digitalWrite (led, HIGH); // enciende el led del pin indicado

delay(200); // Pausa de 2 segundos digitalWrite (led, LOW); // Apaga el led

delay(200); // Pausa de 2 segundos

// Se repite el proceso 16 veces, el led parpadea 16 veces

Sensor PIR de infrarrojos

El sensor formado por led IR y

fototransistor deben llevar resistencias de protección de 100Ω y 10 K respectivamente antes de llegar a GND.

El sensor de IR lleva incorporadas las resistencias

Vcc

OUT GND

Vcc

GND GND V

cc

Page 8: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

8

Ejercicio 5.- ENCENDIDO Y APAGADO DE UN LED al pulsar un único pulsador:

- Crea 2 variables (valorPulsador y valorLed), donde almacenar la información de la situación actual del pulsador y la información del valor del led

- Inicia el valor del pulsador en 0 y el valor del led en 0. - Establece el pulsador como INPUT y el led como OUTPUT y como INPUT - Al comenzar el programa, indica que el valorPulsador sea la lectura digital del pulsador y que

el valorLed sea la lectura digital del led.

- Utiliza el condicional IF….ELSE para que se encienda o apague el led cada vez que pulsemos el pulsador, según la comparación del valor del pulsador y del valor del led

Ejercicio 6.- ENCENDIDO de leds al pulsar un número de veces un pulsador:

- Queremos que al pulsar un pulsador una vez se encienda el led rojo, al segundo pulso se encienda solo el led amarillo, con el tercer pulso se encienda solo el led verde y con el cuarto pulso no luzca ninguno.

- Crea una variable contador para almacenar el valor del número de pulsos

Ejercicio 7.- ENCENDIDO del número de un DISPLAY DE 7 segmentos al pulsar un número

de veces un pulsador:

- Queremos que al pulsar un pulsador un número de veces, aparezca ese número en el display.

- DISPLAY CÁTODO COMÚN (-)

- Debemos crear las funciones que corresponden a cada número

void cero()

digitalWrite (pin_a, HIGH);

ESQUEMA

5

COM

f

g

e

d

a

b

c

punto

COM

COM

f

g

e

d

a

b

c

punto

COM

a b c pto COM

COM f g e d 220 Ω

Solo hay que conectar una patilla común

Page 9: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

9

digitalWrite (pin_b, HIGH);

digitalWrite (pin_c, HIGH); digitalWrite (pin_d, HIGH);

digitalWrite (pin_e, HIGH); digitalWrite (pin_f, HIGH);

digitalWrite (pin_g, LOW);

Cuando queramos llamar a esa función colocaremos la instrucción: cero();

- Debemos crear una variable valorPulsador que lea el valor digital del pulsador y otra variable contador que sume el valor presionado al pulsador

ENTRADAS ANALÓGICAS

Monitor serie:

Podemos enviar y recibir información de Arduino mediante el Monitor Serie. Por ejemplo los valores que

están tomando los sensores de luz, temperatura, etc.

Para ello es necesario iniciar el monitor serie en la función void setup y después daremos las instrucciones

en la función void loop

Entradas analógicas

Los pines para entradas analógicas son los pines pines A0-A5. Estos pines reciben información en forma de voltaje con valores que pueden ir desde 0 V hasta 5 V. Utilizan un convertidor analógico/digital que traduce los 0-5 V a valores de 0-1023, (cuando se les da la orden analogRead).

Sensor de luz LDR

.

void setup()

Serial.begin (9600); //inicia comunicación por el puerto serial

void loop()

valorLDR = analogRead(sensorLDR);

Serial.println (valorLDR); //escribe la luz medida por el sensor en el monitor serie

delay (500); //tiempo para la siguiente medición

El sensor LDR debe llevar resistencia de protección de 1KΩ antes de llegar a GND.

Page 10: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

10

Sensor de llama

Es un sensor infrarrojo de llamas. Funcionan detectando una longitud de onda especifica (de unos 760 nm) que son características de las llamas, aunque son relativamente fáciles de engañar y pueden dar falsos positivos con ciertas luces.

Sensor de sonido:

Es un sensor analógico o digital que nos permite controlar circuitos a partir de sonido a través de las entradas analógicas de nuestro Arduino (pines A0-A5). O de las entradas digitales .

A0: irá a entrada de control analógico A0-A5 G : irá a GND + : irá a tensión de 5 V D0: irá a entrada de control digital

Utilizaremos control analógico o control digital, según queramos

El sensor tiene 2 leds y lleva un potenciómetro para controlar el nivel de entrada alto o bajo. Los 2 encendidos es HIGH y sólo uno encendido es LOW. Hay que ajustar el potenciómetro y colocarlo en el momento que cambia de HIGH a LOW

El sensor hay que regularlo en LOW y luego leer el valor de sonido que marca, para programar. El valor para programar el cambio de estado es muy similar (poca variación de número)

Si no sois capaces de encender el LED de una palmada, probad a pegar un silbido, un soplido o a hablar cerca del micrófono.

Sensor de temperatura LM35 o NTC 500 Ω Son sensores analógicos que nos permiten detectar diferentes temperaturas a través de las entradas analógicas de nuestro Arduino (pines A0-A5).

Sensor de agua: Es un sensor analógico que nos permite realizar medidas de niveles de agua de forma bastante precisa a través de las entradas analógicas de nuestro Arduino (pines A0-A5). El pin de control es una señal analógica, proporcional a la cantidad de agua que detecta. Los otros 2 pines irán a GND y a tensión de 5 V. PRECAUCIÓNES:

se recomiendan usar cables largos, para no acercar el agua a la placa arduino.

Si se inserta el sensor en agua, para usarlo como medidor de nivel, hay que tener mucho cuidado de no sumergir los pines de conexión a Arduino, o se provocará un corto

El sensor de llama debe llevar resistencia de protección de

440 KΩ antes de llegar a GND.

Vcc OUT GND

El sensor LM35 no necesita resistencia de protección. Lleva 3 patillas: Vcc

se conecta a 5V,

GND se conecta a tierra y OUT es la patilla que irá al pin de arduino que transmita la señal.

El sensor ntc debe llevar resistencia de protección de 1KΩ antes de llegar a GND.

Page 11: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

11

Ejercicio 8.- ENCENDIDO de luces y ALARMA:

- Queremos Encender 3 leds diferentes (verde, rojo y amarillo) según las condiciones de luz

(oscuridad, luz natural y linterna) - Además, sonara una alarma ante el riesgo de incendio y/o riesgo de inundación

Servomotor

Los servomotores son motores de CC que pueden girar entre 0 y 180º normalmente. Llevan tres cables:

- alimentación a 5V (rojo),

- GND o negativo (que puede ser negro o marrón)

- Señal (que puede ser blanco o naranja o amarillo) y se conecta a un pin digital de Arduino.

Cuando programamos con arduino debemos incluir una librería llamada “servo.h”. Y creamos un objeto “Servo” con el nombre que queramos dar a nuestro motor.

Servomotor continuo

Los servomotores continuos son motores de CC que giran continuamente y a los que podemos regular la velocidad. Llevan tres cables: .

- alimentación a 5V (rojo),

- GND o negativo (que puede ser negro o marrón)

- Señal (que puede ser blanco o naranja o amarillo) y se conecta a un pin digital de Arduino.

El ángulo de giro que programamos nos define el sentido de giro y la velocidad (0 - 180º ).

0 90 180

Giro en un sentido a máxima velocidad

Motor parado (Hay casos en que hay que ajustar este valor, ej.100)

Giro en el otro sentido a máxima velocidad

0-89 91-180

Giro en un sentido disminuyendo la velocidad al aumentar el número

Giro en el otro sentido aumentando la velocidad al aumentar el número

Cuando programamos con arduino debemos incluir una librería llamada “servo.h”. Y creamos un objeto “Servo” con el nombre que queramos dar a nuestro motor.

#include <Servo.h> //incluye una libreria para mover servos

Servo motor1; //crea un objeto Servo llamado motor1

void setup() motor1.attach(8); //coloca el servo en el pin 8

void loop() motor1.write(180); //el motor gira 180º en un sentido

delay(2000);

motor1.write(0); //el motor gira -180º y se coloca en la posición inicial

delay(4000);

#include <Servo.h> //incluye una libreria para mover servos

Servo motor1; //crea un objeto Servo llamado motor1

Page 12: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

12

Cambio de giro del motor mediante chip L293D (puente de diodos)

Es un chip que podemos usar para gobernar uno o dos motores CC (cambio de giro y control de velocidad).

Pin 16: Vss = 5V con los que alimentamos el chip

Pin 8: Vs = tensión para alimentar el motor

Pines del 1 al 7: control del motor 1

Pin 1: activa el uso del motor 1 (con un valor HIGH el motor

puede girar dependiendo del pin 2 y 7, con un valor LOW el

motor se para independientemente del resto de pines. Se

suele conectar a positivo

Pines 2 y 7: pines de control del giro del motor 1, van

conectados a Arduino

Pines 3 y 6: son los pines que se conectan al motor 1

Pines 4 y 5: van a GND

Pines del 9 al 15: control del motor 2

void setup()

motor1.attach(8); //coloca el servo en el pin 8

void loop()

motor1.write(180); //el motor gira a velocidad máx en un sentido 5s delay(5000);

motor1.write(100); //el motor para 2s delay(2000);

motor1.write(0); //el motor gira a velocidad máx en el otro sentido 5s delay(5000);

motor1.write(100); //el motor para 2s delay(2000);

TABLA DE CONEXIÓN DE PINES

PIN L293D PIN ARDUINO DESCRIPCIÓN

1 + 5v Enable

2 2 Input 1

3 Motor1 +

4,5 GND GND

6 Motor1 –

7 7 Input 2

8 Vin Alimentación

del motor

TABLA DE CONTROL DEL MOTOR

ENABLE: Pin 1 Pin 2 Pin 7 MOTOR

LOW - - STOP

HIGH HIGH LOW GIRO HORARIO

HIGH LOW HIGH GIRO ANTIHORARIO

HIGH HIGH HIGH STOP

HIGH LOW LOW STOP

Page 13: TEMA 6: PROGRAMACIÓN ROBÓTICA.ARDUINO

TECNOLOGÍA INDUSTRIAL I1. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz

13

APERTURA Y CIERRE PUERTA CON DETECTOR IR

int irPin = 4;

int MDPin = 2;

int MIPin = 7;

int irValue =0;

void setup() pinMode(MDPin, OUTPUT); pinMode(MIPin, OUTPUT); pinMode (irPin, INPUT);

void loop() irValue= digitalRead (irPin); if (irValue == HIGH) digitalWrite(MDPin, HIGH); digitalWrite(MIPin, LOW); delay(5000); digitalWrite(MDPin, LOW); digitalWrite(MIPin, HIGH); delay(5000); else digitalWrite(MDPin, LOW); digitalWrite(MIPin, LOW);