Controlar la luz (u otros inputs) con pulsos modulados PWM (Pulse Width Modulation): reguladores de intensidad.

Documentos relacionados
La plataforma Arduino

CONTROL DE UN SERVOMOTOR

Lectura de pines analógicos

Empieza con // y termina con la siguiente línea de código. Son ignorados por el programa y no ocupan espacio en memoria.

Bach. Pablo Sanabria Campos. Programa de Tecnologías Educativas Avanzadas

CURSO: ROBÓTICA. CONECTANDO CON EL MUNDO FÍSICO. ÍÑIGO MARTÍN MIMBELA.

Entradas Analógicas.

PRACTICAS CON ARDUINO

LED INTERMITENTE CIRCUITO ELÉCTRICO MATERIALES PROGRAMA LED DOS CONECTORES CABLE USB ROBÓTICA. Puerto 8 ( salida al led rojo ) ARDUINO UNO 220 W GND

2. Programación en Arduino

Programación de Arduino

4 Dispositivos de E/S

Práctica 4. Entradas/Salidas Analógicas con Arduino

Clase 2: Programación

PROPUESTA ARDUINO por José Manuel Aranga Salazar

Conceptos básicos de Arduino:

Programación de dispositivos Arduino Asignatura Sistemas Digitales!

Clase 3: Sensores I. Conviértete en un Joven Inventor PENTA UC

Puente H: cambio de giro y velocidad de motores DC.

Taller Robótica Libre con Arduino Desarrollo del pensamiento computacional a través de la programación y la robótica. UIMP. Julio de 2017.

Primera práctica (blink): Hace parpadear un leda intervalos definidos.

Control por Computador. Manual de arduino. Jorge Pomares Baeza. Grupo de Innovación Educativa en Automática 2009 GITE IEA

Qué es y por qué usarlo

AR 3 T. Tutorial 3: Voltajes analógicos y PMW, Potenciómetro + LED. Objetivo General.

Introducción a Arduino

Control de LCD y sensor de temperatura

EJERCICIOS CON ARDUINO LED ENCENDIDO. Se conecta el Led al pin 52 y a alimentación. Compilar Se enciende el LED.

INTERRUPTOR CREPUSCULAR CON LDR Y ARDUINO OBJETIVOS MATERIAL NECESARIO

5.- ENTRADAS/SALIDAS DIGITALES

Encender un LED utilizando un pulsador (Ref libro 1 pg 82 pero como y pg 132 como 1.2.3)

CONCEPTOS BÁSICOS DE MICRO CONTROLADORES: CONOCIENDO A ARDUINO

EL MICROCONTROLADOR ARDUINO

ARDUINO El proyecto Arduino: Recordando - Pines de entrada - Pines de salida - Microcontrolador - Conexión USB - IDE de arduino

Curso Robótica Práctica

Juguete para niños/bebés sordos.

Ardunio. Test Placa. LunikSoft. Fco. Javier Andrade.

Tutorial Arduino con Fotoresistencia LDR

Instalación y entorno de programación

Programa del curso de Arduino

PROYECTO DE ELECTRÓNICA

Tutorial para principiantes: Cómo aprender a programar un Dreamster v1.0?

QUÉ ES EL OPEN SOURCE?

Instituto Tecnológico de Colima

Domótica con Arduino, WiFi y Android

Detección de luz con sensor LDR

Crear una app con MIT inventor

Clase 4: Motores. Conviértete en un Joven Inventor PENTA UC

Programación con Arduino. Jornadas de Robótica 2016 Curso de Impresión 3D y Hardware libre

CURSO: ROBÓTICA. CONECTANDO CON EL MUNDO FÍSICO

Introducción. Que es Arduino? 1. Por qué Arduino? 2. Asequible

CURSO: ROBÓTICA. CONECTANDO CON EL MUNDO FÍSICO

1. Escribir un dato digital del WinCC al Arduino

Especificaciones técnicas. Power, Inputs and Outputs. Operating Voltage Input Voltage (recommended) Input Voltage (limits) Analog Input Pins

Contenido Unidad de Robótica

Ejercicio 7-1 Prueba de Diodos y Determinación de su Polaridad

PRÁCTICAS CON ARDUINO UNO

CONSTRUCCION DE TIMER PARA VUELO CIRCULAR CON MOTOR ELECTRICO

PROYECTO ÁRBOLES. Centro: IES Vicente Aleixandre. Curso: 4º ESO. Grupo: Grupo 6.

Especificaciones técnicas de los prototipos:

Práctica de manejo de motores CC con arduino. Antonio Martínez

CARGANDO EL PRIMER PROGRAMA EN ARDUINO OBJETIVOS MATERIAL NECESARIO

ENTRADAS Y SALIDAS DIGITALES USO DE VARIABLES Y TEMPORIZADORES

Arduino. OPEN HARDWARE - David Cuartielles, Máximo Banti.

ABIERTO- ELECTRoNICA- PROTOTIPO- PLATAFORMA- QUE ES UN ARDUINO? ES UNA PLATAFORMA DE PROTOTIPADO ELECTRoNICA DE DISEnO ABIERTO. QUE SIGNIFICA ESTO?

Conviértete en un Joven Inventor PENTA UC TAV Humano-Máquina

El Microcontrolador Arduino

Clase 6: Sensores II. Conviértete en un Joven Inventor PENTA UC

RMS1-RM Manual del usuario

Taller de electrónica para usos creativos. Practicando con Arduino

Curso Arduino avanzado

Introducción a Arduino. Electrónica para todos.

DFRduino Romeo, todo en un controlador (RoMeo V1.0) Por favor, lea atentamente este manual antes de encender el dispositivo.

Sesión 3 (Práctica) Sensores Actuadores

Control programado con ARDUINO TECNOLOGÍA

Dynabot II es un kit diseñado para el aprendizaje de robótica móvil basado en arduino. Para qué sirve?

1. Qué es Arduino? 2. Modelos de Arduino 3. Primer programa: parpadeo de un LED

Rastreador de Luz para Panel Solar y Sistema de Carga para Dispositivos USB

Programa la luz inteligente de tu bici

CONTROL AUTOMÁTICO CON ARDUINO

MIDIENDO DISTANCIAS CON UN SENSOR DE ULTRASONIDOS

ARPA LÁSER GRUPO 7 MIEMBROS: Paula Forero Pastor José Ignacio Pérez López

GUÍA DEL CURSO DE INICIACIÓN A ARDUINO KIT DE ARDUINO DE LA XUNTA DE GALICIA

TuBot 2014 GUIA DE MONTAJE Y PROGRAMACIÓN SENSORES. Dpto. de Electrónica - Universidad de Alcalá TuBot

EJERCICIOS DE ARDUINO RESUELTOS

EJERCICIOS DE ARDUINO RESUELTOS

APRENDE ARDUINO FACILMENTE CON MIRPAS.COM.

Domótica con Arduino, Bluetooth y Android

5. CONSTRUCCIÓN a) Montar la plataforma móvil según sus instrucciones. b) Soldar un trozo de 20 cm de hilo rígido a los terminales de las reductoras.

MEDIDOR DE TEMPERATURA

Arduino, aplicaciones actuales y potenciales, para contrarrestar los efectos del cambio climático en la agricultura

Taller de Hardware Libre con Arduino

Actuadores eléctricos - Motores

1.- INTRODUCCIÓN EL HARDWARE DE LA PLACA ARDUINO Alimentación Entradas y Salidas Comunicaciones...

SISTEMAS DE CONTROL Microcontroladores con Crocodile technology 3D

Movimiento de servos de rotación continua (Ref libro 1 pg 105)

Características del sistema

MANUAL DE USUARIO Sensor de temperatura y humedad digital MCI-SEN REV. 1.0

Construye y programa tu radar de tramo

Traductor Morse búcles, strings y arrays

COMUNIDAD DE FORMADORES DEL EMPRENDIMIENTO TECNOLÓGICO FEMPRETEC

Transcripción:

Entradas y salidas: digitales y analógicas Sensores tipo apagado-encendido Interruptores (switches) Termostatos Interruptores magnéticos Interruptores de presión Interruptores de inclinación Sensor de infrarrojos, PIR, (Passive Infrared Sensor) Controlar la luz (u otros inputs) con pulsos modulados PWM (Pulse Width Modulation): reguladores de intensidad.

Salidas analógicas: regulación de intensidad con PWM La idea es jugar con los tiempos de encendido y apagado. Esto lo podemos hacer colocando retardos en el código, pero es incómodo y poco eficiente. Con Arduino podemos modular la intensidad usando los pines analógicos 3, 5, 6, 9, 10 y 11. Se controlan con la función analogwrite(pin, valor) valor: un nº entre 0 y 255

Entradas y sensores analógicos Los sensores analógicos necesitan un tipo diferente de pin a los de los sensores de respuesta si-no. en la placa Arduino hay 6 pines marcados como ANALOG IN (A0 a A5). la función para leer la información de este tipo de entradas es analogread(pin). analogread() devuelve un valor entre 0 y 1023 para voltajes entre 0 y 5 voltios. Vamos a practicar con nuestros sensores analógicos.

Sketch para aumentar y disminuir la intensidad del LED Salidas analógicas /* Disminuir y aumentar la intensidad del LED */ const int LED = 9; // the pin for the LED int i = 0; // usamos este contador para contar hacia arriba y // hacia abajo void setup() { pinmode(led, OUTPUT); // tell Arduino LED is an output void loop() { for (i = 0; i < 255; i++) { // bucle de 0 a 254 (intensidad //aumenta) analogwrite(led, i); // establecer el brillo del LED delay(10); // esperar 10ms: analogwrite es instantáneo // y podríamos no ver el cambio for (i = 255; i > 0; i--) { // loop from 255 to 1 (fade out) analogwrite(led, i); // establecemos el brillo del LED delay(10); // esperar 10ms

Vamos a juntar ahora el circuito que acabamos de hacer con el del botón: la idea es que según el tiempo que apretemos el botón, la luz sea más o menos intensa. Montar el circuito correspondiente y ejecutar el siguiente sketch // Mantener encendido el LED tras la pulsación y cambiar el brillo mientras el botón esté pulsado. const int LED = 9; const int BUTTON = 7; int val = 0; int old_val = 0; int state = 0; int brightness = 128; unsigned long starttime = 0; void setup() { pinmode(led, OUTPUT); pinmode(button, INPUT); // the pin for the LED // input pin of the pushbutton // stores the state of the input pin // stores the previous value of "val" // 0 = LED off while 1 = LED on // almacena el valor de la intensidad // when did we begin pressing? // el LED es una salida // y el botón una entrada

void loop() { continuación val = digitalread(button); // lee el valor de entrada y lo guarda // comprobamos si ha habido una transición if ((val == HIGH) && (old_val == LOW)) { state = 1 - state; // cambiar el estado de apagado a // encendido o vice-versa starttime = millis(); // millis() es el reloj de Arduino //devuelve las milésimas de seg. transcurridas desde que //se restableció la placa delay(10); // comprobamos si el botón se ha mantenido pulsado if ((val == HIGH) && (old_val == HIGH)) { // If the button is held for more than 500 ms. if (state == 1 && (millis() - starttime) > 500) { brightness++; // increment brightness by 1 delay(10); // retardo para evitar que el brillo pase demasiado deprisa if (brightness > 255) { // 255 is the max brightness brightness = 0; // if we go over 255 let s go back to 0

old_val = val; if (state == 1) { analogwrite(led, brightness); else { analogwrite(led, 0); // val es ahora antiguo y lo almacenamos // encender el LED al nivel actual de brillo // turn LED OFF fin Esto funciona! Si pulsamos y soltamos, el LED se enciende y apaga. Si lo mantenemos pulsado, el brillo cambia hasta que lo soltemos.

Entradas analógicas: un sensor electrónico en lugar del botón Montamos una nueva versión del circuito del botón y el LED. Cambiamos el botón por una fotorresistencia o LDR (resistencia dependiente de la luz). Si tapamos la LDR con las manos, el LED se apaga y si las quitamos, el LED se enciende de nuevo. Este tipo de sensores nos pueden decir no sólo si hay o no luz, sino, además y muy importante, la cantidad de luz que hay.

montamos el circuito de la figura (o uno mejorado), y ejecutamos el siguiente código: // LED que parpadea a la velocidad especificada por el valor de la entrada analógica const int LED = 13; int val = 0; // el pin del LED // variable usada para almacenar el valor //que proviene del sensor void setup() { pinmode(led, OUTPUT); void loop() { val = analogread(0); // LED es una salida // leer el valor del sensor digitalwrite(led, HIGH); // encender el LED delay(val); // detener el programa durante un tiempo digitalwrite(led, LOW); // apagar el LED En la placa de montajes colocamos el fotorresistor y una resistencia de 10 k Ω delay(val);

Ahora, vamos a juntar el sensor (LDR) y el actuador (LED) en un mismo circuito. Modificamos el circuito. Cargamos y ejecutamos el siguiente sketch. // Establecer el brillo del LED según el valor de una entrada analógica const int LED = 9; int val = 0; // the pin for the LED // variable used to store the value coming from the sensor void setup() { pinmode(led, OUTPUT); // LED is as an OUTPUT void loop() { val = analogread(0); // read the value from the sensor analogwrite(led, val/4); // encender el LED con el brillo obtenido del sensor delay(10); // stop the program for some time

MEDIDOR DE TEMPERATURA (amorímetro) Descripción del proyecto Vamos a usar un sensor de temperatura (datos analógicos) para medir nuestra temperatura. El voltaje de salida es directamente proporcional a la temperatura en grados centígrados. MATERIAL NECESARIO - 3 LED s rojos - 1 sensor de temperatura TMP36-3 resistencias de 220 Ω - Cables, placa de montajes -1 placa Arduino A destacar - entrada analógica - uso del monitor serie

corriente y toma de tierra MEDIDOR DE TEMPERATURA la pata corta del LED, cátodo, a tierra a través de la resistencia patilla izquierda a la corriente y derecha a tierra; la central a A0 La conexión USB se puede utilizar para mandar datos al equipo o recibirlos desde el ordenador. Después de cargar el sketch, hacer clic en el icono del monitor serie (arriba, derecha). Hay que especificar la velocidad de la comunicación: 9600 bps.

MEDIDOR DE TEMPERATURA // medidor de temperatura // nombramos al pin donde está conectado el sensor const int sensorpin = A0; // room temperature in Celcius (la medimos o estimamos) const float baselinetemp = 20.0; void setup() { // abrimos el puerto serie para ver los datos en pantalla Serial.begin(9600); // declaramos los LED s como salidas y los apagamos for (int pinnumber = 2; pinnumber < 5; pinnumber++) { pinmode(pinnumber, OUTPUT); digitalwrite(pinnumber, LOW);

MEDIDOR DE TEMPERATURA void loop() { // leer el valor en el pin A0 y almacenarlo en una variable local // el valor está entre 0 y 1023 int sensorval = analogread(sensorpin); Serial.print( lectura del sensor: "); Serial.print(sensorVal); // convert the ADC reading to voltage float voltaje = (sensorval / 1024.0) * 5.0; // Send the voltage level out the Serial port Serial.print(", Volts: "); Serial.print(voltaje); // convert the voltage to temperature in degrees C // tenemos en cuenta las especificaciones // del sensor (10mV equivale a 1 ºC) Serial.print(", grados (C): "); float temperature = (voltaje -.5) * 100; Serial.println(temperature);

// if the current temperature is lower than the baseline MEDIDOR DE TEMPERATURA // turn off all LEDs if (temperature < baselinetemp) { digitalwrite(2, LOW); digitalwrite(3, LOW); digitalwrite(4, LOW); // if the temperature rises 2-4 degrees, turn an LED on else if (temperature >= baselinetemp + 2 && temperature < baselinetemp + 4) { digitalwrite(2, HIGH); digitalwrite(3, LOW); digitalwrite(4, LOW); // if the temperature rises 4-6 degrees, turn a second LED on else if (temperature >= baselinetemp + 4 && temperature < baselinetemp + 6) { digitalwrite(2, HIGH); digitalwrite(3, HIGH); digitalwrite(4, LOW); // if the temperature rises more than 6 degrees, turn all LEDs on else if (temperature >= baselinetemp + 6) { digitalwrite(2, HIGH); digitalwrite(3, HIGH); digitalwrite(4, HIGH); delay(50);

LÁMPARA DE VARIOS COLORES MATERIAL NECESARIO - 1 LED rgb - 3 fotocélulas o fotorresistores - 3 resistencias de 10 kω - 3 resistencias de 220 Ω - Cables, placa de montajes -1 placa Arduino A destacar - Salidas analógicas - Mapear (cambiar de escala) valores Descripción del proyecto Vamos a hacer una lámpara que cambia de color en función de las condiciones externas

LÁMPARA DE VARIOS COLORES La terminal más larga es el cátodo Rojo A0 Verde A1 Azul A2

LÁMPARA DE VARIOS COLORES // Lámpara multicolor const int greenledpin = 9; // LED connected to digital pin 9 const int redledpin = 10; // LED connected to digital pin 10 const int blueledpin = 11; // LED connected to digital pin 11 const int redsensorpin = A0; const int greensensorpin = A1; const int bluesensorpin = A2; // pin with the photoresistor with the red gel // pin with the photoresistor with the green gel // pin with the photoresistor with the blue gel int redvalue = 0; int greenvalue = 0; int bluevalue = 0; // valores iniciales int redsensorvalue = 0; int greensensorvalue = 0; int bluesensorvalue = 0; void setup() { // inicializamos la comunicación serie Serial.begin(9600); // set the digital pins as outputs pinmode(greenledpin, OUTPUT); pinmode(redledpin, OUTPUT); pinmode(blueledpin, OUTPUT);

LÁMPARA DE VARIOS COLORES void loop() { // leer los valores de los sensores y almacenarlos en las variables correspondientes redsensorvalue = analogread(redsensorpin); delay(25); // esperar a que el ADC termine greensensorvalue = analogread(greensensorpin); delay(25); bluesensorvalue = analogread(bluesensorpin); // escribir los valores en el monitor serie tabulados Serial.print("raw sensor Values \t red: "); Serial.print(redSensorValue); Serial.print("\t green: "); Serial.print(greenSensorValue); Serial.print("\t blue: "); Serial.println(blueSensorValue);

LÁMPARA DE VARIOS COLORES /* El ADC proporciona un valor entre 0 y 1023 (10 bits) pero analogwrite() usa 8 bits, valores entre 0 y 255. Por lo tanto, dividimos la lectura del sensor entre 4. */ redvalue = redsensorvalue / 4; greenvalue = greensensorvalue / 4; bluevalue = bluesensorvalue / 4; // print out the mapped values Serial.print( valores sensores corregidos \t red: "); Serial.print(redValue); Serial.print("\t green: "); Serial.print(greenValue); Serial.print("\t Blue: "); Serial.println(blueValue); // ajustamos los niveles de luz del LED analogwrite(redledpin, redvalue); analogwrite(greenledpin, greenvalue); analogwrite(blueledpin, bluevalue);