0% encontró este documento útil (0 votos)
20 vistas9 páginas

Practica A1 Arduino

La práctica consiste en programar un Arduino para implementar un control de presencia para conductores, obligándolos a pulsar un botón cada cinco segundos. Si el botón no se pulsa, se apagan LEDs y, al apagarse el último, se activa una señal de emergencia. Se proporcionan instrucciones sobre el montaje del circuito, el código fuente y explicaciones sobre funciones y variables en programación.

Cargado por

nitron393
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, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas9 páginas

Practica A1 Arduino

La práctica consiste en programar un Arduino para implementar un control de presencia para conductores, obligándolos a pulsar un botón cada cinco segundos. Si el botón no se pulsa, se apagan LEDs y, al apagarse el último, se activa una señal de emergencia. Se proporcionan instrucciones sobre el montaje del circuito, el código fuente y explicaciones sobre funciones y variables en programación.

Cargado por

nitron393
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, TXT o lee en línea desde Scribd
Está en la página 1/ 9

1.

DESCRIPCIÓN
La práctica consiste en programar un Arduino y realizar un circuito electrónico en
una placa protoboard .

A lo largo de la práctica veremos y analizaremos como podemos poner en marcha


“un control de presencia” para un conductor.

Para realizar la práctica nos fijaremos en el siguiente enunciado:

Control de hombre muerto


¿Nunca te has preguntado qué pasaría si un conductor de tren se desmayase
durante un trayecto? ¿Y si un conductor de Tesla se queda dormido? Para evitar
esto, implementaremos un control de presencia para asegurarnos de que el
conductor está despierto.

Para realizar esta práctica necesitarás conectar un pulsador y cinco LED de rojos.

Vamos a obligar al conductor a pulsar un botón cada cinco segundos para


demostrar que esta despierto y a los mandos (en vez de un botón, podría ser un
sensor de presión o calor en el volante).

1. Crea una variable booleana para almacenar el estado del conductor (vivo o no].
2. El sistema empieza con las cinco luces encendidas. Cada segundo que pasa,
comprobará si el botón está pulsado. Si no, apagará una luz y esperará de nuevo, y
así hasta que se hayan apagado todas.
Si se ha pulsado el botón, marcamos el conductor como vivo y nos saltamos el
apagado de luces.

3. Si se apaga la última luz sin que nadie haya pulsado el botón, entonces las luces
parpadearán para indicar una emergencia (y el coche frenaría].

4. Si se llega al final y el conductor está vivo, se volvería a empezar con todas las
luces encendidas y comenzando la cuenta atrás de nuevo.
2.ESQUEMA DEL MONTAJE
Para poder realizar el montaje de la práctica necesitaremos los siguientes
compontes:

-Arduino o copia compatible con Arduino IDE

- 1Pulsador

-2 Resistencias de 1000 ohmios

-5 Resistencias de 220 ohmios

-5 Leds

-Cables

-1 Placa protoboard

3.FOTOGRAFIAS
Aquí tenemos unas cuantas imágenes demostrativas de la práctica:
Aquí dejo el enlace a un video más demostrativo del funcionamiento:
https://www.youtube.com/watch?v=svymSOPVZkY
4.CÓDIGO FUENTE
Para poder realizar el código es importante saber previamente que son cierto
elementos que tendremos que poner en el código y en que consisten.

4.1.Funciones
Las funciones son una de las partes esenciales en un programa. Una función no es
más que un trozo de código que se usa frecuentemente dentro de un
programa. El objetivo es facilitar la utilización de ese fragmento de código y
que el programa quede más limpio y legible.

Tenemos varios ejemplos de ellos muy comunes que veremos en nuestro código
como por ejemplo :
Serial.begin(9600); /*Abrimos un puerto serie y especificamos la velocidad de
trasmisión*/

pinMode(6, INPUT);//Establecemos como que el pin 6 es una entrada

digitalRead(BOTON1);Leemos el botón 1 y miramos que hace.

digitalWrite(LED1,HIGH);Hacemos que el LED1 se encienda.

while();//Nos permite hacer un bucle dentro del loop


setup()/*Son las condiciones inicales del programa ,cosas que solo se hacen al
principio*/
loop()//Esta junto con el setup con indispensables para el código. Irá después del
setup y su significado es repetición por lo que este dentro de sus llaves se repetirá.

Estas son algunas de las funciones más importantes

4.2.Variables
Una variable es la manera que tenemos de guardar valores. Una variable no es
más que una herramienta de programación que nos ayuda a almacenar y
recuperar información en nuestros programas.
Las variables tienen nombre y son de un solo tipo. Estas variables se pueden usar
para muchas cosas: comprobaciones, operaciones matemáticas…
Una variable puede ser declarada al inicio del programa, antes del setup(), dentro
de otras funciones o dentro de un control de flujo.

Cada variable solo podrá almacenar un tipo de dato especificado cuando se declara
dicha variable. Cuando hablamos de declarar lo que realmente estamos haciendo
es crear una variable. Para declarar una variable vas a necesitar dos cosas: un
nombre y un tipo de dato.

4.3.Tipos de datos
Hay muchos tipos de datos, pero solo voy a comentar algunos de los más
relevantes para que se pueda comprender el código.

4.3.1.Entero (int)
Es el tipo de dato más común. En C++ se utiliza la palabra reservada int para
declarar un tipo de dato entero.
Puede almacenar un número de 16-bit es decir, 2 bytes (16 unos en binario
1111111111111111). En total son 65.535 números pero como almacena
números positivos y negativos el rango de un int es de -32.768 a 32.767.

4.3.2Booleano (boolean)
Es el tipo de dato que menos memoria ocupa, 1-bit. La palabra reservada en C++
es boolean y puede tomar dos valores o 1 o 0.

1 // Declaración variables booleanos


2 boolean boolConFalse = false;
3 boolean boolConCero = 0;
4 boolean boolConLow = LOW;
5
6 boolean boolConTrue = true;
7 boolean boolConNumero1 = 1;
8 boolean boolConNumero2 = 23;
9 boolean boolConNumero3 = -41;
10boolean boolConHigh = HIGH;
He puesto varios ejemplos para explicar una cosa. Lo primero, 1 equivale a
true (verdadero) y 0 equivale a false (falso).
Con una variable del tipo booleano lo que sucede es que siempre que sea 0 será
falso y en caso contrario será siempre verdadero.

Y con todo esto ya visto creo que estamos listo para poder hacer y entender el
código. Igualmente, es importante que el código este bien tabulado y comentado
para que sea fácil su interpretación a la hora de leerlo.
4.4.Código fuente
1 #define PULSA1 2 //Definimos el Pulsador en el pin 2
2 #define LED1 3 //Definimos el led 1 en el pin 3
3 #define LED2 4 //Definimos el led 2 en el pin 4
4 #define LED3 5 //Definimos el led 3 en el pin 5
5 #define LED4 6 //Definimos el led 4 en el pin 6
6 #define LED5 7 //Definimos el led 5 en el pin 7
7
8 boolean vivo = false;/*ponemos una variable de tipo boolena y la
9 llamamos vivo y le asignamos como falso(0) */
10 int retardo = 1000;/* Ponemos una variable y le asignamos un valor
11 para poder cambiar el tiempo entre que se apaga cada led de una
12 manera mas sencilla*/
13
14 void setup(){
15 //Definimos el pulsador como entrada y los leds como salidas
16 pinMode(PULSA1, INPUT);
17 pinMode(LED1, OUTPUT);
18 pinMode(LED2, OUTPUT);
19 pinMode(LED3, OUTPUT);
20 pinMode(LED4, OUTPUT);
21 pinMode(LED5, OUTPUT);
22 //Hacemos que todas los Leds empiecen estando encendidos
23 digitalWrite(LED1,HIGH);
24 digitalWrite(LED2,HIGH);
25 digitalWrite(LED3,HIGH);
26 digitalWrite(LED4,HIGH);
27 digitalWrite(LED5,HIGH);
28 Serial.begin(9600);
29 }
30
31 void loop(){
32 vivo=false;/*Damos por muerto al conductor para hacer que
33 empiece el conteo*/
34 //encendemos todos los LEDS
35 digitalWrite(LED1,HIGH);
36 digitalWrite(LED2,HIGH);
37 digitalWrite(LED3,HIGH);
38 digitalWrite(LED4,HIGH);
39 digitalWrite(LED5,HIGH);
40 delay(retardo);/*Ponemos un retardo para que no apague la
41 primera luz instantaneamente*/
42
43 if(digitalRead(PULSA1)==HIGH){/*Comprobamos que el conductor
44 esta vivo*/
45 vivo=true;
46 Serial.println("ESTOY VIVO");
47 /*Cuando el vivo sea igual a true este omitirá todos los if
48 que se refieran al low y volverá al
49 inicia hasta que soltemos el botón y este cambie su estado
50 por false y empiece la cuenta atras*/
51 }
52 if (vivo == false){/*Si el conductor no da señales de vida
53 apagaremos un Led*/
54 Serial.println("Despierta ,primer aviso");
55 digitalWrite(LED5,LOW);
56 delay(retardo);
57 }
58 if(digitalRead(PULSA1)==HIGH){/*Comprobamos que el conductor
59 esta vivo*/
60 vivo=true;
61 }
62 if (vivo == false){
63 Serial.println("Despierta ,segundo aviso aviso");
64 digitalWrite(LED4,LOW);/*Si el conductor no da señales
65 de vida apagaremos otro Led*/
66 delay(retardo);
67 }
68 if(digitalRead(PULSA1)==HIGH){/*Comprobamos que el conductor
69 esta vivo*/
70 vivo=true;
71 }
72
73 if (vivo == false){/*Si el conductor no da señales de vida
74 apagaremos otro Led*/
75 Serial.println("Despierta ,tercer aviso");
76 digitalWrite(LED3,LOW);
77 delay(retardo);
78 }
79 if(digitalRead(PULSA1)==HIGH){//Comprobamos que el conductor
80 esta vivo*/
81 vivo=true;
82 }
83 if (vivo == false){/*Si el conductor no da señales de vida
84 apagaremos otro Led*/
85 Serial.println("Despierta ,cuerto aviso");
86 digitalWrite(LED2,LOW);
87 delay(retardo);
88 }
89 if(digitalRead(PULSA1)==HIGH){/*Comprobamos que el conductor
90 esta vivo*/
91 vivo=true;
92 }
93 if (vivo == false){/*Si el conductor no da señales de vida
94 apagaremos un Led*/
95 Serial.println("DESPIERTAA");
96 digitalWrite(LED1,LOW);
97 delay(retardo);
98 }
99 if(digitalRead(PULSA1)==HIGH){/*Comprobamos que el conductor
100 esta vivo*/
101 vivo=true;
102 }
103 while(vivo==false){/*bucle en el que estaremos si vivo es igual
104 a false*/
105 Serial.println("ALERTA ,FRENADO DE EMERGENCIA");
106 /*encenderemos todas las luces e iniciaremos un parpardeo para
107 intentar despertar al conductor e indicar el estado de
108 emergencia*/
109 digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,HIGH);
delay(300);
if(digitalRead(PULSA1)==HIGH){/*Comprobamos que el conductor
esta vivo*/
vivo=true;
}
//Apagamos todas las luces LEDS
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
delay(300);

if(digitalRead(PULSA1)==HIGH){/*Comprobamos que el conductor


esta vivo*/
vivo=true;
}
}
}

También podría gustarte