Beruflich Dokumente
Kultur Dokumente
Un joystick suele estar formado por dos potenciómetros a 90º que transforman el movimiento, X e Y
del mando, en una señal eléctrica proporcional a su posición y que además suele incluir un botón.
Así pues, suelen tener cinco pines: X, Y, botón y 5V y GND.
Vamos a montar un circuito con un servo como ya hicimos y usaremos uno de los ejes del joystick
para posicionarlo, y si pulsamos el botón encendemos un LED. (Ignoraremos el otro eje Y, aunque
podríamos usarlo para posicionar un segundo servo).
El pin correspondiente al botón suele venir marcado como SW de Switch.
//EJE Y
int q = analogRead(A1);
if ( q < 400 ){ // Si la lectura es menor de 400
anguloY = anguloY - salto ; // Disminuimos el angulo
if (anguloY<=20) anguloY=20; //ajustar a nuestro brazo para no forzarlo
}else if (q > 600){ // Si mayor de 600
anguloY = anguloY + salto ; // Aumentamos el angulo
if (anguloY>=150) anguloY=150; //ajustar a nuestro brazo para no forzarlo
}
servo2.write(anguloY); // Mueve el servo 2
delay (25); // regula la velocidad del movimiento
}
Arduino y el puerto serie
Prácticamente todas las placas Arduino disponen al menos de una unidad UART. Nuestras placas
Arduino UNO operan a nivel TTL 0V / 5V, por lo que son directamente compatibles con la conexión
USB.
Los puertos serie están físicamente unidos a distintos pines de la placa Arduino. Lógicamente,
mientras usamos los puertos serie no podemos usar como entradas o salidas digitales los pines
asociados con el puerto serie en uso. En Arduino UNO los pines empleados son 0 (RX) y 1 (TX).
No debemos acostumbrarnos a usar el puerto serie si realmente no necesitamos comunicar con el
ordenador. Las librerías empleadas para el uso de puerto serie ocupan un tamaño considerable, y
sólo debemos emplearlas si realmente las necesitamos. Además, supone inhabilitar de forma
innecesaria los pines digitales asociados.
Para realizar la conexión mediante puerto serie únicamente es necesario conectar nuestra placa
Arduino empleando el mismo puerto que empleamos para programarlo. A continuación abrimos el
IDE Standard de Arduino y hacemos click en el “Monitor Serial” como se indica en la imagen.
El monitor de puerto serie es una pequeña utilidad integrada dentro de IDE Standard que nos permite
enviar y recibir fácilmente información a través del puerto serie. Su uso es muy sencillo, y dispone de
dos zonas, una que muestra los datos recibidos, y otra para enviarlos. Estas zonas se muestran en la
siguiente imagen.
void loop()
{
Serial.print("Contador: "); //Imprimimos el valor del contador
Serial.println(cont);
//incrementamos el contador y esperamos un segundo
cont++;
delay(1000);
}
int orden;
int led = 13;
void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop()
{ //si existe datos disponibles los leemos
if (Serial.available()>0)
{
orden=Serial.read(); //leemos la orden enviada
if(orden=='a') {
digitalWrite(led, LOW);
Serial.println("He apagado el LED");
}
if(orden=='b')
{
digitalWrite(led, HIGH);
Serial.println("He encendido el LED");
}
}
}
void loop()
{
El IDE de Arduino permite mostrar en una gráfica en tiempo real los valores recibidos por puerto
serie.
Encontramos el nuevo “Serial Plotter” en el menú “Herramientas”, justo al lado del tradicional “Serial
Monitor”.
void loop() {
float value;
value = random(100,300)/100.0;
Serial.println(value);
delay(100);
}
Por supuesto, en una aplicación real el valor mostrado sería una variable supervisada como, por
ejemplo, la medición realizada mediante alguno de los sensores que hemos visto. Igualmente,
deberíamos ajustar el tiempo entre envíos a la frecuencia de medición que deseemos.
Los mandos de infrarrojos
Nos parece normal que los equipos electrónicos, televisores respondan a nuestras instrucciones sin
levantarnos del sofá. Estos mandos funcionan por ondas de infrarrojos.
Las ondas electromagnéticas se caracterizan, principalmente, por su frecuencia.
En el espectro electromagnético, a medida que la frecuencia aumenta, nos encontramos con las
ondas de radio y luego con las microondas. Después como veis en este gráfico viene el infrarrojo, el
espectro de luz visible con los colores (Que solo son una forma en que nuestro cerebro percibe las
frecuencias de luz) y luego el ultravioleta.
Más arriba en la escala encontramos los rayos X y por último los rayos gamma o cósmicos.
La capacidad energética de la radiación crece rápidamente con la frecuencia y por eso los rayos X y
los gamma son muy dañinos para los seres vivos.
Una manera de describir los infrarrojos, seria como una luz con un color diferente, que no vemos.
Una curiosidad es que seguramente la cámara de tu teléfono móvil, o tableta es capaz de ver, y
mostrarte, la radiación IR de tus mandos a distancia.
La luz infrarroja es adecuada para hacer mandos a distancia porque:
- Utilizan luz en una frecuencia que no tienen consecuencias en los tejidos vivos.
- Tiene relativamente poco alcance, pero no solemos ver la tele o tener la cadena de música
más allá de 3 o 4 metros.
Así que es práctico, sencillo y barato, aunque tienen también inconvenientes. El principal es que
cualquier cosa con una cierta temperatura, incluidos nosotros, emitimos radiación infrarroja. Es por
eso que las cámaras IR pueden mostrar nítidamente en plena oscuridad a una persona o animal.
Y esto podría interferir con el mando a distancia IR, lo mismo que cosas como la calefacción, el sol y
demás cosas calientes. Así que la solución para evitarlo es modular la señal con una portadora.
La idea básica es mandar un tren de ondas estable (La portadora) y mezclarlo con la información que
queremos enviar (La señal). Este mismo principio se usa con la radio y casi con cualquier señal
radioeléctrica que se envié por el aire.
El emisor es un sencillo transistor que gobiernan un LED infrarrojo muy similar a los LEDs normales
que hemos usado hasta ahora, solo que diseñados para emitir luz en un color que no vemos.
Un pequeño procesador en el mando gobierna, la generación de la señal y la mezcla con la
portadora, para garantizar que nuestra tele no recibe órdenes espurias.
Los PIR más frecuentes son sensores de movimiento, y para ello están divididos en dos mitades de
forma que detecten el cambio de radiación IR que reciben uno y otro lado, disparando la alarma
cuando perciben ese cambio.
Habitualmente se adquiere con un pequeño circuito de estabilización y control, que nos permita usarlo
como un sensor digital directo.
Lo normal además es que estos sensores se recubran con pequeñas lentes de plástico que mejoren
su angulo de detección
La imagen muestra el sensor HC-SR501 con la lente puesta y quitada para que veáis el sensor
montado.
Debéis saber que estos sensores PIR pueden disparar directamente una alarma con una señal de
3.3V y son capaces de excitar pequeños relés, de modo que no necesitáis microcontroladores, si lo
único que se necesita es encender una luz o dispara una alarma.
Por eso vamos a hacer, en primer lugar, un pequeño circuito de prueba, de modo que nos sirva para
probar el sensor, y veais que se puede usar directamente.
Vamos a montar un circuito sencillo de detección de movimiento que encienda una LED cuando
perciba algo:
Fijaros que hay 3 pines en el lateral, que usaremos para pinchar el sensor PIR HC-SR501 a nuestra
protoboard, y aquí debajo os pongo el esquema de conexiones:
Como podéis ver enseguida, hay un par de potenciómetros que podemos usar para ajustarlo además
de un jumper para elegir modo. Vamos con ello.
Ajustando el sensor
Empezad por colocar el sensor en la misma posición que la imagen de arriba porque mi modelo no
trae rotulado ningún nombre.
He visto en Internet que recomiendan poner el jumper en la posición H para las primeras pruebas que
arriba está rotulado como Auto Reset, pero en mi caso me ha resultado más fiable sacar el jumper y
dejarlo al aire.
Fijaros que el modelo de la imagen este jumper no existe, pero la mayor parte de los modelos que
encontréis por ahí podréis seleccionar H o L, conectando el jumper entre el pin central y la selección
deseada o bien dejarlo sin conectar.
Para ajustar la sensibilidad podemos usar uno de los potenciómetros que incluye el sensor (Girando a
favor del reloj aumentamos la sensibilidad).
El segundo potenciómetro ajusta el tiempo que estará activa la señal de detección después de que
esta haya desaparecido. Pero parece que también afecta al retraso con que inicia la alarma, así que
es cuestión de que vayáis jugando para encontrar un punto adecuado para vuestra alarma.
La señal que os entrega el sensor HC-SR501 es digital todo o nada en cuanto detecta movimiento de
una fuente de calor. Se puede leer el sensor con un programa similar a este:
void setup()
{ pinMode( led , OUTPUT) ;
pinMode (sensor , INPUT);
}
void loop()
{ if (digitalRead( sensor))
digitalWrite( led , HIGH);
else
digitalWrite( led , LOW);
}