0% encontró este documento útil (0 votos)
28 vistas26 páginas

Entradas Digitalsxx

entradas digitales
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
28 vistas26 páginas

Entradas Digitalsxx

entradas digitales
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 26
Entradas digitales 2 if (buttonState1 == LOW && buttonState2 == LOW ){ } else if (buttonState1 == LOW ) { } else if (buttonState2 == LOW ) { } else { } Introduccion En esta miniunidad vamos a utilizar las entradas digitales de Arduino para simular un sistema de seguridad en una nave industrial que tiene dos puertas de acceso. Cada puerta tiene un sensor que indica al personal de seguridad si esta abierta o No, esta informacion se muestra en el monitor de un ordenador que hay en la sala de control de seguridad. Para implementar este sistema mediante una placa Arduino necesitaremos estudiar tres conceptos nuevos: 4. La estructura de programacién if... else if... else 2. El operador AND. 3. La comunicacion de tipo serie entre una placa Arduino y un ordenador. Puerta 1 Plano de la nave industrial Puerta 2 ‘Sistema de seguridad en una nave industrial. 1, Sensores para controlar la apertura de puertas y ventanas Hay varios sensores que pueden usarse para saber si una puerta o una ventana esta abierta o cerrada. El mas usado es el sensor magnético, también llamado interruptor reed. Esta formado por dos laminillas de hierro encerradas en un tubo de vidrio sin aire. Al acercarle un iman 0 un electroiméin, las dos éminas se magnetizan y se atraen entre si hasta tocarse y cerrar el Circuito. Cuando el campo magnético se aleja, as Iéminas vuelven a separarse y el citcuito se abre, Este sensor es muy utiizado en sistemas antirrobo. Se coloca un iméin en la puerta y un interruptor reed en el marco (fijate en la ilustracién). Si un ladron abre la puerta, el sistema antirobo recibe una seftal s| Interruptor reed Tubo de vidrio al vacio Interruptor Conexién con Teed la alarma Iman Funcionamiento de un sensor magnético, Sistema antirrobo con sensor magnético en una puerta. 1. Sensores para controlar la apertura de puertas y ventanas ‘Ademas de los sensores magnéticos, también se usan mucho los sensores de final de carrera (foto de la derecha). Tienen una palanca que presiona un pulsador interno al tocar la hoja de la puerta. En la practica que haremos en las paginas siguientes no usaremos sensores magnéticos ni de final de carrera (si {os tienes, puedes usarlos también), en su lugar usaremos pulsadores normalmente abiertos, que son mas econémicos y faciles de encontrar. Tal y como puedes ver en la animacion de debajo, consideraremos que cada puerta tiene un pulsador que cierra un circuito cuando la puerta esta cerrada y lo abre cuando esta abierta. Si enviamos corriente al pulsador desde la tarjeta Arduino, podremos comprobar si la corriente vuelve a la placa (el estado de la entrada digital a la que se conecte el sensor sera HIGH) 0 sino vuelve (el estado de la entrada digital seré LOW), Circuito abierto Estado: LOW TT Pulsador (destacado en color rosa) instalado en una puerta Sensor de final de carrera, Pulsador. i 3 3 1. Sensores para controlar la apertura de puertas y ventanas Ademas de los sensores magnéticos, también se usan mucho los sensores de final de carrera (foto de la derecha). Tienen una palanca que presiona un pulsador interno al tocar la hoja de la puerta. En la practica que haremos en las paginas siguientes no usaremos sensores magnéticos ni de final de carrera (si los tienes, puedes usarlos también), en su lugar usaremos pulsadores normaimente abiertos, que son mas econdmicos y faciles de encontrar. Tal y como puedes ver en la animacion de debajo, consideraremos que cada puerta tiene un pulsador que cierra un circuito cuando la puerta esta cerrada y lo abre ‘cuando esta abierta. Si enviamos corriente al pulsador desde la tarjeta Arduino, podremos comprobar si la cortiente vuelve a la placa (el estado de la entrada digital a la que se conecte el sensor sera HIGH) 0 sino vuelve (el estado de la entrada digital seré LOW). Circuito cerrado Estado: HIGH Pulsador (destacado en color rosa) instalado en una puerta, Sensor de final de carrera. F Pulsador. 2. Material necesario Para hacer esta practica necesitaras los siguientes componentes: ~ Placa Arduino UNO y cable USB - Protoboard, - 2 pulsadores. = Zresistores de 10 KA. - 8 cables, Cable USB Place Arduino UNO De 5 bandas. De 4 bandas Resistor de 10 kA. je Pulsador Protoboard 3. Montar el circuito Conecta los componentes en la protoboard como se indica en esta imagen. Antes de poner en marcha el circuito, repasa atentamente que todo esté bien conectado, A destacar: - El pulsador 1 esta conectado al pin 7 de la placa, el pulsador 2 esta conectado al pin12. - El cable largo de color negro va conectado al pin GND y al terminal negativo det bus de alimentacién de la protoboard. El cable largo de color Tojo va conectado al pin de alimentacién a 5 V y al terminal positive del bus de alimentacién de la protoboard - Los pulsadores deben instalarse en la protoboard con las patas arriba y abajo, como en el dibujo de la derecha. Si los giras y las patas quedan en los laterales, actuaran como si siempre estuvieran pulsados. Patat — Pata2 Pata3 Pata Las patas de los pulsadores estén conectadas internamente. La 1 con la 3 y la 2con la 4. En rosa se muestra el circuito equivalente, 4. Esquema eléctrico Debajo se muestra el esquema eléctrico del circulto. A la derecha puedes ver como estén conectados los componentes en las conexiones internas de la protoboard. =I, Pulsador 1 { Resistores I. Pulsadtor 2 | £ Arduino UNO RER25R Esquema eléctrico del circuit. ma /Pulsador 2 | OM 5. Diagrama de flujo Ahora toca escribir el cédigo del programa ara la placa Arduino, Pero antes hemos de ‘coneretar qué queremos que haga. Queremos que se muestre un mensaje en la pantalla de un ordenador indicando el estado de las dos puertas. Si ambas estan abiertas, se mostraré el mensaje "Puerta 1 y puerta 2 abiertas”, si solo la puerta 1 esté abierta, se mostraré "Puerta 1 abierta": si solo la puerta 2 esté abierta, se mostraré "Puerta 2 abierta”. si ninguna de las puertas esta abierta, se ‘mostraré "Ninguna puerta abierta". Aqui puedes ver el diagrama de fujo que Corresponde a este funcionamiento. Diagrama de flujo del programe, pulsadores 1 y 2 Mostrar "Puerta 1 y puerta 2 abiertas.” Mostrar "Puerta 1 abierta." Mostrar "Puerta 2 abierta." Mostrar "Ninguna puerta abierta.” Esperar 1 segundo 6, Escribir el programa. Crear un nuevo archivo Ma ~ i sketch_march16.ino void setup() { } Para empezar a escribir el cédigo de! void loop() { programa, abre el IDE de Arduino y crea un nuevo archivo: } Versién web: Sketchbook > New Sketch - Versién de escritorio: Archivo > Nuevo {Dénde encontrar el IDE de Arduino? 6. Escribir el programa. Variables para los pines de los pulsadores vo sketeh_march16 ino const int buttonPint = 7; const int buttonPin2 void setup() { } void loop) { fi 6. Escribir el programa. Variables para el estado de los pulsadores v> sa sketch_march16 ino 4 constint buttonPint = 7; 2 const int buttonPin2 = 12; 3 int buttonStatet 4 int buttonState2 5 6 void setup() { 7 8 } 9 10 void loop() { 1 a } 13 14 15 16 17 18 19 20 a 6. Escribir el programa. Declarar dos pines como entradas =e -E sketch_march16 ino const int buttonPint const int buttonPin2 int buttonState int buttonState: void setup() { pinMode (buttonPin4, INPUT ) pinMode (buttonPin2, INPUT ) } 1 2 3 4 5 6 7 8 9 10 1 12 void loop) { B 4 5 16 7 8 19 20 } 6. Escribir el programa. Iniciar la comunicacion serie v> sketch_march16.ino const int buttonPint const int buttonPin2 int buttonStatet = 0; Int buttonState2 = 0; void setup() { pinMode (buttonPin1, INPUT ); pinMode (buttonPin2, INPUT); Serial.begin (9600); Los pines 0 y 1 no se pueden usar cuando se utiliza la comiunicacién serie con un ordenador. El cable USB (de Universal Serial Port) permite transmitir informacién entre una placa Arduino y un ordenador. Jus, 110° Laplace envia informacién al PC 6. Escribir el programa. Detectar si los botones estan pulsados Me sketch_march16.ino 1 12 void toop() { 13 buttonState1 = digitalRead (buttonPin1); 14 __buttonState2 = cigitalRead (buttonPin2} 15} 16 7 18 49 2 22 23 24 25 a7 28 30 31 32 6, Escribir el programa. Decidir qué mensaje enviar al ordenador Mediante las lineas 13 y 14 sabemos si os botones estén pulsados 0 no (recuerda que si alguno de los dos botones no esté pulsado quiere decir que la puerta correspondiente esté ‘abierta). Ahora toca enviar esta informacion al ‘ordenador para que aparezca un mensaje en la pantalla. Lo haremos usando la estructura Ma sketch_march16.ino "1 Kl E 12 void loop() { 13 buttonState1 = digitalRead (buttonPin1); 14 buttonState2 = digitalRead (buttonPin2); Wa condicional if... else if... else. 48 (1 condicion)¢ 46 —_1instruccién 7 3 Escribe en tu programa las lineas 15 a 26, las que estan destacadas en 18 Lise condicion)( « + sketch_march16.ino Void loop() { buttonState1 = digitalRead (buttonPin1); talRead (buttonPin2); LOW && buttonState2 == LOW ){ Serial printin ("Puerta 1 y puerta 2 abiertas. } else if (2® condicion) { 29 instruccion t else if (3° condicion) { 3# instrucci6n bse ( 49 instruceion t t 6. Esci el programa, Decidir qué mensaje enviar al ordenador sketch_march16.ino void 1oop(){ buttonState1 = digitalRead (buttonPin1), buttonState2 = digitalRead (buttonPin2); if (buttonStatet == LOW && buttonState2 == LOW ) Serial.printin ("Puerta 1 y puerta 2 abiertas.") } else if (buttonStatet == LOW ) { Serial.printin ("Puerta 1 abierta."); else if (3* condicién) { 3° instruccién } else { 4° instruccion } } 6. Escribir el programa. Decidir qué mensaje enviar al ordenador me . sketch_march16.ino void loop() ¢ buttonStatet = digitalRead (buttonPint); buttonState2 = digitalRead (buttonPin2); if (buttonStatet == LOW && buttonState2 Setial printin ("Puerta 1 y puerta 2 abiertas."), else if (buttonStatet == LOW ) { Serial printin (Puerta 1 abierta.”) } else if (buttonState2 == LOW ){ Serial.printin ("Puerta 2 abierta."); } else { 4° instruccién } } 6. Escri 4 12 13 14 18 16 7 18 19 20 2 22 23 24 25 26 7 28 29 31 32 el programa. Decidir qué mensaje enviar al ordenador vo vx sketch_march'6.ino void loop() { buttonStatet = digitalRead (buttonPint): buttonState2 = digitalRead (buttonPin2): it (buttonState1 == LOW && buttonState2 == LOW ){ Serial printin ("Puerta 1 y puerta 2 abiertas."); } else if (buttonState1 == LOW ) { Serial printin ("Puerta 1 abierta."); } else if (buttonState2 == LOW ) { Serial printin ("Puerta 2 abierta."); else { Serial.printin (*Ninguna puerta abierta."); , ) 6. Escribir el programa. Decidir qué mensaje enviar al ordenador Mee ~i sketch_march6 ino 4 12 void loop() { 13 buttonStatet = digitalRead (buttonPin1): 14 _buttonState2 = digitalRead (buttonPin2);, 15 if (buttonState1 == LOW && buttonState2 == LOW ) { 16 Serial printin ("Puerta 1 y puerta 2 abiertas.") 7} 18 else if (buttonState1 == LOW ) { 19 Serial printin ("Puerta 1 abierta."); 2} 21 else if (buttonstate2 == LOW) { 22 Serial.printin ("Puerta 2 abierta.”); 3 } 24 else ( 25 Serial printin ("Ninguna puerta abierta."); 26 ar toe (1000); 2%) 29 30 34 32 6. Escribir el programa. Abrir el monitor de comunicaci6n serie PORT: Arduino Uno at COM3 wees | ~ 9600 baud New line = ‘begin (9600) vold loop() { buttonState: buttonState: if (buttonStatet Serial printin (' digitalRead (buttonPint), ‘igitalRead (buttonPin2) OW && buttonState? uerta 1 y puerta 2 abiertas." Low ){ else if (buttonStatet == LOW ) { Serial printin ("Puerta 1 abierta.") } else if (buttonState2 == LOW ) { Serial printin ("Puerta 2 abierta.") else Montoy sete de fa vein Serial printin ("Ninguna puerta abierta."); web del IDE de Arduino } (7\AuTOscROLL | DISCONNECT aa (1000); 6. Escribir el programa. Visualizar la informacién enviada por la placa PORT: Arduino Uno at COM3 Newline ¥ 9600baud¥ Ninguna puerta abierta Ninguna puerta abierta Ninguna puerta abierta, Puerta 1 abierta Monitor serie de la version web del IDE de Arduino |/\AUTOSCROLL | DISCONNECT 18 19 20 2 22 23 24 25 26 27 28 Y > Arduino uno sketch_march16.ino pinMode (buttonPint, INPUT j; inMode (buttonPin2, INPUT ); Serial begin (9600); else if (buttonStatet == LOW ) { Serial printin ("Puerta 1 abierta."); else if (buttonState2 == LOW ) { Serial.printin ("Puerta 2 abierta."); } else { Serial printin ("Ninguna puerta abierta.") i bay (1000); — al 6. Escribir el programa, Visualizar la informacién enviada por la placa PORT: Arduino Uno at COM Y= Arduino uno . sketch_marcin16.ino Newline + 9600baud + 7 pintMode (buttonPint, INPUT ); 8 —_pinMode (buttonPin2, INPUT ): SEND 8 _Serial.begin (9600); =—} 0} Ninguna puerta abierta ‘Ninguna puerta abierta Q& _Ninguna puerta abierta Puerta 1 abierta. Ninguna puerta abierta ey 18 else if (buttonStatet == LOW ){ Puerta 1 y puerta 2 abiertas. emote (rd » Nigam parts able’ eg, Sues Pues {aera ‘Ninguna puerta abierta. 21 else if (buttonState2 == LOW ){ ‘Ninguna puerta abierta 2 Serial printin (‘Puerta 2 abierta." 23 24 else { See eee 25 Sefial printin ("Ninguna puerta abierta web del IDE de Arduino 2 =} |/)AUTOSCROLL | DISCONNECT ye =e") Cuestionario 1. Los sensores magnéticos y los sensores de final de carrera se pueden usar para controlar gobmo funcionan? 2. Explica el diagrama de flujo de la pagina 7 3. GEn qué consiste la comunicacién serie? {Qué cédigo tenemos que poner en el programa de una placa Arduino para que inicie una comunicacion serie con el ordenador al que esta conectada? 4. Qué es el Monitor serie del IDE de Arduino? 5. gEn qué consiste la estructura de programacién if... else if... else? Pon un ejemplo que no salga en la miniunidad, 6. Afiade al circuito de la miniunidad un led que se encienda cuando alguna de las dos puertas esté abierta. Escribe aqui el codigo necesario. Te sera de ayuda volver a consultar la miniunidad anterior. 7. Modifica el programa de la miniunidad para que se comporte como sigue: Al presionar los dos pulsadores se muestra: "Los dos botones estan pulsados’, Al presionar solo el pulsador 1: “El botén 1 esta pulsado’, Al presionar solo el pulsador 2: "El botén 2 esta pulsado”. Ningtin pulsador presionado: "Ningun botén esta pulsado". Escribe aqui el cédigo 8, Sustituye las lineas 16 a 26 del programa de la miniunidad por (,.ionStatet == LOW |j buttonState? == LOW) { este codigo. .Qué significan las dos lineas verticales paralelas Serial printin("Hay puertas abiertas."); después del primer LOW? gCémo funcionard este programa? else Sora printin("No hay puertas abiertas."); } ina puerta esta ablerta 0 no,

También podría gustarte