Índice 21/10/2012 Práctica 3. Entradas/Salidas Digitales con Arduino Juan Antonio López Riquelme Departamento de Tecnología Electrónica Octubre 2012 Índice 1. Conocimientos previos. 1.1. Identificación y medida de resistencias. 1.2. Polarización de un diodo LED. 1.3. Conexión de entradas. Pull-Up y Pull-Down. 1.4. Repaso de medidas de tensión, continuidad e intensidad con el polímetro. 1.5. Placa de pruebas. 2. Utilización de LEDs, sensores Tilt, interruptores y Buzzers con Arduino. 2.1 Caso de estudio propuesto. 2.2 Esquemático propuesto. 2.3 Código fuente. 3. Uso de LEDs RGB con Arduino. 3.1 El LED RGB. 3.2 Esquemático propuesto. 3.3 Código fuente. Electrónica Industrial 4. Diseño propuesto. 2 1
Resistencias Para obtener el valor nominal y la tolerancia de una resistencia se utiliza un código de colores: Verde-Azul-Amarillo-Marrón Rojo-Naranja-Violeta-Negro-Marrón Electrónica Industrial 3 Polarización de un diodo LED Identificación de terminales Circuito de Polarización Comprobación y medida de diodos Electrónica Industrial 4 2
Conexión de entradas Cuando una línea digital de entrada de un micro-controlador no está conectada a nada ofrece un valor por defecto ( 1 ó 0 ) que depende del diseño del micro-controlador. Solución: Conexión de resistencias de Pull-Up y Pull-Down Arduino incluye resistencias internas de pull-up que pueden ser utilizadas al configurar el pin de entrada digital. Syntax pinmode(pin, mode) Parameters pin: the number of the pin whose mode you wish to set. mode: INPUT, OUTPUT, or INPUT_PULLUP. 1 lógico en reposo 0 lógico en reposo Returns None Electrónica Industrial 5 Repaso del polímetro Electrónica Industrial 6 3
Placa de pruebas (breadboard) Electrónica Industrial 7 Caso de estudio LEDs, sensores Tilt, SWs y Buzzers Se pretende simular el sistema de un camión para la activación de la luz de marcha atrás, así como el aviso de que la bañera está en movimiento. Un interruptor simula la selección de la marcha atrás. Un sensor de tipo Tilt indica que la bañera está en movimiento. Un diodo LED simula la luz de marcha atrás. Un buzzer indica de un modo sonoro que la bañera está en movimiento. Electrónica Industrial 8 4
Esquemático propuesto LEDs, sensores Tilt, SWs y Buzzers LED. Cátodo-GND. Anódo-resistencia de 330 Ω-pin 13. Buzzer. Terminal negativo-gnd. Terminal positivo-resistencia 330 Ω-pin 12. Interruptor. Extremo-GND. Terminal centralpin 11. Tilt sensor. GND-Tilt sensor-pin 10. Electrónica Industrial 9 Código fuente int ledpin = 13; int buzzerpin = 12; int switchpin = 11; int tiltsensorpin = 10; int switchvalue = 0; int tiltvalue = 0; void setup(){ pinmode(ledpin, OUTPUT); pinmode(buzzerpin, OUTPUT); pinmode(switchpin, INPUT_PULLUP); pinmode(tiltsensorpin, INPUT_PULLUP); LEDs, sensores Tilt, SWs y Buzzers void loop(){ switchvalue = digitalread(switchpin); if (switchvalue == LOW){ digitalwrite(ledpin, HIGH); tiltvalue = digitalread(tiltsensorpin); if (tiltvalue == LOW){ digitalwrite(buzzerpin, HIGH); delay(500); digitalwrite(buzzerpin, LOW); else digitalwrite(ledpin, LOW); delay(500); Electrónica Industrial 10 5
El LED RGB Engloba tres diodos LED en el mismo encapsulado: Rojo, Azul y Verde. LEDs RGB Este diseño consiste en poder activar los tres canales del LED RGB de manera independiente (tres botones). Para identificar el terminal común se puede utilizar el polímetro. Electrónica Industrial 11 Esquemático propuesto LEDs RGB Pulsador componente B. Pull-Up. Pin 8. Pulsador componente G. Pull-Down. Pin 9. Pulsador componente R. Pull-Up. Pin 10. LED RGB. Conexión ánodo (+) común. Las componentes R, G y B, están conectadas con los pines 13, 12 y 11, respectivamente. Las resistencias de los pulsadores son de 10 kω. Las resistencias de los canales del LED RGB son de 330 Ω. Electrónica Industrial 12 6
Código fuente LEDs RGB int ledrpin = 13; int ledgpin = 12; int ledbpin = 11; int swrpin = 10; int swgpin = 9; int swbpin = 8; int r = 0; g = 0; b = 0; void setup(){ pinmode(ledrpin, OUTPUT); pinmode(ledgpin, OUTPUT); pinmode(ledbpin, OUTPUT); pinmode(swrpin, INPUT); pinmode(swgpin, INPUT); pinmode(swbpin, INPUT); void loop() { r = digitalread(swrpin); g = digitalread(swgpin); b = digitalread(swbpin); if (r == LOW) digitalwrite(ledrpin, LOW); else digitalwrite(ledrpin, HIGH); if (g == HIGH) digitalwrite(ledgpin, LOW); else digitalwrite(ledgpin, HIGH); if (b == LOW) digitalwrite(ledbpin, LOW); else digitalwrite(ledbpin, HIGH); Electrónica Industrial 13 Descripción Diseño Propuesto Emplear los conocimientos adquiridos durante la prácticas para diseñar una luz navideña que realice una secuencia en uno o varios LEDs, y que además incluya una secuencia sonora usando el buzzer. La selección de la secuencia puede ser automática o utilizar interruptores y pulsadores para elegir una secuencia determinada. Se puede utilizar el LED RGB, los LEDs simples, así como una combinación de los anteriores. Para facilitar la generación de tonos se puede utilizar la biblioteca tone de Arduino. Se recomienda abrir el ejemplo tonemelody (Archivo Ejemplos Digital). Syntax tone(pin, frequency) tone(pin, frequency, duration) Syntax notone(pin) Parameters pin: the pin on which to stop generating the tone Parameters pin: the pin on which to generate the tone frequency: the frequency of the tone in hertz - unsigned int duration: the duration of the tone in milliseconds (optional) - unsigned long Electrónica Industrial 14 7
Dr. Juan Antonio López Riquelme Universidad Politécnica de Cartagena Campus Muralla del Mar, s/n 30202 Cartagena Tel. +34 968 32 54 66 Fax. +34 968 32 53 45 E-mail jantonio.lopez@upct.es Www www.cincubator.com 8