Sei sulla pagina 1di 7

Universidad Politécnica Salesiana.

Ingeniería Mecánica.
Nombre: Erick Chávez
Nivel: 10mo “A”
Fecha: 31 de mayo del 2018

Trabajo en Clase ARDUINO


Construir en parejas 2 aplicaciones de ARDUINO mediante la plataforma
TINKERCAD.
APLICACIÓN 1. Semáforo inteligente.
El semáforo funciona normalmente hasta que el peatón presiona el botón para
cruzar.
 Si al presionar el botón existen autos cruzando, el semáforo se pone en
rojo luego de 30 segundos.
 Si al presionar el botón NO existen autos cruzando, el semáforo cambia a
amarillo y a rojo inmediatamente.
El semáforo funciona con tiempos y en el siguiente orden:
 Verde: 15 segundos
 Amarillo: 2 Segundos
 Rojo: 15 Segundos
Los autos son detectados mediante sensor de presencia, escogido de acuerdo
a disponibilidad.
Código:
// Práctica semáforo.
const int LEDR =13;
const int LEDA =12;
const int LEDV =8;
const int BOTON =7;
int value;
const int PIR = 4;
int sen;
void setup()
{
pinMode(LEDR,OUTPUT);
pinMode(LEDA,OUTPUT);
pinMode(LEDV,OUTPUT);// establecer que el pin digital es una señal de salida
pinMode(BOTON,INPUT);
pinMode(PIR,INPUT);
}
void loop()
{
int value= digitalRead(BOTON);//lee el botón
int sen= digitalRead(PIR);//lee el sensor
if (value==HIGH && sen==LOW) { // si el sensor no detecta nada y el botón
está encendido
digitalWrite(LEDA,HIGH);//realizar las siguientes ordenes
delay(2000);
digitalWrite(LEDA,LOW);
digitalWrite(LEDV,LOW);
digitalWrite(LEDR,HIGH);
delay(15000);
digitalWrite(LEDR,LOW);
delay(15000);
}
if (value==LOW){ // si el botón está apagado realizar las ordenes normales
digitalWrite(LEDR,HIGH);
delay(15000);
digitalWrite(LEDR,LOW);
digitalWrite(LEDA,HIGH);
delay(2000);
digitalWrite(LEDA,LOW);
digitalWrite(LEDV,HIGH);
delay(15000);
digitalWrite(LEDV,LOW);
}
if (value==HIGH && sen==HIGH){//si el botón y el sensor están activados
realizar las siguientes ordenes
digitalWrite(LEDR,LOW);
delay(15000);
digitalWrite(LEDR,HIGH);
delay(15000);
}
}
APLICACIÓN 2. Parqueadero inteligente
Al detectar un vehículo, el conductor presiona un pulsador y la barrera controlada
mediante un servo motor se levanta hasta 90º. Una vez que el auto cruzó la
barrera se coloca en posición inicial 0º. Para la salida es el mismo procedimiento.
Dentro del parqueadero que encienden una luz verde, si está disponible.
Existen 3 parqueaderos disponibles.
Código:
#include <Servo.h> // incluyo la librería servo.h
Servo miservo; // Definimos “miservo” para controlar un servomotor
int pulsador = 12; // utilizo el pin 12 como botón de entrada de los vehículos
int pulsadorA = 8;//este se utilizará como el sensor de los vehículos mientras este
apagado la barrera no bajará cuando en vehículo pase y lo active la barrera
bajará
int pulsadorB = 2;//están tres pulsadores en paralelo si los tres están
desactivados quiere decir que los vehículos están ocupando los tres lugares si
una de ellas o los tres se activan se encenderá el foco de disponible
int led = 7;

int pos = 0; // variable para almacenar la posición del servo


int ESTADOpulsador = 0; // variable para almacenar la lectura del estado del
pulsador
int ESTADOpulsadorA = 0;
int ESTADOpulsadorB = 0;
void setup()
{
miservo.attach(13); // Convierte el pin 13 en el controlador (driver) del servo
denominado “miservo”
pinMode(pulsador, INPUT);
pinMode(pulsadorA, INPUT);//EN ESTE CASO este botón actuará como sensor
de los vehículos
pinMode(pulsadorB, INPUT);
pinMode(led, OUTPUT);
miservo.write(0); // Fija en el servo la posición 0 grados y hace que inicialmente
la barrera esté baja
}
void loop()
{
ESTADOpulsador = digitalRead(pulsador); // leo el estado del botón del
pulsador y lo guardo en la variable ESTADOpulsador
ESTADOpulsadorA = digitalRead(pulsadorA);
ESTADOpulsadorB = digitalRead(pulsadorB);
if (ESTADOpulsadorB == HIGH)
{
digitalWrite(led,HIGH);
}
if (ESTADOpulsadorB == LOW)
{
digitalWrite(led,LOW);
}
if (ESTADOpulsador == HIGH)
{ // Si ESTADOpulsador está activo (HIGH) comienza a levantar la barrera
for(pos = 0; pos < 90; pos += 1) // La variable “pos” se incrementa desde 0 a
90 grados
{ // en pasos de 1 grado
miservo.write(pos); // indica al servo que vaya la posición almacenada en la
variable “pos”
delay(20); // espera 20ms hasta que el servo alcance la posición
}
}
if (ESTADOpulsadorA == HIGH && ESTADOpulsador == LOW)
{
for(pos = 90; pos>=1; pos-=1) // comienza a bajar la barrera desde la posición
90 hasta 0 grados
{
miservo.write(pos); // indica al servo que vaya a la posición almacenada en
la variable
delay(20); // espera 20ms para que el servo alcance la posición
}
}
}

Potrebbero piacerti anche