dpto. tecnología - colegio colón aula de tecnologÍa€¦ · sensor termistor. practica 09. motor...
Post on 10-May-2020
15 Views
Preview:
TRANSCRIPT
Dpto. Tecnología - Colegio Colón
AULA DE TECNOLOGÍA
© Álvaro Salas
Alumno:
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 1
ÍNDICE DE PRÁCTICAS PRIMERA PARTE
Practica 01. Led intermitente.
Practica 01. Variante: Encender un LED cambiando su intensidad usando PWM.
Practica 02. Led con pulsador.
Practica 03. Secuencia básica de tres LEDS (Semáforo).
Practica 03. Variante: Coche fantástico
Practica 04. LED con Potenciómetro.
Practica 05. Cambiar la posición de un servo motor mediante el paquete Servo.h
Practica 05. Variante: Motor Servo con barrido de 0º a 180º
Practica 06. Buzzer o zumbadores.
Practica 06. Variante: Con tonos de frecuencia.
ÍNDICE DE PRÁCTICAS SEGUNDA PARTE - DOMÓTICA
Casa domótica utilizando los siguientes sensores:
Practica 07. Control LDR Fotorresistencias. Luces exteriores. Luces interiores
Practica 08. Sensor de temperatura y humedad DHT11. Sensor Termistor.
Practica 09. Motor corriente continua DC.
Practica 09B. Control del aire acondicionado por el sensor de temperatura.
Practica 10. Sensor de ultrasonidos. Uso de la barrera del garaje
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 2
Practica 01. Led intermitente
Se trata de realizar un ejercicio básico que consiste en encender y apagar un led que conectamos en el PIN 13 de Arduino que lo configuramos como salida. El tiempo de encendido y apagado es de 1 segundo.
Obsérvese que se ha colocado el diodo led en el PIN 13 con una resistencia entre 220 y 500 ohmios dependiendo del consumo de corriente del diodo. Utilizaremos la resistencia de 220 Ω o 330 Ω
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 3
Código de programación
int led = 13; // define la variable led y le asigna el valor 13
void setup() // configuración
pinMode(led, OUTPUT); // declaramos la patilla 13 como SALIDA
void loop() // bucle de funcionamiento
digitalWrite(led, HIGH); // activa el LED
delay(1000); // espera 1000 ms. = 1 sg. (tiempo encendido)
digitalWrite(led, LOW); // desactiva el LED
delay(1000); // espera 1000 ms. = 1 sg. (tiempo apagado)
Variante: Encender un LED y cambiarle su intensidad usando PWM
Encender un LED y variar su intensidad mediante señales de modulación de ancho de pulsos (Pulse-Width Modulation PWM).
Un dato importante es ¿Por qué vamos a elegir como entrada el pin 9 y no el pin 13?, se eligió el pin 9 ya que en la tarjeta Arduino al lado del pin hay un símbolo (~), los puertos o pines así indicados permiten enviar señal modulada, es decir, los pines que no tienen ese emblema solo mandan señales de 0 y 1; como la práctica se pretende que cambie la intensidad del LED y es necesario emular una señal analógica a partir de una señal digital (PWM), por ello se utiliza el pin 9.
const int led=9; // define la variable led y le asigna el valor 9
int i; // define la variable i como un entero
void setup()
pinMode(led,OUTPUT); // declaramos la patilla 9 como SALIDA
void loop()
for (i=0;i<=255; i++) // ciclo for ( de 0 a 255 e incremento de 1)
analogWrite(led, i); // enciende el led con intensidad i
delay(5);
for (i=255;i>=0; i--) // ciclo for ( de 255 a 0 y disminución de 1)
analogWrite(led, i); // enciende el led con intensidad i
delay(5);
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 4
Practica 02. Led con Pulsador
Se trata de realizar un ejercicio básico que consiste en encender y apagar un led que conectamos en el PIN 13 de Arduino que lo configuramos como salida a través de un Pulsador. Utilizaremos una resistencia de 330 Ω para el Led y otra de 10K para el pulsador.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 5
Código de programación
int led = 13; // pin para el led
int boton = 7; // pin para el botón (pulsador)
int valor; // variable para leer el pulsador
void setup()
pinMode(led, OUTPUT); // declara led como SALIDA
pinMode(boton, INPUT); // declara botón como ENTRADA
void loop()
valor = digitalRead(boton); // lee valor de entrada del pulsador
if (valor == HIGH) // detecta si el valor leído es “HIGH” (botón presionado)
digitalWrite(led, HIGH); // pone el LED en ON
else // en caso contrario
digitalWrite(led, LOW); // pone el LED en OFF
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 6
Practica 03. Secuencia básica de tres LEDS (Semáforo)
Se trata de realizar un ejercicio básico que consiste en encender y apagar cada uno de los leds conectados configurados como salida. Encendiendo y apagando 3 LEDs colocados en las salidas digitales 2, 4 y 6 (PIN2, PIN4 yPIN6) con una cadencia de 2000 ms encendido y 200 ms de apagado. Las variables asignadas a cada led son verde, amarillo, rojo. Utilizaremos tres resistencias de 220 Ω o 330 Ω.
Fíjate que ahora solamente utilizamos una conexión con la placa a GND o tierra.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 7
Código de programación
int verde=2; // define la variable verde y le asigna el valor 2
int amarillo=4; // define la variable verde y le asigna el valor 4
int rojo=6; // define la variable verde y le asigna el valor 6
void setup()
pinMode (verde,OUTPUT); // declara los pines 2,4,6 como salidas
pinMode (amarillo,OUTPUT);
pinMode (rojo,OUTPUT);
void loop()
digitalWrite(verde,HIGH); // enciende el led verde
delay(2000); // espera 2 segundos
digitalWrite(verde,LOW); // apaga el led verde
delay(200); // espera 0,2 segundos
digitalWrite(amarillo,HIGH);
delay(2000);
digitalWrite(amarillo,LOW);
delay(200);
digitalWrite(rojo,HIGH);
delay(2000);
digitalWrite(rojo,LOW);
delay(200);
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 8
Variante: Coche fantástico
Programa que enciende secuencialmente una barra de 6 leds imitando las luces que lucía el coche fantástico en su parrilla.
Los 6 leds deberán encenderse uno a uno de izquierda a derecha, y luego de derecha a izquierda, sucesivamente.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 9
Código de programación
// Coche fantástico
int pin2 = 2;
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int espera = 70; // El tiempo de espera
void setup()
pinMode(pin2, OUTPUT); // Configuración de los PIN como salida
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
pinMode(pin6, OUTPUT);
pinMode(pin7, OUTPUT);
void loop()
digitalWrite(pin2, HIGH); // Enciende y apaga secuencialmente los LEDs
delay(espera);
digitalWrite(pin2, LOW);
delay(espera);
digitalWrite(pin3, HIGH);
delay(espera);
digitalWrite(pin3, LOW);
delay(espera);
……… // hasta el pin 7
………
digitalWrite(pin7, HIGH);
delay(espera);
digitalWrite(pin7, LOW);
delay(espera);
digitalWrite(pin6, HIGH);
delay(espera);
digitalWrite(pin6, LOW);
delay(espera);
……… // hasta el pin 2
………
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 10
Código de programación (Variante con ciclo for)
// Variante coche fantástico
int tiempo=70;
int n;
void setup()
// Ciclo for para declarar los
for(n=2; n<=7; n++) // pines 2,3,4,5,6,7 como salidas
pinMode (n,OUTPUT);
void loop()
for(n=2; n<=7; n++) // Ciclo for para realizar la secuencia ascendente
// desde n=2 hasta n=7. El valor de n aumenta
digitalWrite(n,HIGH);
delay(tiempo);
digitalWrite(n,LOW);
delay(tiempo);
for(n=7; n>=2; n--) // Ciclo for para realizar la secuencia descendente
// desde n=7 hasta n=2. El valor de n disminuye
digitalWrite(n,HIGH);
delay(tiempo);
digitalWrite(n,LOW);
delay(tiempo);
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 11
Practica 04. LED con Potenciómetro
El potenciómetro es un dispositivo electromecánico que consta de una resistencia de valor fijo sobre la que se desplaza un contacto deslizante, el cursor, que la divide eléctricamente. Mostrar el valor de la tensión medida por el puerto serie (monitor).
Se conectan tres cables a la tarjeta Arduino. El primero va a tierra desde el terminal 1 del potenciómetro. El terminal 3 va a la salida de 5 voltios. El terminal 2 va desde la entrada analógica #0 hasta el terminal interno del potenciómetro. Utilizaremos una resistencia de 330 Ω
Girando el dial o ajustando el potenciómetro, cambiamos el valor de la resistencia variable. Esto produce oscilaciones dentro del rango de 5 y 0 voltios, que son capturados por la entrada analógica.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 12
A → Voltaje A → Voltaje
B → Salida B → Salida
C → Tierra C → Tierra
Código de programación
const int led =10; // led conectado al pin 3
const int pot =A0; // el pot (potenciómetro) está conectado al
pin analógico A0
int brillo; // variable para el brillo
void setup ()
pinMode (led, OUTPUT); // declaramos el led como salida
Serial.begin(9600); // inicializamos la comunicación serial
// escribimos por el monitor serie mensaje de inicio
Serial.println("Valores de potenciómetro");
void loop ()
brillo = analogRead (pot) / 4; // leemos el valor del potenciómetro divididos entre 4 ya que sólo se pueden usar valores entre 0 y 255 en analogWrite
analogWrite(led, brillo); // analogWrite recibe dos valores, el pin a usar y la intensidad del voltaje los valores de voltaje van de 0 a 255
Serial.println(brillo); // escribimos por el monitor serie mensaje de inicio
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 13
Practica 05. Cambiar la posición de un servo motor mediante el paquete Servo.h
Controlar la posición o velocidad de Servo Motor que gire en un sentido se detenga y luego gire al otro sentido mediante el paquete <Servo.h>
La aplicación principal que tiene esta práctica es controlar la velocidad o posición en el giro de algún objeto que esté acoplado al servomotor, como, por ejemplo, la dirección de las ruedas, el giro de un brazo robótico. Normalmente los servos están construidos para girar en un ángulo de 0 a 180 grados y en ambos sentidos. También hay los que tienen giro continuo, en los que se puede controlar la posición, pero si la velocidad.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 14
Código de programación
#include <Servo.h> // Incluimos la librería para poder controlar el servo
Servo servoMotor; // Declaramos la variable para controlar el servo
// y la llamamos servoMotor
void setup()
Serial.begin(9600); // Iniciamos el monitor serie para mostrar el resultado
servoMotor.attach(5); // Iniciamos el servo en el pin 5
void loop()
servoMotor.write(0); // Desplazamos a la posición 0º
delay(1000); // Esperamos 1 segundo
servoMotor.write(90); // Desplazamos a la posición 90º
delay(1000); // Esperamos 1 segundo
servoMotor.write(180); // Desplazamos a la posición 180º
delay(1000); // Esperamos 1 segundo
servoMotor.write(90); // Desplazamos a la posición 90º
delay(1000); // Esperamos 1 segundo
Variante: Motor Servo con barrido de 0º a 180º
#include <Servo.h> // Incluimos la librería para poder controlar el servo
Servo servoMotor; // Declaramos la variable para controlar el servo
void setup()
Serial.begin(9600); // Iniciamos el monitor serie para mostrar el resultado
servoMotor.attach(5); // Iniciamos el servo en el pin 5
void loop()
servoMotor.write(0); // Desplazamos a la posición 0º
for (int i=0; i<=179; i++) // for de 0 a 179 con incremento de 1
servoMotor.write(i); // desplazamos a la posición nº
delay(20);
for (int i=179; i>=0; i--) // for de 179 a 0 con disminución de 1
servoMotor.write(i); // Desplazamos a la posición nº
delay(20);
delay(1000); // Esperamos 1 segundo
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 15
Practica 06. Buzzer o zumbadores
Un buzzer o un altavoz son dispositivos que permiten convertir una señal eléctrica en una onda de sonido. Estos dispositivos no disponen de electrónica interna, por lo que tenemos que proporcionar una señal eléctrica para conseguir el sonido deseado.
Realiza varias prácticas con este tipo de dispositivos.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 16
Código de programación
int buzzer = 9; // declaramos buzzer con el valor 9
void setup()
pinMode(buzzer, OUTPUT); // declaramos buzzer como SALIDA
void loop()
analogWrite(buzzer, 20); // suena
delay(500); // pausa
analogWrite(buzzer, 0); // suena
delay(500); // pausa
Variante con tonos de frecuencia
int buzzer = 9; // declaramos buzzer con el valor 9
void setup()
pinMode(buzzer, OUTPUT); // declaramos buzzer como SALIDA
void loop()
tone(buzzer, 440); // tono de 440 hz
delay(500); // pausa
noTone(buzzer); // no suena
delay(500); // pausa
Práctica Opcional
Busca en internet alguna canción famosa o de alguna película que se encuentre implementado en Arduino y haz la práctica en tu circuito Arduino.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 17
Dpto. Tecnología
Colegio Colón
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 18
Practica 07. Control LDR Fotorresistencias
Una fotorresistencia o LDR (Light Depending Resistor, o resistencia dependiente de la luz) es un componente foto electrónico cuya resistencia varía en función de la luz que incide en él. Esta resistencia es muy baja, de unos pocos Ωs con una luz intensa incide en él y va creciendo fuertemente a medida que esa luz decrece.
Se les suele utilizar como sensores de luz, para arrancar luces automáticamente cuando la oscuridad sobrepasa un cierto umbral, o como detectores de movimiento próximo (Cuando algo se interpone).
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 19
Código de programación
// Sensor LDR. encendido de 2 luces //
int pinLed1 = 2; // Declaramos los pines
int pinLed2 = 3; // 2 Leds
int pinLDR = 0; // Pin LDR
int valorLDR = 0; // Valor que toma el LDR
void setup()
pinMode(pinLed1, OUTPUT); // Configuramos los led como salidas
pinMode(pinLed2, OUTPUT);
Serial.begin(9600); // Configurar el puerto serial
void loop()
digitalWrite(pinLed1, LOW); // Apagar todos los leds
digitalWrite(pinLed2, LOW);
valorLDR= analogRead(pinLDR); // Guardamos el valor leído del LDR
Serial.println(valorLDR); // Devolver el valor leído al monitor serial
if(valorLDR > 200) // si el valor del LDR es mayor de 200
digitalWrite(pinLed1, HIGH); // se enciende los 2 Leds
digitalWrite(pinLed2, HIGH);
delay(200);
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 20
Practica 08. Sensor de Temperatura y humedad DHT11
En este tutorial vamos a aprender cómo usar un Sensor de humedad y temperatura DHT11. Es lo suficientemente exacta para la mayoría de los proyectos que necesitan hacer un seguimiento de las lecturas de humedad y temperatura. Otra vez vamos a usar una biblioteca diseñada específicamente para estos sensores que harán que nuestro código corto y fácil de escribir.
Para Sistemas SMRAZA
Para sistemas ELEGOO
OUT
VCC
GND
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 21
Código de programación
#include <dht11.h>
int pin = 7; // Pin donde se realiza la lectura
dht11 sensor; // Variable sensor que recoge el valor de la temperatura y humedad
void setup()
Serial.begin(9600); // Comunicación a través del puerto serie
void loop()
sensor.read(pin); // Lectura de los valores del sensor en el pin 7
Serial.print("TEMP: ");
Serial.print(sensor.temperature); // Imprime la variable temperatura
Serial.print(" C");
Serial.print('\t'); // Realiza un salto de tabulación
Serial.print("HUM: ");
Serial.println(sensor.humidity); // Imprime la variable humedad
delay(1000);
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 22
Practica 08. Sensor de Temperatura (Termistor) MF52-103
Un termistor es un sensor de temperatura por resistencia. Su funcionamiento se basa en la variación de la resistividad que presenta un semiconductor con la temperatura.
Código de programación
int sensor;
void setup()
Serial.begin (9600); // Comunicación a través del puerto serie
void loop()
int sensor = analogRead(A1);
Serial.println(sensor);
delay(500);
R=10KΩ
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 23
Temperatura en Grados Centígrados
#include <math.h>
int termistor= A1;
void setup()
Serial.begin(9600);
void loop()
int lectura = analogRead(termistor);
double tempK = log (10000.0 * ((1024.0/lectura - 1)));
tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK);
float tempC = tempK - 273.15;
Serial.print("Temperatura: ");
Serial.print(tempC,1);
Serial.println();
delay(1000);
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 24
Practica 09. Control de un Motor de corriente continua DC
Accionar un Motor de Corriente Continua a través de pin digital o un pin PWM si queremos variar la velocidad del motor.
El motor de corriente continua (denominado también motor de corriente directa, motor CC o motor DC) es una máquina que convierte la energía eléctrica en mecánica, provocando un movimiento rotatorio, gracias a la acción que se genera internamente mediante el campo magnético.
Utilizaremos para el circuito una resistencia de 330 Ω.
El transistor es un dispositivo electrónico semiconductor utilizado para entregar una señal de salida en respuesta a una señal de entrada. Cumple funciones de amplificador, oscilador, conmutador o rectificador.
1 2 3 1 2 3
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 25
Esquema del circuito:
Int motor = 13 ;
void setup()
pinMode(motor, OUTPUT) ;
void loop()
digitalWrite (motor, HIGH);
delay(2000);
digitalWrite (motor, LOW);
delay(2000);
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 26
Practica 09 Bis. Control del aire acondicionado por el sensor de temperatura
Esta práctica simula el funcionamiento del aire acondicionado de una vivienda. Se basa de un termistor que lee la temperatura que hace en el ambiente. Si dicha temperatura supera los 28 grados de temperatura, los motores del aire acondicionado deberían empezar a funcionar. En el momento que la temperatura disminuye el aire acondicionado deja de funcionar.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 27
Código de programación
#include <math.h>
int termistor= A1;
void setup()
Serial.begin(9600);
void loop()
int lectura = analogRead(termistor);
double tempK = log (10000.0 * ((1024.0/lectura - 1)));
tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK);
float tempC = tempK - 273.15;
Serial.print("Temperatura: ");
Serial.print(tempC,1);
Serial.println();
delay(1000);
if (tempC > 28) // Si la temperatura tempC es > 28 grados
digitalWrite (motor, HIGH);
else
digitalWrite (motor, LOW);
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 28
Practica 10. Sensor de Ultrasonidos – Puerta de Garage
El sensor ultrasónico es ideal para todo tipo de proyectos que necesitan medidas de distancia.
El HC-SR04 es barato y fácil de usar, pudiéndose utiliza la biblioteca diseñada específicamente para estos sensores.
Esta práctica simula la aproximación de un coche a la barrera del aparcamiento de una vivienda. Una vez que nos acercamos al sensor de ultrasonidos a una distancia de 15 cm. La barrera se abrirá.
Colegio Colón Dpto. Tecnología Prácticas Arduino
Álvaro Salas Página 29
Código de programación
#include <Servo.h> // Incluimos la librería para poder controlar el servo
Servo servoMotor; // Declaramos la variable para controlar el servo
// y la llamamos servoMotor
int PinEcho = 11; // pin Echo
int PinTriger = 12; // pin Trigger
long duracion, distancia;
void setup()
Serial.begin (9600); // inicializa el puerto serial a 9600 baudios
servoMotor.attach(5); // Iniciamos el servo en el pin 5
pinMode(PinEcho, INPUT); // define el pin 11 como entrada (echo)
pinMode(PinTriger, OUTPUT); // define el pin 12 como salida (triger)
void loop()
digitalWrite(PinTriger, LOW); // Nos aseguramos de que el trigger está desactivado
delayMicroseconds(2); // Para estar seguros de que el trigger ya está LOW
digitalWrite(PinTriger, HIGH); // Activamos el pulso de salida
delayMicroseconds(10); // Esperamos 10µs. El pulso sigue active este tiempo
digitalWrite(PinTriger, LOW); // Cortamos el pulso y a esperar el echo
servoMotor.write(0); // Desplazamos a la posición 0º
duracion = pulseIn(PinEcho, HIGH);
distancia = (duracion / 2) / 29; // cálculo de distancia
if (distancia <= 15)
Serial.print(distancia); // envía el valor de la distancia por el puerto serial
Serial.println("cm");
servoMotor.write(0); // Desplazamos a la posición 90º
top related