INICIO

sábado, 13 de junio de 2015

1.08 Variables, melodías



1.08.1. ¿Qué es una variable?
Una variable es una representación en lenguaje natural de una posición de memoria de un dispositivo digital.
Un buen ejemplo para comprender esto sería la lista de contactos de un teléfono. Seguro que no eres capaz de recordar de memoria todos los números de teléfono de la gente que conoces, pero si sus nombres. De modo que cuando los buscas en tu libreta de contactos, los buscas por nombre. El nombre sería el equivalente a la variable. Se trata de la dirección de memoria en la que almacenas el número de teléfono.
El compilador de tus programas, se encarga de convertir las variables a direcciones de memoria, de modo que tu no tengas que preocuparte de en que lugares de la memoria de tu dispositivo se almacenarán los valores.
1.08.2. Ejemplos de variables
Las variables pueden representar diferentes tipos de valores. Por ejemplo, te puede interesar almacenar el número de teléfono de tus amigos, eso es un número, probablemente de 9 dígitos. Por otra parte, te puede interesar almacenar su edad, algo que ocupa como mucho tres dígitos.
A primera vista está claro que no necesitamos la misma cantidad de memoria para almacenar los teléfonos que la edad. Hará falta trozos de memoria de mayor tamaño para los primeros que para los segundos. Decimos que los valores almacenados por las variables teléfono y edad son de diferentes tipos. Un tipo de variable define que clase de información almacena esa variable.
Los principales tipos de variables dentro de Arduino son:
·         byte: un número entero entre 0 y 255, es decir, un número de 8 bits.
·         int: un número entero de 16 bits.
·         long: un número entero de 32 bits.
·         float: un número decimal.
·         String: un conjunto de caracteres.
·         char: un símbolo del lenguaje escrito.
·         boolean: una variable de tipo booleano.
1.08.3. Arrays
Un ARRAY es una composición de varias posiciones de memoria consecutivas almacenando el mismo tipo de dato. Se utiliza para simplificar la nomenclatura de las variables en tus programas.
Imagina que quieres almacenar los números de teléfono de todos tus amigos. Una posibilidad sería tener una variable para el teléfono de cada uno: telefono1, telefono2, etc. La otra sería tener una variable llamada teléfonos que pudiera, de algún modo, almacenar los números de todos. La forma en que se accede a la información de cada celda por separado es mediante el uso de llaves cuadradas al final del nombre de la variable. Dentro de las llaves se escribe un número, llamado índice, que indica que valor de celda tomar.
Un array lo que hace es añadir una variable de índice al nombre de variable, de modo que puedas almacenar una secuencia de valores del mismo tipo. En el caso de los teléfonos, lo que tendríamos sería que el número de tu primer amigo estaría en teléfono[0], el segundo en teléfono[1], y así sucesivamente.
1.08.4. Toca una melodía
Abre el ejemplo “Archivo → Ejemplos → Digital → toneMelody”. Aquí ves como la melodía se almacena en una estructura como esta:
int melody[] = { NOTE_C4, ... NOTE_C4};
Eso es lo que llamamos un array. Si sencillamente conectas un altavoz al pin 8, podrás escuchar la melodía tocada por este ejemplo.
1.08.5. Repaso de funciones de programación: bucle for
El bucle for es una función que es común a muchos de los lenguajes de programación existentes. La sintaxis es: for( inicio; final; incremento) . Se utiliza para repetir una acción un número determinado de veces que queda determinada por la diferencia entre la condición final y la de inicio y el incremento entre las dos condiciones. En esta actividad lo utilizamos para iterar operaciones sobre los arrays de notas y de duraciones de las mismas.
1.08.5. Aplicaciones educativas
Comprender como se usan los arrays es fundamental para el trabajo con estructuras de datos de tamaños relativamente grandes. El uso de arrays da, además, la excusa perfecta para recapitular el uso del bucle for, que es una herramienta de software fundamental existente en todos los lenguajes de programación.

1.07 Generación de sonido



1.07.1. ¿Sonido con microcontroladores?
La generación de sonido consiste en crear el sonido directamente desde el dispositivo, es diferente de la reproducción. Los microcontroladores son capaces de generar sonido siguiendo diferentes técnicas. Aquí vamos a explorar la forma más sencilla de tocar sonido.
1.07.2. Ejemplo de programa: BEEP
Para comenzar a tocar sonido, sólo tienes que conectar un altavoz de papel o un piezo eléctrico entre dos pines de tu microcontrolador. En concreto tendrás que conectar uno de sus pines a tierra (GND, del inglés ground) y el otro a un pin digital. En las transparencias de la actividad, lo hemos conectado al pin digital 8.
El siguiente paso consiste en abrir el ejemplo BLINK y en editarlo para que pueda ser utilizado con el altavoz. Como sabes, BLINK enciende y apaga el pin 13, en este caso quieres usar el pin 8. Por lo tanto, modifica el valor del pin en las diferentes funciones que uses en tu programa: pinMode y digitalWrite.
Descarga el programa en tu placa y oiras que, ahí donde el led parpadeaba antes, ahora oyes un pequeño chasquido una vez cada segundo. Este es el resultado de estimular el altavoz con electricidad. El altavoz está hecho de un electro-imán que mueve un cono de papel. Al moverlo, hace vibrar el aire, efecto claramente audible para las personas.
Si cambias el retardo dentro de la función delay de 1000 a un número más pequeño, toma por ejemplo 1, el sonido se modulará en un tono claramente audible. Si tienes una serie de alumnos haciendo esto simultáneamente, tu aula se transformará en un ejambre de abejas zumbando al mismo tiempo.
En inglés, un zumbido es lo que se conoce como beep, es por esto que a este programa, le llamamos BEEP en lugar de BLINK.
Finalmente, te darás cuenta de que la función delay no permite usar decimales, lo que reduce en mucho la capacidad de experimentar con el sonido. Dentro de Arduino hemos creado otra función, llamada delayMicroseconds, que tiene 1000 veces más resolución temporal. Para que te hagas a la idea, la siguiente ecuación muestra la relación de duración entre las funciones delay y delayMicroseconds:
delay(1) = delayMicroseconds(1000)
Gracias a este cambio de resolución, es posible reproducir los sonidos de los tonos de la escala musical. Si por ejemplo cambias el retardo de 1000 a 1136, estarás tocando el tono La (A4) con tu Arduino.
1.07.3. Tocar tonos, notas y melodías
El uso de los tonos es tan frecuente con Arduino, que hemos creado una librería de código, es decir, un conjunto de funciones, con las que tocar diferentes tonos. Puedes ver un ejemplo, si llamas al programa “Archivo → Ejemplos → Digital → toneMultiple”, donde puedes ver como una serie de funciones “tone” lanzan sonidos a través de diferente pines.
Aquí ves dos funciones nuevas:
·         tone(pin, freq) → toca una tono en un pin a una frecuencia fija
·         tone(pin, freq, dur) → idem, pero por un tiempo determinado
Para ver mejor el efecto de esto, sencillamente cambia el primer parámetro de todas las llamadas a la función “tone” por 8.
1.07.4. Pestañas en el IDE, definición de constantes
El IDE tiene la posibilidad de añadir pestañas (en inglés “tabs”) para ordenar el código. El ejemplo anterior traía una pestaña extra con información sobre frecuencias de tonos.
Para poder usar las definiciones de los tonos, tienes que usar un comando llamado #include. Este comando, seguido por el nombre de la pestaña entre paréntesis (nota que la pestaña tiene un nombre terminado en *.h) se pone al principio de tu programa. Esto hace que todo lo contenido dentro de ese ficher *.h se declare antes de que empiece a ejecutarse el programa.
Si te fijas dentro de la pestaña del ejemplo, llamada “pitches.h”, lo que hay es una serie de llamadas al comando #define. Este comando sirve para declarar constantes. Solemos declarar las constantes con mayúsculas, algo que no es obligatorio, pero se considera un buen uso el lenguaje.
Por otra parte, te darás cuenta de que tanto #include, como #define, son comandos que no tienen punto y coma al final. La razón de esto es que son comandos que no se compilan igual que el resto del programa.
El compilador hace dos pasadas por tu código. En la primera, elimina todos los comentarios y crea un solo archivo temporal muy largo, en el que subsituye todo lo que este marcado con almohadilla (#) por su valor real. En la segunda pasada, hace la compilacion.
1.07.5. Otros métodos para tocar sonido
Existen otras alternativas para tocar sonido. Este no es el momento de profundizar en ellas, por lo que sencillamente las mencionamos:
·         PCM o Pulse Code Modulation, consiste en tocar sonido haciendo que un solo pin oscile a muy alta frecuencia, es lo que se usa en los reproductores de CD.
·         ficheros WAV sobre memorias SD, hay shields que pueden hacer esto.
·         reproductores MP3 como shields de Arduino.
·         activar solenoides que golpeen objetos.
1.07.6. Aplicaciones educativas
Esta actividad es de mucha utilidad a la hora de buscar ejemplos prácticos que sean llamativos para los estudiantes. Además muestra una relación directa entre la manipulación de variables en código y como esto afecta al mundo físico.

1.06 Verificar y cargar



1.06.1. Definición: ¿Qué es verificar y cargar?
Verificar es lo que en lenguaje informático se conoce como “compilar”. Es la acción del IDE de Arduino que transforma el código fuente (el programa tal y como lo leemos al escribirlo) en código máquina (el programa tal y como lo ejecuta la placa Arduino). La acción de verificar no implica nada más que la compilación.
Por otra parte, cargar consiste en tomar ese fichero compilado tras la verificación y grabarlo en la memoria flash de la placa Arduino. Para la placa Arduino Uno, el programa se envía por el cable USB. Para otros modelos de placa, el programa se podría enviar, por ejemplo, por Bluetooth o WiFi.
Las dos acciones: verificar y cargar, son invisibles al usuario. Sólo se manifiestan a través de la barra de estado situada bajo el editor en el IDE.

1.05 El IDE



1.05.1 Definición: ¿Qué es un IDE?
IDE, del inglés Integrated Development Environment es un sistema de desarrollo de software. Se utiliza para la creación de programas que compilar y descargar en tu placa microcontroladora.

1.04 Arduino



1.04.1. Definición: ¿Qué es Arduino?
Arduino es una plataforma de prototipado que incluye circuitos electrónicos, software y documentación abiertos. Toda la información oficial sobre Arduino la puedes encontrar en la página web: http://arduino.cc.
Arduino tiene usos industriales y dentro del hogar, pero se aplica mayormente dentro del campo educativo por su sencillez de uso y su bajo coste.

1.03 Actuadores


1.03.1. Definición: ¿Qué son los actuadores?
Los actuadores son dispositivos electrónicos, transductores, que pueden afectar el entorno transformando un valor digital en un movimiento mecánico, la producción de sonido, un cambio de temperatura, o de intensidad de la luz.

1.02 Sensores



1.02.1. Definición
Un sensor es un dispositivo, también conocido como transductor, que puede medir un dato del entorno para digitalizarlo y así poder usarlo dentro de un sistema con capacidad de computo. En otras palabras, es un sistema, componente electrónico, o dispositivo electrónico capaz de capturar una cualidad del entorno para transferirla a un ordenador.