Sensor Ultrasónico
Practica Final.. :)
#include <Servo.h>
const int trigger = 12;
const int echo = 11;
float dist, res;
Servo sd;
Servo si;
int led1 = 7;
int led2 = 6;
int led3 = 5;
int led4 = 4;
void bargraph (int led1, int led2, int led3, int led4)// Función bargraph
{
digitalWrite (7,led1);
digitalWrite (6,led2);
digitalWrite (5,led3);
digitalWrite (4,led4);
}
void setup(){
Serial.begin(9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
}
void loop(){
digitalWrite(trigger, LOW);
delayMicroseconds(5);
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
//Adquirimos los datos y convertimos la media a cm
dist = pulseIn(echo, HIGH); //Este resultado esta en microsegundos
//Cuando la lectura del pin sea HIGH medira el tiempo que transcurre hasta que sea LOW en useg
dist = dist/58; //Se hace la conversion a centimetros
//Si queremos convertir a pulgadas se divide entre 148
Serial.print("Distancia = "); //Imprimimos en la terminal un texto "Distancia = "
Serial.print(dist); //Imprimimos en la terminal el valor de la distancia
Serial.print("cm"); //Imprimimos en la terminal un texto "cm"
Serial.write(10); //Enviamos en codigo ascii de "Nueva linea - salto de linea"
if(dist >= 30){
sd.attach(9);
si.attach(10);
sd.write(90);
si.write(180);
bargraph(0,1,1,0);
}
else if(dist <= 30){
sd.attach(9);
si.attach(10);
sd.write(180);
si.write(90);
bargraph(1,0,0,1);
}
else{
sd.detach();
si.detach();
}
}
semaforo inteligente
ResponderEliminar#include
float dist;
const int trigger = 12;
const int echo = 11;
Servo sd;
Servo si;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(9, OUTPUT);//Verde
pinMode(8, OUTPUT);//Amarillo
pinMode(7, OUTPUT);//Rojo
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trigger, LOW);
delayMicroseconds(5);
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
dist = pulseIn(echo, HIGH);
dist = dist/58;
Serial.print("Distancia=");
Serial.print(dist);
Serial.print("cm");
Serial.write(10);
if(dist >= 31){//Distancia de 50 o mas centimetros prende foco verde
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
sd.attach(3);
si.attach(4);
sd.write(90);
si.write(90);
}
else if(dist >= 11 and dist <=30){//Distancia de entre 11 y 30 centimetros
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
digitalWrite(7, LOW);
sd.attach(3);
si.attach(4);
sd.write(90);
si.write(90);
delay(300);
sd.detach();
si.detach();
delay(100);
sd.attach(3);
si.attach(4);
sd.write(90);
si.write(90);
delay(200);
sd.detach();
si.detach();
delay(100);
sd.attach(3);
si.attach(4);
sd.write(90);
si.write(90);
delay(100);
sd.detach();
si.detach();
delay(100);
sd.attach(3);
si.attach(4);
sd.write(90);
si.write(90);
delay(50);
sd.detach();
si.detach();
delay(50);
sd.attach(3);
si.attach(4);
sd.write(90);
si.write(90);
sd.detach();
si.detach();
delay(1000);
}
else if(dist <=10){//Distancia de 10 o menos
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(7, HIGH);
sd.detach();
si.detach();
}
}