Arduino Practicas

IES NICOLAS COPERNICO Arduino Sensores y Actuadores video sensores y video actuadores Un sensor es un dispositivo, t

Views 112 Downloads 3 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

IES NICOLAS COPERNICO

Arduino

Sensores y Actuadores video sensores

y video actuadores

Un sensor es un dispositivo, también conocido como transductor, que puede medir un dato del entorno para digitalizarlo para transferirla a un ordenador. Los sensores pueden medir cualquier variable del entorno, desde la temperatura hasta la humedad, pasando por la presencia de personas o el tipo de objeto que alguien sujeta en su mano. Los actuadores son dispositivos electrónicos, transductores, que pueden afectar el entorno transformando un valor digital en un movimiento mecánico, la producción de sonido, un cambio de temperatura, o de intensidad de la luz. Ejemplos de actuadores, son motores, led, altavoces, etc,

La placa Arduino UNO. video Arduino

Es una placa de circuito impreso con un microcontrolador, puertos digitales y analógicos de entrada/salida, los cuales pueden conectarse a placas de expansión (shields), que amplían las características de funcionamiento de la placa Arduino. Asimismo, posee un puerto de conexión USB desde donde se puede alimentar la placa y establecer comunicación con el computador.

1

IES NICOLAS COPERNICO

Arduino

Arduino puede "sentir" el entorno mediante la recepción de entradas desde una variedad de sensores y puede afectar a su alrededor mediante el control de luces, motores y otros artefactos. La placa Arduino UNO es la más empleada en el mundo en educación en este momento. Fue diseñada para ser robusta y soportar toda una serie de situacioines de uso con estudiantes. La placa incluye, entre otras cosas: • • • • • • • • •

14 pines digitales de entrada y salida. 6 pines analógicos de entrada. un botón de reset que reinicia el programa corriendo en la placa. un puerto USB que sirve para programar la placa, hacer que comunique con un ordenador, o alimentar todos los circuitos (a 5V) conectados a ella. un conector de alimentación externa. un puerto donde se puede sacar alimentación de 5V, 3V3 y tierra para tus sensores y actuadores. una serie de ledes para informar del estado del circuito. una serie de pines digitales que, además, pueden actuar como fuente de señales moduladas por ancho de pulso (PWM). conexiones para puerto serie, SPI(serial Pheriferal interface), e I2C(inter-integrated circuit).

El entorno de programación. IDE. video

Lo que normalmente se conoce como "programa Arduino" es en realidad un Entorno Integrado de Desarrollo (IDE, en inglés). Este tipo de aplicaciones permite escribir y editar programas, compilarlos (traducirlos al lenguaje que entiende el microcontrolador) y cargarlos en la placa Arduino correspondiente. El IDE de Arduino es gratuito (www.arduino.cc) El IDE permite escribir programas, compilarlos, descargarlos en placas y hacer una gestión simple de ficheros. El 90% de las actividades que necesitas hacer cuando creas programas para Arduino están representadas en la barra de tareas.

2

IES NICOLAS COPERNICO

Arduino

Estas tareas son: •

Verify (verificar): compila el programa y te indica si la sintaxis es la correcta y si las funciones a las que llama tu programa existen dentro de las librerías de código que estas utlizando.



Upload (descargar o subir el programa – depende de nomenclaturas): compila el programa, pero además intenta escribirlo en la memoria de tu placa Arduino. Te dará un mensaje final de éxito o error.



New (nuevo): crea un nuevo programa, si tenías algo escrito en el editor, te dará la posibilidad de guardarlo antes de crear uno nuevo.



Open (abrir): abre un buscador de ficheros para que le indiques que programa quieres abrir. Los programas de Arduino tienen la extensión *.ino.



Save (guardar): te permite guardar tu programa donde quieras en tu disco duro, unidad USB, disco de red, etc.



Serial monitor (monitor puerto serie): es una ventana de diálogo que te permite comunicar con el puerto de comunicación de tu placa Arduino, veremos más sobre esto al final de módulo.

Practica 1. Mi primer programa. Blink. El programa Blink, es el más sencillo que podemos implementar y consiste en hacer parpadear uno de los leds que tenemos en la placa Arduino concretamente el que está conectado a la pata nº 13 (marcado con una "L" en la placa). Este programa viene ya con Arduino y está en la lista de ejemplos. Cada vez que apliquemos un nivel alto (high) a la pata 13 el led se encenderá y cuando apliquemos un nivel bajo (low) se apagará. Recordamos que un nivel significa que aplico voltaje a esa pata. Empecemos.

La primera vez que conectemos Arduino Windows instará el controlador del dispositivo. 1º- Conectamos nuestro Arduino al PC con nuestro cable USB. 2º - Seleccionamos la placa apropiada en el menú Herramientas / Placa / . Seleccionamos Arduino UNO ó Genuino UNO. 3º - Seleccionamos el puerto apropiado donde hemos conectado el cable USB al PC. En Windows será un puerto COM, si hay varios normalmente será el más alto. Menú herramientas / Puertos. 4º - Escribimos el programa.

(normalmente los puntos 2 y 3 solo se realizarán la primera vez que conectemos la placa, pero si al subir el programa me da un error, volverlo a comprobar)

3

IES NICOLAS COPERNICO

Arduino

El programa. Todo lo que escribamos entre /* y */ , es un comentario de varias líneas, no son instrucciones y es solo para que el desarrollador o usuarios tengan información adicional.

//

es también un comentario pero solo de una líneas, se utiliza para comentar una instrucción. Como ayuda. Todas las instrucciones tiene una estructura fija, es decir, no puedo omitir nada, ni paréntesis, ni puntos y comas ni llaves etc. Además es sensible a las mayúsculas, es decir si una instrucción o parte de es en mayúsculas no funcionará en minúsculas. El IDE, cuenta con una gran ayuda: la sintaxis coloreada, esto significa que cuando reconoce algo que está escrito de forma correcta le asigna un color determinado..

4

IES NICOLAS COPERNICO

Arduino

En todo programa podemos distinguir dos funciones principales.

setup()

- Solo se ejecuta una vez cuando se carga el programa.

loop()

- Se ejecuta indefinidamente.

Es importante que todo programa tenga únicamente una función setup() y una función loop().

int led = 13;

- Definimos una variable para el número de pin. Esto es habitual en cualquier programa, de esta forma cuando nos vayamos a referir al pin nº 13 utilizaremos la variable "led", que nos da más información que un simple número.

5

IES NICOLAS COPERNICO

Arduino

Una Variable es una palabra que representa un espacio de memoria donde hay almacenado un dato. Ese dato almacenado puede modificarse durante la ejecución del programa. Algunos ejemplos de tipos de variables son:

byte num = 230;

- tipo byte: un valor entre 0 y 255.

int val = 0;

- tipo int: valor entero entre entre 0 y 216.

long bigval = 100;

- tipo long: valor entero entre 0 y 232.

float decimal = 3.5;

- tipo float: valor decimal

String cadena = "hola";

- tipo String: cadena de texto se pone entre comillas.

char c = 'A';

- tipo char: define solo un letra.

boolean result = true;

- tipo boolean: toma valores de true o false.

La estructura es la que se muestra, primero el tipo, luego el nombre y después del igual es el valor que tiene dicha variable de inicio. Luego ese valor podría ser modificado durante la ejecución del programa.

pinMode (led, OUTPUT);

- Asigna un pin de la placa como entrada (input) o salida (output), según vayamos a utilizarlo. En este caso como lo que queremos es aplicar voltaje, será una salida.

digitalWrite (led, HIGH); delay (1000);

- Asigna un nivel alto (HIGH) o bajo (LOW) a una entrada.

- tiempo de pausa en milisegundos.

- Compila y sube el programa a la placa (USB conectado) dos leds marcados con Tx y Rx en la placa parpadearán durante la transmisión. En la parte inferior del IDE , aparece el progreso de la carga. Si la carga se ha completado correctamente me aparecerá un mensaje "carga terminada", si no, me aparecerá un mensaje de error con una ayuda. Leerlo e intentar corregirlo. Abrir el IDE, y copiar el programa Blink de la figura anterior. Las instrucciones tienen que estar exactamente igual. Subir el programa a Arduino y comprobar el resultado.

(Ejercicios propuestos) Ep 1. Modifica el programa para que el parpadeo sea cada medio segundo.

6

IES NICOLAS COPERNICO

Arduino

Entradas y salidas digitales Una entrada digital para un microcontrolador es una pata o terminal que es capaz de leer un valor de voltaje de 0 V ó 5 V, es decir, un nivel bajo (low) ó alto (high). Una salida digital es capaz de "escribir" esos valores (es decir poner ese pin a nivel bajo o alto) Un ejemplo de dispositivo de entrada sería un simple pulsador. En la tabla vemos los términos equivalentes para encendido y apagado. ON

OFF

5V

0V

HIGH

LOW

1

0

TRUE

FALSE

Arduino tiene 14 entradas y salidas digitales, pero tener en cuenta que las entradas 0 y 1 se utilizan para la comunicación con el puerto serie, por tanto cuando queramos utilizar está comunicación no es conveniente utilizarlas. Además si fuera necesario las entradas analógicas también podrían utilizarse como digitales, A0 seria la 14, A1 la 15... y así sucesivamente. Por tanto podríamos disponer de un total de 20 entradas digitales. Veamos esto con algunas prácticas.

Practica 2. Encender y apagar un LED Vamos a utilizar el mismo programa Blink para encender y apagar un LED externo a Arduino. Este es el circuito que vamos a montar.

Como sabemos el diodo led siempre se monta en serie con una resistencia, en nuestro caso utilizaremos una de 330 ohmios. También hay que tener en cuenta la polarización de led. Conectar el terminal negativo (la patilla más corta) a tierra ó GND a través de la resistencia y el terminal positivo (patilla más larga) a una entrada digital (el pin 2 en nuestro caso)

7

IES NICOLAS COPERNICO

Arduino

¡¡¡IMPORTANTE!!! Los montajes se realizan siempre con la Arduino desconectada.

Abre el programa Blink, de la práctica 1 y modifica el 13 por el 2, puesto que en esta ocasión es la entrada digital donde hemos conectado el LED. Compilamos y subimos el programa a Arduino.

Ep 2. Igual que hicimos con Blink, modifica el programa para que el parpadeo sea cada medio segundo. Ep 3. Podemos hacer que emita destellos, haciendo que el tiempo de encendido sea más corto que el de apagado. Por ejemplo que el tiempo de encendido sea 5 veces menos.

Practica 3. LED RGB Este componente electrónico dispone en su interior de tres LEDs individuales (rojo, verde y azul) que podemos encender de forma independiente o mediante cualquier combinación de ellos. Hay de ánodo común y de cátodo común. El que nosotros vamos a utilizar es el de cátodo común. en la imagen puedes ver el patillaje y el circuito equivalente.

Este es el circuito que vamos a montar.

Utilizamos resistencias de 330 Ω. Es aconsejable utilizar cables de colores si disponemos de ellos. El color negro se utiliza siempre par las conexiones a GND.

8

IES NICOLAS COPERNICO

Arduino

Copiar el programa en IDE y probarlo.

En programación por norma general utilizamos mayúsculas para los nombres de variables y constantes.

Ep 4. Podemos cambiar el tiempo de espera para ver el efecto como en Blink. Sería interesante puesto que el retardo aparece varias veces en el programa, definir una constante, de esta forma si la queremos cambiar solo lo hacemos una vez. int ESPERA = 500; delay(ESPERA);

Ep 5. Si encendemos más de un led a la vez podremos forma distintos colores por combinación de los tres colores primarios. Prueba. 9

IES NICOLAS COPERNICO

Arduino

Practica 4. LED y pulsador Una vez que hemos experimentado con las salidas digitales, vamos a hacer algo un poco más interesante, combinar la salida con la lectura de una entrada digital. El ejercicio consiste en hacer parpadear un LED (como hemos visto). Cuando el pulsador no esté pulsado parpadeará a una velocidad y cuando lo pulse parpadeará más rápido. El circuito será el siguiente. A esta configuración se le denomina Pull-Up.

PULL-UP. cuando el pulsador no está pulsado le estoy aplicando a la entrada un nivel alto (5v), Cuando lo pulso conecto la entrada con GND (nivel bajo). PULL-DOWN. cuando el pulsador no está pulsado le estoy aplicando a la entrada un nivel bajo (GND), Cuando lo pulso conecto la entrada a 5V (nivel alto). Esto lo tienes que tener en cuenta a la hora de hacer el programa, para saber cuándo se activa la entrada.

El programa es el siguiente.

10

IES NICOLAS COPERNICO

Arduino

En el tenemos algunas instrucciones nuevas.

#define PULSADOR 10

- definición de una constante. PULSADOR = 10. En la práctica es lo mismo que como lo hacíamos antes (int PULSADOR =10;). Las constantes ocupan menos memoria que las variables. Si no vamos a cambiar durante el programa el valor de PULSADOR, sería más adecuado hacerlo así.

pinMode (PULSADOR, INPUT);

- asignamos el número de pin definido con PULSADOR, como entrada. Es decir por este pin vamos a leer datos.

11

IES NICOLAS COPERNICO

Arduino

digitalRead (pin entrada)

- nos permite leer el valor de una entrada digital. Los valores leídos pueden ser HIGH ó LOW, que son los equivalentes de true y false ó a "1" y "0".

if (digitalRead (PULSADOR) == true) { // se ejecuta la condición true...... } else { // se ejecuta la condición false...... } Sentencia condicional para la toma de decisiones. Si (if) se cumple (true) se ejecutarán las acciones correspondientes, si no se cumple (false) se ejecutarán las instrucciones dentro del "else"

Ep 6. Se trata de que el LED siga al estado del pulsador. El LED se encienda cuando esté pulsado y se apague cuando no. Pista: si utilizas la función delay es que estás haciendo algo mal.

Practica 5. El semáforo En esta práctica vamos a simular el funcionamiento de un semáforo de forma simplificada. El semáforo simula el funcionamiento de un paso de peatones. Las luces del semáforo representarían la parte que controla la circulación de los vehículos, y el pulsador el botón que tiene que apretar el peatón, para que se cierre el semáforo de los coches y poder cruzar. Primero encenderemos los tres LEDS un segundo y los apagamos, para comprobar que todos funcionan. Después se encenderá el LED Verde y el sistema quedará a la espera de que se pulse el pulsador. Cuando lo pulsemos se apagará el LED verde y el LED amarillo parpadeará 5 veces. Para terminar, el LED rojo se encenderá durante 5 segundos y después se encenderá el LED verde, quedando nuevamente a la espera del pulsador.

12

IES NICOLAS COPERNICO

Arduino

Vamos a utilizar esta vez el montaje pull-down para ver la diferencia y que con cualquiera de los dos puede funcionar, simplemente tengo que tenerlo en cuenta en la programación.

El circuito es el de la siguiente figura. Pin 2 como entrada digital para el pulsador. Pines 8, 9 y 10 como salidas digitales para los LED.

13

IES NICOLAS COPERNICO

Arduino

14

IES NICOLAS COPERNICO

int x;

Arduino

- variable entero, la utilizamos como contador del bucle for.

Podemos crear tantas variables como queramos, la única limitación es la cantidad de memoria RAM disponible en el microcontrolador. Por convenio utilizamos mayúsculas para definir las constantes con #define y minúsculas para las variables, esto nos permitirá cometer menos errores.

Bucle while Permite ejecutar una parte del programa mientras una condición se está dando. La interpretación del bucle while es diferente dependiendo de si ponemos punto y coma al final o no. Bucle while que espera a que se deje de dar una condición: while (condición); Bucle while que ejecuta un fragmento (entre llave) de programa mientras se da una condición: while (condición) { //fragmento de programa que se ejecuta mientras sea cierta la condición } En nuestro ejemplo utilizamos el primer tipo (con punto y coma) porque sin accionar el pulsador tenemos aplicado a la entrada nº 2 un nivel bajo (GND), ya que estamos utilizando un montaje pull_down, es decir PULSADOR = FALSE. Así, el while hace que el programa espere a que deje de cumplirse esa condición, y eso sucederá cuando accione el pulsador aplicando un nivel alto (5V).

Bucle for El bucle while se ejecuta un número indeterminado de veces, mientras se da una determinada condición, tal y como hemos visto. Por contra, el bucle for se ejecuta un número concreto de veces. Para controlar el número de veces que se ejecuta el bucle for, necesitamos una variable que nos permita contarlas. Esta es la variable "x".

for (x=0; x 30% y Luz < 60%

Apagado

Encendido

Apagado

LUZ > 60%

Apagado

Apagado

Encendido

Practica 9. Generación de sonido. Otra característica de Arduino es que es capaz de emitir sonidos. Esto se consigue gracias a la instrucción tone, que genera una onda cuadrada de una frecuencia (sonido) y duración determinada por sus parámetros de entrada. Cada nota musical se corresponde con una frecuencia concreta, así una melodía simple puede ser una sucesión de sonidos de una determinada frecuencia y duración. Esto es lo que vamos a hacer. Para poder asociar a cada frecuencia su duración vamos a utilizar un sistema de almacenamiento nuevo, el array. Que explicaremos más adelante. Vamos a empezar por algo muy simple, realizar un programa que sea capaz de atacar un altavoz (un zumbador en nuestro caso) en serie con un resistencia de 100 Ω, para reproducir sonido directamente desde el chip. No será un archivo wav o mp3, si no que vamos a generar sonido directamente desde código. Primero vamos a conectar el altavoz a través de la resistencia a una de las entradas digitales, por ejemplo la 4. Conectamos el cable azul o negro a tierra (GND) y el rojo al pin 4.

27

IES NICOLAS COPERNICO

Arduino

Podemos partir del ejercicio Blink de la primera práctica. Borrar todos los comentarios y cambiar el nombre de la variable "led" por "speaker". Funcionaría igual sin cambiar el nombre de la variable, pero siempre es recomendable utilizar nombres de variables que tengan que ver con lo que estamos haciendo. Y también cambiar la número de pin digital.

Es programa emitirá un tono cada medio segundo. Como ves no hemos utilizado la función tone, simplemente utilizamos el altavoz como cualquier otro actuador de los que hemos visto anteriormente. Modificar el retardo a 1 milisegundo y comprobaréis que se emite un tono continuo. Modificar el retardo a 2 milisegundos y comprobaréis que se obtiene un tono más grave. Jugando con el retardo obtenemos distintos tonos.

delayMicroseconds ();

esta función me proporciona mil veces más resolución que delay().

si en nuestro ejemplo utilizamos esta función con un retardo de 1136, reproduciremos la nota LA. Probarlo.

28

IES NICOLAS COPERNICO

Arduino

Vamos a ver cómo trabajar con tonos directamente sin tener que trabajar con retardos que es más intuitivo.

tone (pin, frec);

- esta función tiene dos parámetros el pin que voy a activar y la frecuencia a

tocar.

tone (pin, frec, dur); noTone (pin);

- puedo añadir un tercer parámetro que es la duración de la nota.

- desactiva el tono en el pin.

Practica 9_1. Abre el siguiente ejemplo y pruébalo. Archivo / ejemplos / Digital / toneMultiple

Es otro ejemplo también es muy simple, y nos sirve para ver cómo funcionan estas nuevas instrucciones. Cómo puedes ver ni siquiera hemos definido los pines. Este programa ejemplo está preparado para activar diferentes pines, suponiendo que tengo más de un altavoz, como nosotros tenemos solo uno y está conectado al pin 4, tenemos que cambiar todos los pines al 4.

Practica 9_2. El IDE tiene la posibilidad de añadir nuevas pestañas en las que repartir el código de forma elegante.

En el ejemplo anterior, vemos que aparece otra pestaña llamada "pitches.h", en la que están definidas todas las notas con su correspondiente frecuencia.

29

IES NICOLAS COPERNICO

Arduino

(Podríamos hacerlo directamente como hasta ahora, al principio del programa, pero definir variables y constantes en otra hoja puede ayudarnos mucho si el programa es mucho más complejo).

Si incluimos en la primera línea de código la sentencia

#include

"pitches.h" , podremos utilizar dichas constantes. De esta forma podemos utilizar en lugar de números nombres de notas que es mucho más intuitivo.

Pruébalo. Simplemente incluye la instrucción anterior al principio del programa y cambia los números de frecuencia por su nombre correspondiente en la pestaña "pitches.h". Por ejemplo, en lugar de 440 por NOTE_A4.

Practica 9_3.

Tocando una melodía. Array y bucle for

Al principio del tema vimos que existen distintos tipos de variables (byte, int, long, float, string, char, boolean) Existe también un sistema de almacenamiento de orden superior, el Array. Un Array que es un conjunto de variables (posiciones de memoria) del mismo tipo. La estructura es la siguiente.

30

IES NICOLAS COPERNICO

Arduino

Ejemplo, Array de cadenas de texto. string dia; //variable tipo cadena de texto. string semana[] = {lunes, martes, miércoles, jueves, viernes, sábado, domingo }; si escribo: dia = semana[3]; // estoy asignando a la variable "día" el valor "jueves".

31

IES NICOLAS COPERNICO

Arduino

El bucle for es una estructura que se utiliza cuando queremos que una serie de acciones se repita un número determinado de veces, para ello se necesita de una variable índice, una condición y un incrementador.

Vamos a ver esto con un ejemplo real. Abrimos Archivo / Ejemplos / Digital / toneMelody este ejemplo es capaz de tocar una melodía. Observa que nosotros nos utilizamos el pin de salida número 8. Cámbialo por el nuestro. Primero observa que la primera sentencia de programa es #include "pitches.h" , para poder utilizar las definiciones de notas creadas en esa pestaña. En este ejemplo definimos la melodía de la siguiente forma.

Estamos definiendo una Array de enteros (int) con el nombre "melody". Los corchetes [ ] , indican que es un Array. Dentro de las llaves { } , y separados por comas, introducimos el valor inicial de las diferentes variables, que serán las notas a tocar ( el cero es un silencio). En este caso tiene 8 notas.

32

IES NICOLAS COPERNICO

Arduino

Para ir tocando la melodía tenemos que ir seleccionando cada posición del Array, por ejemplo, melody[0] = NOTE_C4 melody[1]= NOTE_G3 ... melody[8]=NOTE_C4

En el ejemplo también hemos definido otro Array para las duraciones de las notas.

Lo que hacemos después es recorrer el Array mediante un bucle For. En nuestro ejercicio como queremos pasar por todas las notas contaremos hasta 8 en incrementos de 1. (0,1,2,3,4,5,6,7) por que la condición es que sea menor de 8. Hemos creado una variable "thisNote" que inicializamos a 0 y que incrementamos con la sentencia "thisNote++"

La duración podemos considerar 1 segundo (1000 milisegundos) divido por la duración, así sería un cuarto de nota (1000/4) un octavo de nota (1000/8), y así.... El programa está definido en el setup() por lo que sonará solo una vez. Para que vuelva a sonar tendremos que pulsar el botón de reset.

Ep 14. Prueba esta melodía, y haz los ajustes necesarios para que funciones

Ep 15. Melodía del primer Mario Bross. Haz los ajustes necesarios para que funcione. Puedes añadir más notas y hacer tu propia versión. 33

IES NICOLAS COPERNICO

Arduino

Ep 16. Añade un LED y su correspondiente resistencia a una salida digital. El LEd se encenderá solo cuando suene una determinada nota. (por ejemplo NOTE_A6)

Practica 10. Thermin. Si no sabes que es un Thermin, dedica unos minutos a buscar información sobre el. Nosotros vamos a hacer un Thermin simplificado. Utilizaremos el circuito anterior al que añadiremos una LDR y su resistencia. Este sensor nos detectará la posición de nuestras manos y según esta reproducirá un sonido u otro. En realidad solo conseguiremos que reproduzca un sonido diferente cuando lo toquemos (poca luz)

34

IES NICOLAS COPERNICO

Arduino

El circuito es el de la figura.

Como podemos ver tenemos dos circuitos diferentes un formado por la LDR y su resistencia que nos proporcionará la distancia entre la mano y el LDR (instrumento en este caso). El otro es el de la anterior práctica, un zumbador con su resistencia, que reproducirá el sonido. El programa es el siguiente.

Prueba a cambiar los valores de las constantes SILENCIO, F_MAX y F_MIN, para ver cual se aprecia mejor el efecto.

35

IES NICOLAS COPERNICO

Arduino

Practica 11. Cómo controlar dispositivos mediante un transistor. Hasta ahora todo los dispositivos de salida (actuadores) utilizados han sido de baja potencia, es decir como mucho necesitaban 30mA por pin. ¿pero qué pasa si queremos utilizar actuadores de mayor potencia? Tenemos que interponer entre la salida de Arduino y el actuador un driver que nos proporcione más potencia. Nosotros utilizaremos uno muy sencillo que es un transistor MOSFET. Un MOSFET es un transistor de potencia, permite a nuestro Arduino manejar voltages o cargas mas elevadas que las normalmente soportadas por las salidas de la placa. Este transistor puede manejar corrientes de hasta 30A y voltajes de hasta 100v

El circuito es el siguiente

Vamos a controlar el encendido y la potencia de una "carga más potente" que simularemos con tres LEDs blancos. Para hacerlo un poco más complicado (si no sería igual que una de las actividades que hicimos al principio), vamos a controlar el encendido y apagado del conjunto de LEDs de forma progresiva. Para ello utilizaremos las salidas PWM, vistas en la práctica 7, pero en lugar de utilizar un potenciómetro lo haremos mediante secuencias de encendido y apagado incluidas en nuestro programa. El programa es el siguiente. Analízalo y pruébalo.

36

IES NICOLAS COPERNICO

Arduino

(Este montaje nos servirá para la práctica siguiente, no lo desmontes.)

Ep 17. Tienes que controlar el brillo de los LEDs de forma inversa a la luz detectada por un LDR. Utilizaremos el mismo circuito pero hay que añadir una LDR con su resistencia ( práctica 8), además habrá que modificar el programa. Max luz --- Brillo mínimo LEDs Min luz --- Brillo máximo LEDs Consejo: No es necesario utilizar el bucle for. Fijate en el programa de la práctica 8 para controlar la LDR. Utiliza la información de la LDR, para controlar la salida 6 PWM donde está conectado el resto del circuito (transistor y leds)

37

IES NICOLAS COPERNICO

Arduino

Practica 12. Control de motores eléctricos. Un motor es un dispositivo que necesita mucha corriente para el arranque. Podemos comprobar que si conectamos directamente un motor a 5V y GND de Arduino, el motor funciona. Esto es debido a que Arduino pude entregar la suficiente corriente entre estos terminales de alimentación.

Si ahora probamos a conectar el motor a una salida digital veremos que ya no funciona, por que las salidas digitales no entregan tanta corriente. Puedes probarlo con el programa de la práctica 1, conectando el motor entre GND y la pin 2 (salida digital).

Por tanto necesitamos amplificar la corriente para poder entregar más al motor. ¿Cómo lo hacemos? Efectivamente con un transistor. En la práctica anterior (práctica 11) podemos sustituir los diodos y resistencias por el motor, es decir, un contacto a 5 V y el otro al terminal D del transistor. Compruébalo.

Practica 13. Display 7 segmentos con Arduino. Vamos a mostrar en un Display la cuenta de 0 a 9. El display que vamos a utilizar es en cátodo común y vamos a poner unas resistencias de 330 ohmios para proteger cada uno de los LEDs correspondientes a los segmentos del Display. Para simplificarlo, en lugar de poner una resistencia por cada segmento, vamos a poner una sola conectada entre el terminal GND del display y masa en al protoboard.

Cada uno de los segmentos los conectaremos a una salida digital de Arduino. PATILAJE DEL DISPLAY 7 SEGMENTOS.

El montaje será el de la siguiente figura, pero ten en cuenta que el display de la figura no es el mismo que vamos a utilizar nosotros. Fíjate en el patillaje (figura anterior). El cable azul no es necesario, porque es para iluminar el punto del display.

38

IES NICOLAS COPERNICO

Arduino

El programa es muy simple. Define los pines, luego configura como "salida" los terminales donde has conectado los segmentos del display. utilizando la instrucción digitalWrite, hay que poner a nivel alto, los pines correspondientes a los segmentos que se tienen que encender con cada número. Deja un retarde de medio segundo entre número y número. ejemplo: para mostrar "0": Todos a HIGH, excepto el segmento g que será LOW.

Ahora te toca a ti. Realiza el programa y prueba su funcionamiento.

39

IES NICOLAS COPERNICO

Arduino

Ep 18. Al mismo circuito anterior, vamos a añadir dos pulsadores con sus resistencias en pull-down (ver práctica 4). Estos pulsadores se conectarán a dos entradas digitales. El programa se tiene que comportar de la siguiente forma: •

ningún pulsador pulsado (0,0) --- display muestra un "0"



solo pulsando el izquierdo (0,1) -- display muestra un "1"



solo pulsando el derecho (1,0) -- display muestra un "2"



pulsando los dos a la vez (1,1) -- display muestra un "3"

Practica 14. Display 7 segmentos con Arduino . Microinterruptor Vamos a controlar un display 7 segmentos mediante un microinterruptor que proporcionará un código binario según la siguiente tabla. "1" conexión a Vcc (high) , "0" conexión a tierra, GND (Low)

D C B A abcd efg

VISUALIZACIÓN

0 0 0 0 1111110

0

0 0 0 1 0110000

1

0 0 1 0 1101101

2

0 0 1 1 1111001

3

0 1 0 0 0110011

4

0 1 0 1 1011011

5

0 1 1 0 0011111

6

0 1 1 1 1110000

7

1 0 0 0 1111111

8

1 0 0 1 1110011

9

40

IES NICOLAS COPERNICO

Arduino

El circuito sería el de la foto.

La parte del micro interruptor sería la siguiente.

El resto valdría (display) sería como en la práctica anterior. Observar que en la foto aparece una resistencia por cada segmento, pero podemos dejar una única resistencia conectada a GND, como hicimos en la práctica anterior.

INTÉNTALO

41