Barrera
Vamos ahora a realizar UN PROYECTO donde englobamos varios de los elementos que hemos visto en este curso, algo que visualmente tenga un sentido práctico y motivador en el alumnado
Utilizaremos:
- Placa Shield de Edubásica (optativo) por facilitar las conexiones
- Servo motor
- Dos sensores de ultrasonidos
- Módulo Bluetooth
- Imaginación y maña
Montaje 33 Barrera por Bluetooth
Retp 33
El propósito es que cuando se pulse la flecha arriba de la APP DEL MOVIL la barrera suba y se enciende la luz verde, y cuando se pulsa la flecha abajo, baje la barrera y se enciende la luz roja, esta es una manera eficaz de que nadie entre en el recinto si no está autorizado, y que mejor que con una aplicación móvil.
Montaje 33 Barrera por Bluetooth sin Edubásica
Hay que utilizar el esquema del servo
y el esquema del Bluetooth a la vez
Montaje 33 Barrera por Bluetooth con Edubásica
Nos simplifica el cableado, conectando el módulo Bluetooth en el zócalo correspondiente tal y como vimos
Con piezas de lego fijamos el servo y le añadimos un cartón que simule una barrera. El pin del servo lo conectaremos en el 7 de Edubásica, el Vcc y G a Vin y masa.
La configuración de los ángulos de abierto y cerrado depende en qué posición atornillamos la barrera, luego lo mejor es probarlo con el MONTAJE 25 TESTEA TU SERVO y en nuestro caso nos sale que 40º es abierto y 140º es cerrado.
Montaje 33 Barrera por Bluetooth VIDEO
- No hagas caso de los sensores de ultrasonidos por ahora, corresponde al siguiente montaje
- No desmontes las conexiones, te servirán para el siguiente montaje.
Montaje 33 Barrera por Bluetooth CODIGO
El programa en el Arduino es el siguiente:
https://create.arduino.cc/editor/javierquintana/e8bdf8fc-b5b8-4e27-8207-07ab3ccf6222/preview
Montaje 34 Barrera bluetooth y sensores ultrasonidos
Ahora le añadimos (esperamos que no hayas desmontado el montaje anterior) dos sensores de ultrasonidos, si detecta el coche a la entrada de la barrera, se enciende la luz amarilla en espera que el coche pueda abrir con el móvil.
Reto 34
-Una vez recibido el código de abrir barrera, se abre y se enciende la luz verde.
Una vez cruzado el coche, lo detecta el ultrasonido de la salida que cerrará la barrera poniendo el semáforo en rojo otra vez.
La configuración de pines de los ultrasonidos que hemos elegido esta en los comentarios del programa (o sea, dónde hay que conectar Trg y Echo de los sensores).
Si no tienes edubásica tendras que añadir los leds de semáforo, pincha aquí.
El programa por supuesto es mejorable (tiene fallos a ver si los adivinas).
String readString;
#include
#include
Servo myservo; // crea un objeto tipo servo para controlar el servo
int pos ; // variable para almacenar la posición del servo
byte dato=0;
int ledArriba = 3; //LED VERDE DE EDUBASICA
int ledCentro = 4; //LED AMARILLO DE EDUBASICA
int ledAbajo = 5; // LED ROJO DE EDUBASICA
///////////////// SENSOR ULTRASONIDOS 1 ENTRADA ///////////////
int trigPinE = 4; //CONECTAR AL D4 EL TRIG ULTRASONIDOS 1
int echoPinE = 2; //CONECTAR A D2 EL ECHO ULTRASONIDOS 1
long durationE; //tiempo de ida/vuelta
int cmE=0; //Para almacenar el valor obtenido en cm valor=0
///////////////// SENSOR ULTRASONIDOS 2 SALIDA ///////////////
int trigPinS = 6; //CONECTAR AL D6 EL TRIG ULTRASONIDOS 2
int echoPinS = 5; //CONECTAR A D5 EL ECHO ULTRASONIDOS 2
long durationS; //tiempo de ida/vuelta
int cmS=0; //Para almacenar el valor obtenido en cm valor=0
//////////////////////////////////////////////////////////////////
void setup(){
myservo.attach(7); // En EduBasica el servo se conecta al pin 7
Serial.begin(9600);
////////////////// configuramos como salida los leds del semáforo
pinMode(ledArriba,OUTPUT);
pinMode(ledAbajo,OUTPUT);
pinMode(ledCentro,OUTPUT);
//////////////////// configuramos las entradas y salidas de los ultrasonidos E y S
pinMode(trigPinE, OUTPUT);
pinMode(echoPinE, INPUT);
pinMode(trigPinS, OUTPUT);
pinMode(echoPinS, INPUT);
//////////////// empezamos con el semároro en rojo
digitalWrite(ledArriba, LOW);
digitalWrite(ledAbajo, HIGH);
digitalWrite(ledCentro, LOW);
//////////////////// Cerramos la barrera al principio
pos=140;
myservo.write(pos);
}
void loop()
{
digitalWrite(trigPinE, LOW);
delayMicroseconds(2);
digitalWrite(trigPinE, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinE, LOW);
durationE = pulseIn(echoPinE, HIGH);
durationE=durationE/2;
cmE = durationE/ 29;
Serial.println(cmE);
if (cmE
FINNNN
Esperamos que este curso, no sólo te has formado, sino que has disfrutado. Cualquier sugerencia, cambio, propuesta, fallos... puedes hacerlo en www.catedu.es en la sección de Tickets ¡¡gracias!!!