EJERCICIO 1La multinacional francesa Flante experta en maquinaria industrial te ha contratado para que automatices una máquina cortadora de papel. La condición principal es que el operario de la máquina cuando vaya a realizar el corte siempre mantenga las dos manos ocupadas, esta es una regla de seguridad industrial para evitar accidentes. El operario debe oprimir los dos pulsadores uno con cada mano y la cuchilla cortadora debe bajar y hacer el corte. El siguiente montaje simula el control de la máquina, los dos pulsadores (S1 y S2) y el LED rojo simula la cuchilla cortadora. //Imprime en la consola serial "NO Pulsado" } delay(100). Leer una entrada digital y escribir por consola seria MATERIALES Arduino UNO Pulsador Resistencia de 1k Conectores Protoboard Cable USB DISEÑO y CÓDIGO //Declara puertos de entradas y salidas int boton=2. Función digitalRead() y Serial. entrada //Función principal void setup() // Se ejecuta cada vez que el Arduino se inicia { pinMode(boton. //Guardar en una variable entera el valor del botón 0 ó 1 if (estado==1) //Condicional para saber estado del pulsador { // Pulsado Serial.println() Consola serial Opción de Consola serial.begin(9600). //Configurar el botón como una entrada Serial.TUTORIAL ARDUINO #02 – LECTURA SERIAL DE UNA ENTRADA DIGITAL ¿QUÉ APRENDO? CONOCIMIENTOS PREVIOS Manejar una entrada digital Señal digital Ver datos por la pantalla del computador. //Retardo para la visualización de datos en la consola } //Fin programa .println("Pulsado"). INPUT). //Pin donde se encuentra el pulsador.println("NO Pulsado"). //Inicia comunicación serial } //Función cíclica void loop() // Esta función se mantiene ejecutando cuando este energizado el Arduino { int estado = digitalRead(boton). //Imprime en la consola serial "Pulsado" } else { // No está pulsado Serial. al finalizar el proceso se debe encender un LED que indica que el proceso terminó bien y además se debe mostrar un mensaje por la consola ―Gaseosa bien empacada‖. La rutina se describe de esta manera: si la botella se llena de manera adecuada (se debe activar S1 y mostrar por consola “Gaseosa llena” luego de ello si tiene la tapa colocada (se debe activar S2 y mostrar por consola “Gaseosa tapada”. Recuerda que primero se debe activar S1 y luego S2 para que le proceso sea válido. Para este caso simularemos los dos sensores por medio de dos pulsadores (S1 y S2). uno de ellos indica si la botella se ha llenado con el líquido y el otro sensor indica si la botella ya tiene la tapa. .EJERCICIO 1 Una empresa de gaseosas tiene un sistema con dos sensores. begin(9600). Leer una entrada análoga MATERIALES Arduino UNO Potenciómetro Conectores Protoboard Cable USB DISEÑO CÓDIGO //Función principal void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial. //Inicia comunicación serial } void loop() // Esta función se mantiene ejecutando cuando este energizado el Arduino { int valor= analogRead(A0).TUTORIAL ARDUINO #03 – LECTURA SERIAL DE UNA ENTRADA ANÁLOGA ¿QUÉ APRENDO? CONOCIMIENTOS PREVIOS Manejar una entrada análoga Señal digital Ver datos por la pantalla del computador Función analogRead() y Serial.println() Múltiples estados de un potenciómetro Opción de Consola serial. //Retardo para la visualización de datos en la consola } //Fin programa .println(valor). //Guardar en una variable entera el valor del potenciómetro 0 a 1024 Serial. //Imprime en la consola serial el valor de la variable delay(100). //Estado LED la primera vez. OUTPUT). apagado //Función principal void setup() { // Se ejecuta cada vez que el Arduino se inicia Serial.read() Estado de un LED Configuración de una comunicación serial . //Inicia comunicación serial pinMode(led.TUTORIAL ARDUINO #04 – ESCRITURA SERIAL ¿QUÉ APRENDO? CONOCIMIENTOS PREVIOS Entrada por consola (teclado) Señal digital Variables booleanas Función digitalWrite() y Serial. //Configurar el LED como una salida } //Funcion ciclicla void loop() // Esta función se mantiene ejecutando cuando este energizado el Arduino { leer=Serial. Escritura serial digital Polaridad de un LED MATERIALES Arduino UNO Led Cable USB DISEÑO CÓDIGO //Declara puertos de entradas y salidas y variables int led = 13.begin(9600).HIGH). //Variable donde se almacena la letra boolean prendido=false. // Enciende el LED . salida char leer. //Guardar en una variable el valor de la consola serial if ( (leer=='a') && (prendido==false) ) // Si es la letra 'a' y además el LED está apagado { digitalWrite(led.read(). //Pin donde se encuentra el LED. porque la idea es que el aviso de luces se ubique en el piso 130 del Edificio Bulli y tu lo puedas controlar desde el piso 1. // Actualiza el estado del LED } } //Fin programa EJERCICIO 2: AVISOS LUMINOSOS Avisos luminosos S. así que por cada letra que le escribas por teclado a la Consola serial el programa debe hacer determinada rutina con tres LEDs. // Apaga el LED prendido=false. //Pin donde se encuentra el LED. //Estado LED la primera vez. apagado . te ha contratado para que realices un programa que tiene la característica de recibir datos. si le escribes: Letra A: Prende los tres LED Letra B: Prende el LED1 por un segundo y lo apaga. Esta rutina genera una sensación de movimiento Letra C: Apaga los tres LED //Declara puertos de entradas y salidas y variables int led1 = 2. int led3 = 4. char leer. //Variable donde se almacena la letra boolean prendido=false. prendido=true. // Actualiza el estado del LED } // Si es la letra 'a' y además el LED está encendido else if ( (leer=='a') && (prendido==true) ) { digitalWrite(led. luego prende el LED2 por un segundo y lo apaga y finalmente prende el LED3 por un segundo y lo apaga.A. salida int led2 = 3. y vuelve a comenzar.LOW). HIGH).read(). // Apaga el LED delay (1000). digitalWrite(led1. // Enciende el LED2 digitalWrite(led3.HIGH). // Actualiza el estado del LED } // Si es la letra 'b' y además el LED está encendido if ( (leer=='b') && (prendido==true) ) { digitalWrite(led1. // Enciende el LED1 delay (1000).HIGH). digitalWrite(led1. // Enciende el LED3 prendido=true.LOW).begin(9600).HIGH). OUTPUT). //Configurar el LED como una salida pinMode(led2. // Enciende el LED1 digitalWrite(led3.HIGH). digitalWrite(led2. // Actualiza el estado del LED . //Inicia comunicación serial pinMode(led1. // Enciende el LED1 digitalWrite(led2. } //Funcion ciclicla void loop() // Esta función se mantiene ejecutando cuando este energizado el Arduino { leer=Serial.LOW). //Guardar en una variable el valor de la consola serial if ( (leer=='a') && (prendido==false) ) // Si es la letra 'a' y además el LED está apagado { digitalWrite(led1. // Enciende el LED1 delay (1000).HIGH). digitalWrite(led3. // Apaga el LED delay (1000). pinMode(led3. OUTPUT). // Enciende el LED1 digitalWrite(led2.HIGH).//Función principal void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial. digitalWrite(led3.HIGH).HIGH). // Enciende el LED1 //prendido=true. OUTPUT). // Apaga el LED delay (1000). digitalWrite(led2.LOW). // Apaga el LED delay (1000). LOW).LOW). // Actualiza el estado del LED } } //Fin programa EJERCICIO 3: SISTEMA DE RIEGO Tu abuelito tiene un cultivo de grandes y verdes lechugas.LOW). // Enciende el LED2 digitalWrite(led3. Debes realizar un programa que lea una cadena de tres valores. } if ( (leer=='c') && (prendido==true) ) { digitalWrite(led1. para este ejercicio los aspersores los vamos a simular con tres LED 1. este cultivo tiene 3 aspersores de agua y tu abuelito quiere prender estos aspersores desde su computador solo escribiendo unos valores por teclado. 2 y 3 por ejemplo: Si tu abuelito escribe 000 : Todos los aspersores de agua deben estar apagados Si tu abuelito escribe 101 : El aspersor 1 y 3 se prenden pero el dos debe estar apagado Si tu abuelito escribe 001 : El aspersor 1 y 2 se apagan pero el tres debe estar prendido . // Enciende el LED1 digitalWrite(led2. // Enciende el LED3 prendido=false. los aspersores tienen un estado digital (Valor 0 es apagado y valor 1 es prendido). OUTPUT).TUTORIAL ARDUINO #05– CONTROL ON/OFF CON POTENCIÓMETRO ¿QUÉ APRENDO? CONOCIMIENTOS PREVIOS Salida digital If/else Control ON/OFF Función digitalWrite() y analogRead() Comparación Condicional a partir de un Valor de una entrada a valor entero de una entrada análogo MATERIALES Arduino UNO Led PROTOBOARD Potenciómetro Resistencia de 220 ohm Cable USB DISEÑO CÓDIGO //Función principal void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial. //Inicia comunicación serial pinMode(13. //Configurar el pin 13 como una salida } //Función cíclica void loop() // Esta función se mantiene ejecutando cuando este energizado el Arduino { .begin(9600). //Enciende el LED en el pin 13 Si el valor es menor a 500 } else { digitalWrite(13. éste es la sensación de la feria. //Apaga el LED en el pin 13 } delay(100). int valor = analogRead(A0).println(valor). El piloto controla las luces (tres LEDs) por medio de un potenciómetro al lado de la palanca de cambios.350 Intermitencia de los 3 LED a 100ms 351 . él tiene tres opciones de luces de acuerdo al valor de lectura del potenciómetro que va de 0 a 1023: 0 .HIGH). //Imprime el valor por la consola if (valor >= 500) //Si el valor es mayor o igual a 500 { digitalWrite(13.700 Intermitencia de los 3 LED a 500ms 701 . //Guardar en una variable el valor de la lectura análoga Serial. //Retardo de 100ms para ver los datos de la consola } //Fin programa EJERCICIO 4 Un carro de tunnig tiene luces de neón en la parte de abajo.LOW).1023 Intermitencia de los 3 LED a 1000ms . 10. Cuanta más luz reciba. Un ejemplo típico podría ser la utilización en farolas urbanas que van encendiéndose conforme va anocheciendo. ligado inversamente con la cantidad de luz. colocamos las resistencias de 220 Ω puesto que podríamos quemar los diodos por un exceso de calor. 4. 2. 9 y 8. . PROCEDIMIENTO Se conectarán 5 LED que irán encendiéndose dependiendo del dicho valor de resistencia. MATERIALES Placa breadboard 5 Diodos LED 5 resistencias de 220 Ω 1 LDR (resistencia dependiente de luz) 1 potenciómetro 50kΩ (uno de 10kΩ también podría ser útil) 1 resistencia de 1kΩ Cables 3. Unidos mediante un cable a la breadboard. DEFINICIÓN: El sensor LDR es un componente electrónico pasivo cuyo valor de la resistencia varía en función de la luz que recibe. el valor de su resistencia será menor.TUTORIAL ARDUINO #07: SENSOR LDR 1. utilizaremos el 12. Por orden. IMPLEMENTACIÓN DEL CIRCUITO El circuito distribuido en la breadboard podría tener esta forma: Primero concretamos los pines que vamos a utilizar para los LED. de forma que conforme vaya disminuyendo la cantidad de luz. 11. se irán encendiendo los LED de forma progresiva. Al colocar la resistencia de 1kΩ en la parte de arriba del sensor. conectaremos la patilla central al pin AREF (ofrece un voltaje de referencia externo para poder aumentar la precisión de las entradas analógicas) que luego le diremos al programa que lo vamos a usar como referencia externa (moverlo manualmente según el valor mínimo de luz que queramos detectar). Para el sensor. Si ponemos el valor de la referencia muy baja. estamos creando un divisor de tensiones. y la de la derecha al ánodo) de la breadboard para unirlo con el sensor y los LED. más tensión tendremos a la entrada de nuestra entrada analógica. es una resistencia variable que dispone de tres patillas: entre las dos de sus extremos existe siempre un valor fijo de resistencia. la resistencia máxima que ofrece el potenciómetro entre sus dos extremos no es más que la suma de las resistencias entre un extremo y la patilla central.El potenciómetro. Quedando finalmente el montaje de la siguiente manera: Nos queda escribir el código que le pasaremos al arduino (copiar y pegar): //Aquí almacenamos los datos recogidos del LDR: . Es decir. A0 en nuestro caso. de forma que cuando vayamos a ponerlo en marcha debemos regularlo para un correcto funcionamiento. por lo que colocaremos el cable de entrada en un pin analógico. Lo utilizamos para determinar el valor mínimo de la luz que es capaz de detectar el sensor LDR. y entre la patilla central y el otro extremo. por otro lado. la señal que recibe es una señal analógica que obtenemos del exterior para transformarla en digital. y entre cualquiera de esos extremos y la patilla central tenemos una parte de ese valor máximo. Mientras que cada patilla la conectaremos al ánodo y al cátodo (la patilla de la izquierda al cátodo. de manera que cuanta más luz haya. empezarán a funcionar los LED con menos luz ambiente que si ponemos una referencia elevada. De forma práctica. } void loop() { //Guardamos el valor leido en una variable valorLDR = analogRead(pinLDR). //Decimos que pines vamos a utilizar para LED int pinLed1 = 12. digitalWrite(pinLed2. LOW). digitalWrite(pinLed3. LOW). digitalWrite(pinLed5. int pinLed3 = 10. int pinLed5 = 8. LOW).int valorLDR = 0. digitalWrite(pinLed2. //Le decimos que vamos a usar una referencia externa analogReference(EXTERNAL). //Y que pin para la LDR void setup(){ pinMode(pinLed1. pinMode(pinLed3. LOW). LOW). OUTPUT). } else if((valorLDR >= 623) & (valorLDR < 823)) { digitalWrite(pinLed1. LOW). pinMode(pinLed4. pinMode(pinLed5. HIGH). OUTPUT). digitalWrite(pinLed4. LOW). } else if((valorLDR >= 823) & (valorLDR < 1023)) { digitalWrite(pinLed1. OUTPUT). digitalWrite(pinLed3. LOW). digitalWrite(pinLed5. digitalWrite(pinLed3. LOW). int pinLDR = 0. digitalWrite(pinLed4. //Y comenzamos las comparaciones: if(valorLDR >= 1023) { digitalWrite(pinLed1. LOW). LOW). . HIGH). //Establecemos como salida los pines para LED pinMode(pinLed2. int pinLed4 = 9. HIGH). digitalWrite(pinLed2. OUTPUT). digitalWrite(pinLed4. OUTPUT). int pinLed2 = 11. HIGH). digitalWrite(pinLed4. HIGH). HIGH). digitalWrite(pinLed5. digitalWrite(pinLed4. HIGH). HIGH). HIGH). HIGH). LOW). LOW). digitalWrite(pinLed2. } else { digitalWrite(pinLed1. HIGH). LOW). digitalWrite(pinLed3. digitalWrite(pinLed2. } else if((valorLDR >= 423) & (valorLDR < 623)) { digitalWrite(pinLed1. HIGH). } } . digitalWrite(pinLed4. digitalWrite(pinLed3. digitalWrite(pinLed3. } else if((valorLDR >= 223) & (valorLDR < 423)) { digitalWrite(pinLed1. digitalWrite(pinLed5. HIGH). digitalWrite(pinLed5. digitalWrite(pinLed2. LOW). HIGH). HIGH). digitalWrite(pinLed5. Para que el elevador funcione debe estar accionado cualquiera de los 2 pulsadores existentes. Tenemos un elevador neumático que se puede controlar desde 2 habitaciones contiguas del taller. pero por seguridad no funcionará si dos operarios la accionan simultáneamente. Identificamos las variables de entrada y función de salida: a) Entradas: A: un pulsador B: un pulsador b) Salida o valor de la función: Motor que acciona el compresor del elevador 2. Elaboramos la Tabla De Verdad: VARIABLES DE ENTRADA FUNCION SALIDA A B M 0 0 0 Función Lógica = NOT(A) * B + A * NOT(B) 0 1 1 1 0 1 1 1 0 3. Circuito Lógico . 1.EJERCICIO 6: MONTAJES BÁSICOS: FUNCIONES LÓGICAS ELEVADOR. Puertas Lógicas: 2 puertas NOT 2 puertas AND 1 puerta OR 4. //Lee el estado 2 y lo almacena //Función Lógica -----. //Init pin de entrada 2 como salida pinMode(led. //Lee el estado 1 y lo almacena B = digitalRead(var2). //Escribimos el resultado en el led } . OUTPUT). //Para almacenar el estado de la variable2 int resultado = 0. //Pin de salida para el led(rojo) int A = 0. //Pin de entrada del pulsador 1 int led = 5. //Para almacenar el estado de la variable1 int B = 0.R=(â*b)+(a*^b) resultado = (!A && B) || (A && !B). resultado). digitalWrite(led.PROGRAMA: /* Implementación de Función lógica */ int var1 = 1. //Iniciliza el pin del led como salida } void loop(){ A = digitalRead(var1). //Pin de entrada del pulsador 1 int var2 = 2. //Para almacenar el resultado void setup() { pinMode(var1. //Init pin de entrada 1 como salida pinMode(var2. INPUT). INPUT).