lunes, 8 de abril de 2019

ArduinoBlocks

Si te parece complicado el IDE de Arduino, sobre todo en algunos programas más elaborados y con librerías complejas, tal vez te interese utilizar ArduinoBlocks .
Se trata de un software gráfico muy intuitivo online. Únicamente debes darte de alta y descargar una pequeña aplicación para el ordenador en este enlace


Práctica 16. Manejando sensores. Sensor IR

Ahora aprenderemos a manejar un sensor IR para, mediante un mando IR enviar información que nos puede servir en aplicaciones de domótica: encender led a distancia, poner en marcha y apagar motores, etc...

El programa básico sería el siguiente. Este programa sólo nos muestra en el puerto serie los códigos del mando para que nosotros lo modifiquemos poniendo unos cuantos
if(codigo==******) {
               digitalWrite(5,HIGH);
}
y controlar distintos actuadores dependiendo del código que nos envíe el mando.


  1. Modifica el programa para que nos permita encender y apagar un led, enceder y apagar un piezo, etc  con el mando

Práctica 15. Manejo de sensores. Ultrasonidos

Una forma típica de darle ojos a nuestros robots es con los sensores de ultrasonido.

la conexión es:

Los sensores ultransónicos tienen 4 pines: Tierra, 5V, Trigger(lanza los pulsos) Echo (recibe los pulsos después de rebotar en el objeto)





  1. Completa el programa anterior para que a medida que esté mas cerca el objeto los pitidos se produzcan de manera más aguda o con una intermitencia más rápida. 
  2. Puedes poner también LEDs que se vayan encendiendo según sea la distancia, ...

Práctica 14: Manejo de sensores. Sensor capacitivo

Vamos a ver cómo podemos hacer esto:


Como no tenemos frutas lo haremos tocando el extremos del cable

La conexión sería:


El programa base sería:
Las líneas marcadas en amarillo son las específicas de este sensor.
Utilizamos el puerto serie para leer los valores que nos da el sensor y tomar la decisión de lectura>500 u otro valor.



  1. Prueba a cambiar la resistencia por otra mayor. ¿Qué ocurre?
  2. Puedes añadir mas sensores y que suene otra nota. De ese modo podemos hacer un minipiano. (puedes utilizar todos los pines menos el 0 y el 1)
  3. También podrías hacer un juego de reflejos de modo que cuando ocurra algo el primero que toque gana. O un juego de pulso de modo que no se puede tocar una zona metálica dentro de algo que sea de plástico, ...


Práctica 13. Manejo de sensores. Ruido

El sensor KY-038 nos permite detectar un ruido instantáneo como una palmada, un golpe, ... Con ello podemos desencadenar un efecto: Encendido de LED, lámpara, funcionamiento de un motor, ...



El programa base podía ser el siguiente, en el que cuando se detecta un sonido, aparece en el puerto serie la palabra "sonido".

  1. Modifica este programa para que se encienda un led cuando se da una palmada. Permanezca 2 segundos y se apague.
  2. Puedes modificarlo de modo que se encienda con una palmada y se apague con otra.
  3. Pon un led RGB y con una palmada se pone rojo con otra, verde y con otra azul. A los dos segundos se apaga.
  4. ...



Práctica 12. Manejo de sensores. Sensor B/N Infrarrojo

El  Sensor TCRT5000 IR infrarrojo seguidor de línea nos permite distinguir entre el color blanco y negro. Esto nos facilita la tarea a la hora de programar un coche que se guíe por una linea negra sobre fondo claro o al revés.



para comprender su funcionamiento realicemos la siguiente práctica.


  1. Vamos a visualizar por el puerto serie la palabra blanco o negro según sea el color sobre el que se encuentre nuestro sensor.
    1. Para ver que nos da el sensor pon este programa y observa (en el puerto serie) que ocurre cuando ponemos el sensor sobre blanco o negro
    2. Modifica el programa para que ponga "blanco" o "negro"
  2. Modifica el programa para que suene una nota en caso de blanco y otra en caso de negro.






Práctica 11. Manejo de sensores (DHT11)

En esta práctica explicaré cómo manejar un sensor de humedad y temperatura DHT11.
La parte electrica sería:

Lo primero debemos incluir una librería que tal vez no esté instalada.
Para ello ve al menú Programa>>incluir librería>>  y buscamos la librería DHT. Si no está debemos instalarla en el apartado gestionar librerías


Os aparecerá una ventana como esta: En el campo de búsqueda escribís DHT e instaláis la marcada (DHT sensorlibrary by Adafruit)


Una vez instalada la incluis en el sketch.

1. El programa que aparece a continuación os imprime en el puerto serie los valores de la temperatura y humedad en cada instante. Trata de comprender el significado.


2. Añade un LED RGB de modo que cuando la temperatura esté por encima de un valor se ponga rojo y si está por debajo se ponga azul.

martes, 2 de abril de 2019

Práctica 10: El LED RGB

Investiga como funciona un LED RGB con cátodo común.

La conexión sería:


1. Haz un programa que haga cambiar de color el LED RGB. Cada 2 segundos cambiará de rojo a verde y después a azul, repitiendo este ciclo.
Recuerda que cada patilla debe llevar una resistencia de protección de unos 300 Ohmios. La patilla común no necesita una resistencia y va conectada a GND.

2. Haz un programa que haga que el led vaya cambiando paulatinamente de color.

3. Crea una función a la que se le pasen tres enteros (rojo, verde y azul) que ilumine el LED del color que queramos. Si no sabes crear una función pregunta al profe.

Práctica 9: El Puerto serie

El puerto serie es una forma de comunicar Arduino con otros dispositivos, para enviar o recibir datos. El envío se lo haremos típicamente por teclado, aunque podría hacerse vía Bluetooth (mediante una app de terminal en un móvil, p.ej.) o a través de una WIFI

Para acceder a él hay dos posibilidades:



Todos los programas deben tener estas órdenes

void setup() {
  Serial.begin(9600);
}

void loop() {
Serial.println(“Hola, mundo”);
}


  1. Escribe el programa anterior. Cambia println por print y observa qué pasa.
    1. Mira lo que pasa con el autoscroll y añade un delay para no saturar el puerto.
    2. Prueba las ordenes Serial.print("\t"); Serial.print("\n")
  2. Escribe en el monitor Serie una cuenta atrás de diez a cero (bucle FOR) y la palabra “BOOM”.  Necesitarás una variable. 
  3. Escribe en el Serial Plotter la función raíz cuadrada de x (u otra que quieras) entre cero y 1000.  Utiliza un bucle for() y delay para ir dando valores a la x
  4. prueba este programa con el serial plotter


práctica 8: El display 7 segmentos

Vamos a trabajar con el display de 7 segmentos. Mira en el dibujo cómo son las conexiones de los LEDs y conecta los terminales a, b, c, d, e, f y g a los pines 2 ... 8. y el GND a GND de Arduino.



1. Haz un programa que vaya poniendo números del cero al 9 cada segundo.
2. Añade un zumbador y que vaya dando una nota cada vez que cambie el segundero.


Proyecto: Crea un dado electrónico. Cuando pulsemos un pulsador debe aparecer un número del 1 al 6 al azar (investiga cómo se generan números al azar)
Ayuda: Genera un número al azar y cárgalo en una variable. Con un IF ... selecciona la opción que esté almacenada en la variable encendiendo los LEDs correspondientes.

Práctica 7: Entrada analógica: LDR

Vamos a ver cómo funciona una LDR.
La LDR (Light-Dependent Resistor) es un componente electrónico que modifica su resistencia dependiendo de la luz que incida sobre ella.

Realiza el siguiente montaje:
NOTA: utiliza una resistencia de 1k

1. Haz un programa que encienda un led cuando el valor de la LDR (0-1023) no supere los 500 y lo apague en caso contrario.

2. Puedes sustituir el led por un piezo y varías la frecuencia según el valor del la LDR. ¡A ver que ocurre...!



Por si no das con los programas:


Proyecto: Theremin controlado por luz. 

Un Theremin es un instrumento que genera sonidos mediante el movimiento de las manos de un músico alrededor de este instrumento. Probablemente habrás oído alguno de ellos en películas de terror. El Theremin detecta dónde se produce el movimiento de la mano del artista en relación a dos antenas al poder leer la variación de la carga capacitiva de estas antenas. Las antenas se conectan a un circuito analógico que crea los sonidos. Una de las antenas controla la frecuencia del sonido y la otra controla el volumen. 
Nosotros no podemos variar el volumen pero sí la frecuencia.

Realiza el siguiente montaje. La resistencia de la LDR es de 10K.

NOTA de AYUDA: La lectura de la LDR la utilizaremos como frecuencia en la función tone del piezo. 
frecuencia=analogRead(A5);

tone(6,frecuencia, 500);
delay(500);

Pero el problema es que tomará valores entre 0 y 1023. Sin embargo la frecuencia en el piezo puede variar entre 50 y 4000 Hz. Existe una función que transforma los valores comprendidos en un rango a valores en otro rango.
frecuencia=map(frecuencia, 0,1023,50,4000);




Práctica 6: Entradas Analógicas. El potenciómetro

Arduino UNO cuenta con 5 entradas puramente analógicas (pines A0…A5). Si necesitamos este tipo de entradas (sensores de luz, movimiento, distancia, temperatura, …) debemos utilizar estos pines.

Añade un potenciómetro al montaje del ejercicio anterior:



1. Ahora la variable brillo almacena el valor leído por el potenciómetro
           brillo = analogRead(A0);

NOTA: el valor de brillo debe estar desde 0 hasta 255. Sin embargo la lectura del potenciómetro está entre 0 y 1023. Así pues habrá que dividirla por cuatro para adaptarla.

2. Conecta un piezo y utiliza ahora la variable brillo como frecuencia para el piezo. ¿Qué ocurre al variar el potenciómetro?


Si no das con el programa:




Práctica 5: Salidas analógicas

Hemos visto  que las placas Arduino tienen pines digitales que pueden actuar como entradas y salidas digitales.
Ahora veremos que algunos de estos pines pueden simular una salida analógica.
No todos los pines admiten este tipo de salida. Sabemos cuales porque al lado de su número aparece el símbolo ~. A estas señales se les llama PWM (pulse width modulation)

Realiza el siguiente montaje:

1. Conecta un LED a un pin analógico y haz un programa en el que El LED va incrementando su brillo y después se va apagando lentamente. Utiliza un bucle for para ir incrementando (de 5 en 5 desde 0 a 255)  y decrementando  (de 5 en 5 desde 255 a 0) el brillo
Utiliza analogWrite(pin, brillo). donde brillo es una variable que se varía con un bucle for.


Si no das con el programa:

.

Práctica 4: Hacemos música. Zumbador pasivo

Un zumbador pasivo o piezoeléctrico es un componente electrónico formado a partir de la combinación de dos discos de distintos materiales. Uno de ellos es metálico y el otro, generalmente es de cerámica, y ambos tienen propiedades piezoeléctricas. Cuando se le aplica un voltaje al componente, los materiales se repelen produciendo un "clic" audible (chasquido). Al poner a cero la diferencia de tensión (dejar de aplicar el voltaje), los materiales vuelvan a su posición inicial, produciendo de nuevo un sonido de “clic”. Al aplicar y dejar de aplicar el voltaje en el piezo rápidamente se generan diferentes tonos

Para que funcione debemos alternar activaciones con desactivaciones.
Cuanto mayor sea la velocidad de ese cambio (frecuencia) más agudo será el sonido

void setup() {
  pinMode(8, OUTPUT);
}
void loop() {
  digitalWrite(8, HIGH);   
  delay(1000);              
  digitalWrite(8, LOW);    
  delay(1000);                    
}


Para facilitar la tarea usaremos la orden de Arduino: 

tone(pin,frecuencia,duración);   
Frecuencia en Hz, duración en ms. 

Si no se especifica duración suena indefinidamente hasta que se manda otro sonido o bien se manda la orden de silenciar
 noTone(pin).  

El sonido se ejecuta en background, eso quiere decir que el programa manda la orden de que suene y sigue ejecutando las órdenes siguientes. Si pones varios sonidos seguidos, se solaparán y no sonarán bien. Hay que incluir un delay de la misma duración que la nota para que la siguiente suene en su lugar correcto. 

Ejercicios:
  1. Haz un programa que haga sonar varias notas.
  2. Juega con la duración de las notas. Haz un programa con la melodía del cumpleaños feliz u otra sencilla.
  3. Haz un programa que vaya haciendo sonar frecuencias y mostrándolas en el puerto serie.
Proyecto: Haz un programa que dispare una alarma cuando el potenciómetro sobrepase un valor. Por ejemplo, parpadeo y pitidos.