0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
44 Ansichten29 Seiten
Este documento presenta ejemplos de código para controlar dispositivos digitales como LEDs y motores usando Arduino. Explica cómo usar estructuras de control como IF, ELSE IF para evaluar el estado de un botón e incrementar variables para encender un LED 3 veces. También muestra cómo usar operadores lógicos para controlar múltiples salidas dependiendo del valor de una variable de conteo.
Este documento presenta ejemplos de código para controlar dispositivos digitales como LEDs y motores usando Arduino. Explica cómo usar estructuras de control como IF, ELSE IF para evaluar el estado de un botón e incrementar variables para encender un LED 3 veces. También muestra cómo usar operadores lógicos para controlar múltiples salidas dependiendo del valor de una variable de conteo.
Este documento presenta ejemplos de código para controlar dispositivos digitales como LEDs y motores usando Arduino. Explica cómo usar estructuras de control como IF, ELSE IF para evaluar el estado de un botón e incrementar variables para encender un LED 3 veces. También muestra cómo usar operadores lógicos para controlar múltiples salidas dependiendo del valor de una variable de conteo.
Lic. Gerardo Espinoza Ramrez Instituto Tecnolgico Superior de Ciudad Serdn.
2.1. Lectura digital.
digitalRead(pin).
valor = digitalRead(Pin); // la variable valor es igual // al estado ledo en Pin 2 Pull UP y Pull DOWN. 3 2.1.1.1. Estructuras de control condicionales. Sentencia If(condicional). 4 2.1.1.1. Operadores de comparacin. == Igual a != No igual a Diferente de < Menor que > Mayor que <= Menor o igual que >= Mayor o igual que 5 if (valor ?? valor) { ejecuta Instrucciones; }
// ?? representa cualquier operador de comparacin. 6 2.1.1.2. Estructura de programacin else. - Sentencia If(condicional)... Else.
7 Ejemplo 2.1. Lectura de un botn con condicional IF. En este ejemplo se utiliza un pin como entrada digital para leer el valor de un botn, tambin se utiliza un pin como salida digital para encender o apagar un diodo LED dependiendo el estado del botn utilizando el condicional IF para establecer el encendido o apagado del diodo LED. 8 9 //[[[DECLARACIN DE VARIABLES]]] int pinLed = 5; // Se establece la variable 'pinLed' para almacenar el nmero 5 del pin de la // tarjeta Arduino.
int pinBoton = 2; // Se establece la variable 'pinBoton' para almacenar el nmero 2 del pin de la // tarjeta Arduino. int estadoBoton; // Se declara la variable 'estadoBoton' la cual va a almacenar el valor leido del botn.
//[[[DECLARACIN DE VARIABLES]]]
//[[[CONFIGURACIN]]] void setup() { pinMode(pinLed, OUTPUT); // Se establece como una salida al pin de la tarjeta Arduino // el pin de la variable 'pinLed' (pin 5). pinMode(pinBoton, INPUT); // Se establece como una entrada al pin de la tarjeta Arduino // el pin de la variable 'pinBoton' (pin 2). } [[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] void loop() { estadoBoton = digitalRead(pinBoton); // Se inicia el programa leyendo el valor del pin donde se encuentra asignado el botn, // en esta caso la variable 'pinBoton' (pin nmero 2), dicho valor se guarda en la variable 'estadoBoton'. if(estadoBoton==HIGH) // Condicin: SI el estado del botn es igual a 'ALTO' ENTONCES HACER LO SIGUIENTE: { digitalWrite(pinLed, HIGH); // Se escribe un 'ALTO' (un 1 digital) en el pin del diodo LED. // Esto hace que el diodo LED encienda al pulsar el botn. } if(estadoBoton==LOW) // Condicion: SI En caso de que NO se cumpla la condicin anterior ENTONCES HACER LO SIGUIENTE: { digitalWrite(pinLed, LOW); // Se escribe un 'BAJO' (un 0 digital) en el pin del diodo LED. // Esto hace que el diodo LED se apague mientras el botn no est pulsado. } } //[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] Ejemplo 2.2. Lectura de un botn con condicional IF... ELSE. En este ejemplo se utiliza un pin como entrada digital para leer el valor de un botn, tambin se utiliza un pin como salida digital para encender o apagar un diodo LED dependiendo el estado del botn utilizando los condicionales IF... ELSE para establecer el encendido o apagado del diodo LED. 10 11 //[[[DECLARACIN DE VARIABLES]]] int pinLed = 5; // Se establece la variable 'pinLed' para almacenar el nmero 5 del pin de la // tarjeta Arduino. int pinBoton = 2; // Se establece la variable 'pinBoton' para almacenar el nmero 2 del pin de la // tarjeta Arduino. int estadoBoton; // Se declara la variable 'estadoBoton' la cual va a almacenar el valor leido del botn. //DECLARACIN DE VARIABLES]]] void setup() { pinMode(pinLed, OUTPUT); // Se establece como una salida al pin de la tarjeta Arduino // el pin de la variable 'pinLed' (pin 5). pinMode(pinBoton, INPUT); // Se establece como una entrada al pin de la tarjeta Arduino // el pin de la variable 'pinBoton' (pin 2). } //[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] void loop() { estadoBoton = digitalRead(pinBoton); // Se inicia el programa leyendo el valor del pin donde se encuentra asignado el botn, // en esta caso la variable 'pinBoton' (pin nmero 2), dicho valor se guarda en la variable 'estadoBoton'. if(estadoBoton==HIGH) // Condicin: SI el estado del botn es igual a 'ALTO' ENTONCES HACER LO SIGUIENTE: { digitalWrite(pinLed, HIGH); // Se escribe un 'ALTO' (un 1 digital) en el pin del diodo LED. // Esto hace que el diodo LED encienda al pulsar el botn. } else // SINO. En caso de que NO se cumpla la condicin anterior ENTONCES HACER LO SIGUIENTE: { digitalWrite(pinLed, LOW); // Se escribe un 'BAJO' (un 0 digital) en el pin del diodo LED. // Esto hace que el diodo LED se apague mientras el botn no est pulsado. } } //[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] 2.2.1. Incrementos en programacin. Incrementos. x = 3 x = x + 1 x = 4 12 Ejemplo 2.3. Incremento para control de un LED. En este ejemplo se utiliza una variable que controla el encendido de un diodo LED con periodos de intermitencia de 1 segundo para que encienda 3 veces, despus de 3 veces el diodo LED no vuelve a encender hasta que la tarjeta Arduino sea reiniciada. 13 14 //[[[DECLARACIN DE VARIABLES]]] int pinLed = 5; // Se establece la variable 'pinLed' para almacenar el nmero 5 del pin de la // tarjeta Arduino para el diodo LED. int contador = 0; // Se establece la variable 'contador' la cual contar el nmero de veces que encienda // el diodo LED. //[[[CONFIGURACIN]]] void setup() { pinMode(pinLed, OUTPUT); // Se establece como una salida al pin de la tarjeta Arduino // el pin de la variable 'pinLed' (pin 5). } //[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] void loop() { if(contador<3) // Condicin: Si la variable contador es menor que el nmero 3 { // entonces hacer las siguientes instrucciones:
digitalWrite(pinLed, HIGH); // Escribir el valor 'ALTO' en el 'pinLed' (pin 5). delay(1000); // Se hace una pausa de 1 segundo (1000 milisegundos). digitalWrite(pinLed, LOW); // Escribir el valor 'BAJO' en el 'pinLed' (pin 5). delay(1000); // Se hace una pausa de 1 segundo (1000 milisegundos). contador++; // Incrementar la variable 'contador' una unidad. // Una vez que la variable 'contador' es igual a 3 la condicin (3<3) establecida ya no se cumple // por lo tanto ya no se accede a esta parte del cdigo, as el diodo LED slo enciende 3 veces. } } //[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] 2.3. Operadores booleanos. && Y, AND, CONJUNCIN. || O, OR, DISYUNSIN. ! NO, NOT, NEGACIN. 15 2.2.2. Estructura de programacin elseif. La sentencia Else if(condicional) se utiliza para trabajar diversos tipos de valores para los cuales se debe realizar alguna accin especfica, en ocasiones evitando la excesiva anidacin de sentencias if() o ifelse(). 16 2.2.2. Estructura de programacin elseif. if (variable < 500) { // Instrucciones } else if (variable2 >= 1000) { // Instrucciones } else { // Instrucciones } 17 Ejemplo 2.5. Elseif para la activacin de salidas dependiendo de los valores en el incremento de una variable. En el ejemplo se utiliza una variable para realizar un incremento de 0 a 3, cuando el conteo est en el valor 0 un diodo LED se enciende y se hace una pausa de 5 segundos. En el valor 1 se activa un motor y se hace una pausa de 5 segundos antes de avanzar. Cuando el contador se encuentra en el valor 2 entonces se activa el buzzer haciendo una pausa de 5 segundos tambin. Una vez que el contador llega a 3 el sistema se reinicia. 18 19 int contador = 0; // Se establece la variable 'contador' la cual mantendr el conteo que se especifca en los requerimientos del ejemplo. int pinLed = 5; // Se establece la variable 'pinLed' para almacenar el nmero 5 del pin de la // tarjeta Arduino para el diodo LED. int pinBuzzer = 11; // Se establece la variable 'pinBuzzer' para almacenar el nmero 11 del pin de la // tarjeta Arduino para el buzzer. int pinMotor = 8; // Se establece la variable 'pinMotor' para almacenar el nmero 8 del pin de la // tarjeta Arduino para el relevador. //[[[CONFIGURACIN]]] void setup() { pinMode(pinLed, OUTPUT); // Se establece a 'pinLed' como una salida al pin de la tarjeta Arduino. pinMode(pinBuzzer, OUTPUT); // Se establece a 'pinBuzzer' como una salida al pin de la tarjeta Arduino. pinMode(pinRele, OUTPUT); // Se establece a 'pinRele' como una salida al pin de la tarjeta Arduino. } 20 //[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] void loop() { if(contador == 0) // Condicin: SI la variable 'contador' es IGUAL a CERO: { digitalWrite(pinLed, HIGH); // Se escribe un 'ALTO' al pin del diodo LED. delay(5000); // Se hace una pausa de 5 segundos. contador++; // Se incrementa en uno la variable 'contador'. } else if (contador == 1) // En otro caso condicin: SI la variable 'contador' es IGUAL a UNO: { digitalWrite(pinRele, HIGH); // Se escribe un 'ALTO' al pin del RELEVADOR. delay(5000); // Se hace una pausa de 5 segundos. contador++; // Se incrementa en uno la variable 'contador'. }
21 else if(contador == 2) // En otro caso condicin: SI la variable 'contador' es IGUAL a DOS: { digitalWrite(pinBuzzer, HIGH); // Se escribe un 'ALTO' al pin del BUZZER. delay(5000); // Se hace una pausa de 5 segundos. contador++; // Se incrementa en uno la variable 'contador'. } else // Para cualquier otro caso, es decir, para cualquier otro valor de la variable 'contador' que no sea 0, 1 o 2: { // Se apagan los tres dispositivos: LED, RELEVADOR y BUZZER digitalWrite(pinLed, LOW); digitalWrite(pinBuzzer, LOW); digitalWrite(pinRele, LOW);
contador=0; // SE REINICIA EL CONTADOR ASIGNNDOLES EL VALOR DE 0 (CERO), PARA QUE EL CONTEO VUELVA A INICIAR. }
}
Prctica 2.1
Nombre de la prctica. Enclave de un Motor.
Descripcin general de la prctica. Se utiliza el botn y un motor, cuando inicia el sistema este se encuentra en espera de la pulsacin del botn, una vez que ocurre esto se activa el motor y as permanece hasta que nuevamente se pulse el botn para desactivar el Motor. 22 23 int pinMoto = 8; // Se establece la variable 'pinMoto' para almacenar el nmero 8 del pin de la // tarjeta Arduino para el Motor. int pinBoton = 2; // Se establece la variable 'pinBoton' para almacenar el nmero 2 del pin de la // tarjeta Arduino para el Botn. int estadoBoton; // Se declara la variable 'estadoBoton' de tipo entera en la que se guardar el estado del botn (CERO o UNO). int enclavado=0; // Se declara la variable 'enclavado' de tipo entera con la que se indicar dentro del programa si el relevador se encuentra en // un estado enclavado (UNO) o si no se encuentra en estado enclavado (CERO). Esta variable se inicializa con un valor // igual a CERO (enclavado=0) porque por lgica el relevador iniciar en un estado no enclavado, segn las especificaciones // que indica la prctica. //[[[CONFIGURACIN]]] void setup() { pinMode(pinMoto, OUTPUT); // Se establece como una salida al 'pinMoto' (pin 8) de la tarjeta Arduino pinMode(pinBoton, INPUT); // Se establece como una salida al 'pinBoton' (pin 2) de la tarjeta Arduino } 24 //[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] void loop() { estadoBoton=digitalRead(pinBoton); // Se efecta la lectura del 'pinBoton' (pin 2) y el valor obtenido se almacena en la variable 'estadoBoton'.
if((estadoBoton==HIGH) && (enclavado==0)) // Condicin: SI la variable 'estadoBoton' es IGUAL a HIGH (botn presionado), Y TAMBIN SI la { // variable 'enclavado' es IGUAL a CERO (el relevador NO est enclavado), entonces hacer lo siguiente:
digitalWrite(pinMoto,HIGH); // Se enva un 'ALTO' al pin del motor ('pinMoto') enclavado=1; // Se cambia el valor de la variable 'enclavado' con la finalidad de indicar que el relevador ahora se encuentra en // un estado enclavado, haciendo que pase de valor CERO a valor UNO. delay(1000); // Se hace una pausa de 1 segundo(1000 milisegundos).
} else if((estadoBoton==HIGH)&&(enclavado==1)) // Condicin: SI la variable 'estadoBoton' es IGUAL a HIGH (botn presionado), Y TAMBIN SI la { // variable 'enclavado' es IGUAL a UNO (el relevador SI est enclavado), entonces hacer lo siguiente:
25 digitalWrite(pinMoto,LOW); // Se enva un 'BAJO' al pin del Motor ('pinMoto') enclavado=0; // Se cambia el valor de la variable 'enclavado' con la finalidad de indicar que el relevador ahora ya no se encuentra en // un estado enclavado, haciendo que pase de valor UNO a valor CERO. delay(1000); // Se hace una pausa de 1 segundo(1000 milisegundos). }
} //[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]]
Prctica 2.2.
Nombre de la prctica. Incrementa y decrementa.
Descripcin general de la prctica. Se tienen dos botones, del mismo modo se tiene una variable de control la cual por medio de uno de los dos botones ser incrementada, con el otro botn se le harn decrementos a esta misma variable. El nmero mximo es 10. El nmero mnimo es cero, cuando se llega al lmite, tanto inferior como superior, debe sonar el buzzer. 26 Proyecto 2.
Nombre del proyecto. Encendido de una luz por medio del conteo de n nmero de pulsos.
Descripcin del proyecto. 1. El sistema inicia y permanece siempre en espera de contar los pulsos. 2. Debe existir una variable encargada de almacenar los pulsos realizados, esta debe iniciar con un valor igual a 0 (cero). 3. Una vez que se ha iniciado el sistema este espera a contar y almacenar los pulsos realizados a travs de un botn conectado como una entrada digital en algn pin de la tarjeta Arduino. 27
4. A partir de que se hace el primer pulso se queda almacenado. Cuando se vuelve a marcar otro pulso este se suma al nmero de pulsos contados anteriormente y as sucesivamente. 5. Cuando se marca un pulso con el botn el sistema debe esperar un periodo igual a 1 segundo antes de volver a leer otro pulso, mientras tanto el sistema hace caso omiso a los pulsos marcados dentro de ese periodo de tiempo. 6. Dentro del mismo periodo de tiempo, de 1 segundo, se debe encender la luz, indicando que el pulso se ha ledo y no se puede volver a pulsar hasta que dicha luz se desactive. 28 7. Una vez que la luz se desactiva, pasado 1 segundo de tiempo, entonces es posible volver a marcar otro pulso. 8. El nmero mximo de pulsos contados y almacenados debe ser IGUAL a 5. 9. Una vez que se han alcanzado los 5 pulsos lmite la luz se debe encender por un periodo de 10 segundos, esto indica que se han contado y almacenado las 5 pulsaciones del botn. 10. Despus del periodo de 10 segundos la luz se desactiva, del mismo modo el contador de pulsos debe volver a iniciar desde cero, esto es como un RESET en el conteo. 11. Enseguida de lo anterior el sistema queda como en el estado inicial, es decir, en espera de 5 nuevos pulsos para activar la luz, de este modo el sistema vuelve a iniciar con el proceso antes especificado. 29