3 0 TALLER DE ARDUINO PRESENTACIN PARA ALUMNOS






























- Slides: 30
3. 0 TALLER DE ARDUINO PRESENTACIÓN PARA ALUMNOS DE CUARTO CURSO DE EDUCACIÓN SECUNDARIA OBLIGATORIA 1
¿QUÉ ES ARDUINO? Arduino es básicamente un SISTEMA DE CONTROL de hardware libre. Está formado por: • una placa de circuito impreso dotada de componentes con: § Entradas y salidas analógicas y § Entradas y salidas digitales. • Un entorno de desarrollo de software 2
¿QUÉ ES ARDUINO? La idea del uso de Arduino es que se utilice como elemento programable que sirva para adquirir datos procedentes de sensores y sea capaz de emitir en consecuencia señales a los elementos actuadores Actuador 1 Sensor 2 Actuador 2 Sensor 3 Sensor n Actuador n 3
Las conexiones de Arduino Observa las diferentes conexiones de Arduino y cómo están distribuidas. Ten en cuenta que cada terminal tendrá una función Salidas digitales Entradas digitales Conector USB Conector de Alimentación (6 -12 V) Pines de alimentación Entradas analógicas 4
El entorno de desarrollo IDE Para que Arduino sepa como llevar a cabo una tarea, hay que escribir un programa TENDREIS QUE DESCARGAR E INSTALAR EN EL ORDENADOR, EL ENTORNO DE DESARROLLO DE ARDUINO IDE Para programar Arduino es necesario descargarse de la página web de Arduino http: //www. arduino. cc el entorno de desarrollo (IDE), disponible para Windows, MAC y LINUX. 5
El entorno de desarrollo IDE 1. Conecta la placa de Arduino al puerto USB del ordenador y carga en IDE el ejemplo BLINK 2. CONECTA EL ÁNODO DE UN DIODO LED AL PIN 13 Y EL CÁTODO A GND 3. Observa como el diodo LED se pone a parpadear. Ahora busca en el programa la función DELAY y modifica su valor numérico. Verás como parpadea más lento o más rápido según el valor que hayas asignado 6
Conectando el hardware Para conectar los dispositivos y componentes de un circuito tendrás que utilizar una placa de circuito impreso o una Protoboard. OBSERVA ESTE EJEMPLO Esquema eléctrico de un circuito para controlar el encendido de un diodo LED, según el nivel de iluminación detectado por un sensor LDR CIRCUITO DE ENTRADA CIRCUITO DE SALIDA ARDUINO 7
Conectando el hardware Tendréis que hacer acopio de una resistencia de 10 K, una de 470 ohm, un diodo LED y un sensor LDR Y conectarlos de la siguiente forma: CIRCUITO DE ENTRADA CIRCUITO DE SALIDA Vcc Señal de salida ARDUINO Señal de entrada GND 8
Conectando el hardware Observa como son las conexiones en Arduino Realiza el listado de cableado Haz una lista de cables que se hayan conectado entre los componentes y los terminales de Arduino CIRCUITO DE ENTRADA CIRCUITO DE SALIDA 9
Escribiendo el software Escribe el siguiente código y fíjate bien en las expresiones que se emplean para cada línea. Trata de interpretar el programa. // Sensor de luminosidad // Utilizando una LDR como sensor de entrada // Y un LED conectado a una salida digital int LED = 11; //El LED esta en el pin 11 int LDR = A 0; //El sensor en la entrada A 0 int LDR_val = 0; //Variable para almacenar lectura int UMBRAL = 500; void setup() { pin. Mode(LED, OUTPUT); // Define pin del LED como salida } void loop() { LDR_val = analog. Read(LDR); // Lee el valor luminosidad if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevadado. . . { digital. Write(LED, HIGH); // se enciende el LED } } // Sensor de luminosidad // Utilizando una LDR como sensor de entrada // Y un LED conectado a una salida digital int LED = 11; //El LED esta en el pin 11 int LDR = A 0; //El sensor en la entrada A 0 int LDR_val = 0; //Variable para almacenar lectura int UMBRAL = 500; void setup() { pin. Mode(LED, OUTPUT); // Define pin del LED como salida } void loop() { LDR_val = analog. Read(LDR); // Lee el valor luminosidad if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 10
Interpreta el software Asignación de valores numéricos a expresiones de constantes (LED, LDR, LDR_val y UMBRAL) Parte Setup = Preparación del programa. Esta función se ejecuta una única vez y es empleada para configurar el pin. Mode Función Loop = Incluye el código que va a ser ejecutado continuamente (leyendo las entradas de la placa, salidas, etc. ) // Sensor de luminosidad // Utilizando una LDR como sensor de entrada // Y un LED conectado a una salida digital int LED = 11; //El LED esta en el pin 11 int LDR = A 0; //El sensor en la entrada A 0 int LDR_val = 0; //Variable para almacenar lectura int UMBRAL = 500; void setup() { pin. Mode(LED, OUTPUT); // Define pin del LED como salida } void loop() { LDR_val = analog. Read(LDR); // Lee el valor luminosidad if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 11
Los tipos de datos en Arduino permite manejar los siguientes tipos de datos: BYTE Almacena un valor numérico de 8 bits. Tienen un rango de 0 -255. LONG �Valor entero (LONG INTEGER) almacenado en 32 bits con un rango de 2, 147, 483, 647 a 2, 147, 483, 648. INT Almacena un valor entero (INTEGER) de rango de 32, 767 a -32, 768. FLOAT Tipo coma flotante almacenado en 32 bits con un rango de 3. 4028235 E+38 a - 3. 4028235 E+38. Arrays: Se trata de una colección de valor es que pueden ser accedidos con un número de índice (el primer valor del índice es 0). Observa este ejemplo de utilización: • Definición y asignación. int my. Array[] = {value 0, value 1, value 2. . . } • Definición. int my. Array[5]; // declara un array de 6 enteros • Asignación del cuarto componente. my. Array[3] = 10; • Recuperar el cuarto componente y asignarlo a x. x = my. Array[3] 12
Funciones con las entradas y salidas en Arduino Función pin. Mode(pin, mode) Se emplea en la función setup() para determinar el comportamiento del terminal “pin” como entrada (INPUT) o como salida (OUTPUT). Los terminales de Arduino funcionan por defecto como entradas. Esto significa que no es necesario declarar el comportamiento de un terminal como entrada empleando esta función pin. Mode(). Por ejemplo, la expresión pin. Mode(11, OUTPUT); configura el pin número 11 como de salida. 13
Funciones con las entradas y salidas en Arduino Función digital. Read(pin) Devuelve el valor de un terminal digital específico. Devuelve un valor alto (HIGH) o bajo (LOW). El pin puede ser especificado con una variable o una constante (0 -13). Por ejemplo en la expresión V = digital. Read(Pin); el valor digital de la variable Pin se trasladará a la variable V. Función digital. Write(pin, value) Se escribe en el terminal PIN un nivel alto (HIGH) o nivel bajo (LOW) que se indicará en el lugar de VALUE. En lugar de un número (0 -13) de terminal se puede especificar una variable 0 -13. Por ejemplo, para hacer que aparezca un valor lógico HIGH en el terminal 11 se utilizará la expresión digital. Write(11, HIGH); 14
Funciones con las entradas y salidas en Arduino Función analog. Read(pin) Mediante analog. Read, se lee el valor del pin analógico con resolución de 10 bits (210 combinaciones = 1024). Esta función solo es aplicable en los pines analógicos (terminales de 0 a 5). El valor resultante es un entero de 0 a 1023. Los pines analógicos, a diferencia de los digitales no necesitan declararse previamente como INPUT o OUTPUT. Función analog. Write(pin, value) Escribe un valor analógico. Esta función está activa para los pines 3, 5, 6, 9, 10, 11. Por ejemplo, la expresión analog. Write(3, v); indica que se escribirá el valor de “v” en el terminal 3 analógico. Se puede especificar un valor entre 0 y 255 (lo que corresponde a una resolución de 8 bits). El rango analógico es de 0 -5 voltios, con lo que un valor 0 genera 0 V en el pin especificado y 255 genera 5 V. Para valores de 0 a 255, el pin alterna rápidamente entre 0 V y 5 V, cuanto mayor sea el valor, más a menudo el pin se encuentra en HIGH (5 V). Por ejemplo, un valor de 64 será 0 V tres cuartas partes del tiempo y 5 V una cuarta parte. Un valor de 128 será 0 V la mitad del tiempo y 5 V la otra mitad. Un valor de 192 será 0 V una cuarta parte del tiempo y 5 V tres cuartas partes. 15
Funciones con las entradas y salidas en Arduino Funciones de tiempo y funciones matemáticas Función delay(ms). Realiza una pausa en el programa la cantidad de tiempo en milisegundos especificada en el parámetro (entre 1 y 1000). � Función millis(). Devuelve la cantidad de milisegundos que lleva la placa Arduino ejecutando el programa actual. Después de 9 horas el contador se resetea. Función min(x, y). Devuelve el valor mínimo de los valores de x e y Función max(x, y). Devuelve el valor máximo de los valores de x e y 16
Funciones con las entradas y salidas en Arduino Funciones de generación aleatoria Función random(max) devuelve un valor aleatorio entre 0 y el número max Función random(min, max) devuelve un valor aleatorio entre los valores min y max Función random. Seed(seed) Especifica un valor inicial (semilla) como el punto de inicio para la función random(). Este parámetro debe ser realmente aleatorio y para ello puede emplearse la función millis() o incluso analog. Read() para leer ruido eléctrico desde una entrada analógica. 17
La sintaxis condicional La sintaxis empleada para definir una condición es ya casi universal en todos lenguajes de programación. La estructura propone una prueba lógica con dos respuestas (SI = CIERTO) o (NO=FALSO) Prueba o pregunta SI NO Acción B Acción A 18
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿PREPARADO PARA CONTESTAR UNAS PREGUNTAS DE RECONOCIMIENTO? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 19
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿Cuál es la prueba o pregunta en este código? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 20
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿Cuál es la prueba o pregunta CIERTA en este código? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 21
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿Qué ocurre si la prueba es CIERTA? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 22
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿Qué ocurre si la prueba es CIERTA? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 23
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿Cuál es el caso opuesto de la prueba o pregunta? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 24
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿Cuál es el caso opuesto de la prueba o pregunta? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 25
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿Qué ocurre si la prueba es FALSA? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 26
La sintaxis condicional Observa este algoritmo y mira como es el código para Arduino ¿Qué ocurre si la prueba es FALSA? Prueba o pregunta SI Acción A NO Acción B if (LDR_val >= UMBRAL) // Comprueba si el nivel es bajo { digital. Write(LED, LOW); // si es bajo, se apaga el LED } else if (LDR_val < UMBRAL) // Si el nivel es elevado. . . { digital. Write(LED, HIGH); // se enciende el LED } } 27
Revisa el montaje y el código de este programa y explica como funciona Hardware Software int led. Pin= 13; // el terminal 13 se llama LED int in. Pin= 5; // el terminal 5 se llama in. Pin (es el pulsador) int val= 0; // variable para leer el status del terminal void setup() { pin. Mode(led. Pin, OUTPUT); // declara el LED como salida pin. Mode(in. Pin, INPUT); // declare el pulsador como ENTRADA } void loop(){ val= digital. Read(in. Pin); // lee valor de entrada if(val== HIGH) {// chequea si el valor leído es “ 1” (botón presionado) digital. Write(led. Pin, LOW); // pone el LED en OFF } else{ digital. Write(led. Pin, LOW); // parpadea el LED delay(200); digital. Write(led. Pin, HIGH); delay(200); } } 28
Revisa el montaje y el código de este programa y explica como funciona Hardware Software int led. Pin= 13; // el terminal 13 se llama LED int in. Pin= 5; // el terminal 5 se llama in. Pin (es el pulsador) int val= 0; // variable para leer el status del terminal void setup() { pin. Mode(led. Pin, OUTPUT); // declara el LED como salida pin. Mode(in. Pin, INPUT); // declare el pulsador como ENTRADA } void loop(){ val= digital. Read(in. Pin); // lee valor de entrada LA RESPUESTA ES : if(val== HIGH) {// chequea si el valor leído es “ 1” (botón Cuando se pulsa el pulsador (entrada 5 a “ 0”) se enciende y se presionado) digital. Write(led. Pin, LOW); // pone el LED en OFF apaga de forma intermitente la salida 13. Esto hace que } else{ Arduino se comporte como una alarma cuando alguién toca el digital. Write(led. Pin, LOW); // parpadea el LED delay(200); pulsador, emitiendo una intermitencia en el actuador visual digital. Write(led. Pin, HIGH); (LED) delay(200); } } 29
3. 0 TALLER DE ARDUINO Ahora, experimentad en clase y practicad con otros montajes. Poneos ahora en marcha para utilizar vuestro Arduino en el desarrollo de vuestra innovación 30