Está en la página 1de 3

SENSOR DE MOVIMIENTO PIR + SERVOMOTOR CON ARDUINO Y TINKERCAD

Material Utilizado:
* Arduino UNO
* Protoboard o placa de pruebas
* Sensor de movimiento PIR
* 1 Servomotor
* 1 Led
* 1 Resistencia de 330 ohms
* Cables de conexión

CÓDIGO
#include <Servo.h>
Servo puerta; // Nombre asignado al servo
int LED = 5;
int PIR = 4;

void setup()
{
pinMode(LED, OUTPUT);
pinMode(PIR, INPUT);
puerta.attach(7);

void loop()
{
int valorpir = digitalRead(PIR);
if (valorpir == 1) {
digitalWrite(LED, HIGH);
puerta.write(180);
}
else
{
digitalWrite(LED, LOW);
puerta.write(0);
}
delay(300);
}
SENSOR ULTRASÓNICO
// Pines utilizados // Comprueba si hay alguna alerta visual o sonora
#define LEDVERDE 2 void alertas(float distancia)
#define LEDAMARILLO 3 {
#define LEDROJO 4 if (distancia < umbral1 && distancia >= umbral2)
#define TRIGGER 5 {
#define ECHO 6 // Encendemos el LED verde
#define BUZZER 9 digitalWrite(LEDVERDE, HIGH);
// Constantes tone(BUZZER, 2000, 200);
const float sonido = 34300.0; // Vel del sonido en cm/s }
const float umbral1 = 30.0; else if (distancia < umbral2 && distancia > umbral3)
const float umbral2 = 20.0; {
const float umbral3 = 10.0; // Encendemos el LED amarillo
digitalWrite(LEDAMARILLO, HIGH);
void setup() { tone(BUZZER, 2500, 200);
// Iniciamos el monitor serie }
Serial.begin(9600); else if (distancia <= umbral3)
// Modo entrada/salida de los pines {
pinMode(LEDVERDE, OUTPUT); // Encendemos el LED rojo
pinMode(LEDAMARILLO, OUTPUT); digitalWrite(LEDROJO, HIGH);
pinMode(LEDROJO, OUTPUT); tone(BUZZER, 3000, 200);
pinMode(ECHO, INPUT); }
pinMode(TRIGGER, OUTPUT); }
pinMode(BUZZER, OUTPUT); // Calcula la distancia a la que se encuentra un objeto.
// Apagamos todos los LEDs // Devuelve variable tipo float que contiene la distancia
apagarLEDs(); float calcularDistancia()
} {
// pulseIn obtiene el tiempo en cambiar entre estados
void loop() { unsigned long tiempo = pulseIn(ECHO, HIGH);
// Preparamos el sensor de ultrasonidos // Distancia en cm, convertir el tiempo en s está en ms
iniciarTrigger(); // por eso se multiplica por 0.000001
// Obtenemos la distancia float distancia = tiempo * 0.000001 * sonido / 2.0;
float distancia = calcularDistancia(); Serial.print(distancia);
// Apagamos todos los LEDs Serial.print("cm");
apagarLEDs(); Serial.println();
// Alerta si estamos dentro del rango de peligro delay(500);
if (distancia < umbral1) return distancia;
{ }
// Lanzamos alertas // Inicia la secuencia del Trigger para comenzar a medir
alertas(distancia); void iniciarTrigger()
} {
} // Pon el Triiger en estado bajo y esperamos 2 ms
// Apaga todos los LEDs digitalWrite(TRIGGER, LOW);
void apagarLEDs() delayMicroseconds(2);
{ // Pin Trigger a estado alto y esperamos 10 ms
// Apagamos todos los LEDs digitalWrite(TRIGGER, HIGH);
digitalWrite(LEDVERDE, LOW); delayMicroseconds(10);
digitalWrite(LEDAMARILLO, LOW); // Comenzamos poniendo el pin Trigger en estado bajo
digitalWrite(LEDROJO, LOW); digitalWrite(TRIGGER, LOW);
} }
MONTAJE ULTRASONICO
SEMÁFORO

CODIGO SEMÁFORO

void setup(){
for(int i=2;i<14;i=i+1){ digitalWrite(10,HIGH); // tercer semaforo verde
pinMode(i,OUTPUT); digitalWrite(8,LOW); // OFF el rojo 3
} delay(2000); // espero
} digitalWrite(9,HIGH); // ON el 3erdo amarillo
void loop(){ delay(500); // espero
/*2 verde2 - 3 amarillo2 - 4 rojo2 digitalWrite(9,LOW); // apago ambos
digitalWrite(10,LOW);
5 verde1 - 6 amarillo1 - 7 rojo1 digitalWrite(8,HIGH);

8 rojo3 - 9 amarillo3- 10 verde3 digitalWrite(11,HIGH); // cuarto semaforo verde


digitalWrite(13,LOW);
11 verde4 - 12 amarillo4 - 13 rojo4*/ delay(2000); // espero
digitalWrite(12,HIGH); // ON el 4to amarillo
for(int i=2;i<14;i=i+1){ // todo este apagado delay(500); // espero
digitalWrite(i,LOW); digitalWrite(11,LOW); // OFF ambos
} digitalWrite(12,LOW);
digitalWrite(13,HIGH);
digitalWrite(5,HIGH); // enciendo el primer verde
digitalWrite(4,HIGH); // Enciendo los demas rojos }
digitalWrite(8,HIGH);
digitalWrite(13,HIGH);
delay(2000); // espero
digitalWrite(6,HIGH); // enciendo el amarillo
delay(500); //espero
digitalWrite(5,LOW); //apagar el verde y el amarillo
digitalWrite(6,LOW);
digitalWrite(7,HIGH);

digitalWrite(2,HIGH); // segundo semaforo verde


digitalWrite(4,LOW); // OFF el rojo 2
delay(2000); // espero
digitalWrite(3,HIGH); //ON el 2do amarillo
delay(500); // espero
digitalWrite(2,LOW); // apago ambos
digitalWrite(3,LOW);
digitalWrite(4,HIGH); // enciendo el rojo

También podría gustarte