hola chicos tengo este código para una secuencia en las escaleras funciona bien pero tengo problemas con la detección me detecta cuando paso cerca , asi que los quiero cambiar por ultrasonidos
int SensorLuz = A0;
int SensorAjusteLuz = A1;
int ValorSensorLuz;
int ValorAjusteLuz;
int tiempo;
int ValorAjusteVelocidad = A2;
int sensor1=10;
int sensor2=11;
int estado_sensor_1=0;
int estado_sensor_2=0;
int led1 = 0;
int led2 = 1;
int led3 = 2;
int led4 = 3;
int led5 = 4;
int led6 = 5;
int led7 = 6;
int led8 = 7;
int led9 = 8;
void setup()
{
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);
pinMode (led5,OUTPUT);
pinMode (led6,OUTPUT);
pinMode (led7,OUTPUT);
pinMode (led8,OUTPUT);
pinMode (led9,OUTPUT);
pinMode (sensor1,INPUT);
pinMode (sensor2,INPUT);
digitalWrite (led1,LOW);
digitalWrite (led2,LOW);
digitalWrite (led3,LOW);
digitalWrite (led4,LOW);
digitalWrite (led5,LOW);
digitalWrite (led6,LOW);
digitalWrite (led7,LOW);
digitalWrite (led8,LOW);
digitalWrite (led9,LOW);
}
void loop()
{
ValorSensorLuz = analogRead(SensorLuz);
ValorAjusteLuz = analogRead(SensorAjusteLuz);
estado_sensor_1=digitalRead(sensor1);
estado_sensor_2=digitalRead(sensor2);
tiempo = analogRead(ValorAjusteVelocidad);
if (tiempo<250)
{
tiempo=250;
}
if (ValorAjusteLuz > ValorSensorLuz)
{
if (estado_sensor_1==HIGH)
{
subir_escaleras();
}
delay(20);
if (estado_sensor_2==HIGH)
{
bajar_escaleras();
}
delay(20);
}
}
void subir_escaleras()
{
digitalWrite (led1,HIGH);
delay(tiempo);
digitalWrite (led2,HIGH);
delay(tiempo);
digitalWrite (led3,HIGH);
delay(tiempo);
digitalWrite (led4,HIGH);
delay(tiempo);
digitalWrite (led5,HIGH);
delay(tiempo);
digitalWrite (led6,HIGH);
delay(tiempo);
digitalWrite (led7,HIGH);
delay(tiempo);
digitalWrite (led8,HIGH);
delay(tiempo);
digitalWrite (led9,HIGH);
delay(5000);
digitalWrite (led1,LOW);
delay(tiempo);
digitalWrite (led2,LOW);
delay(tiempo);
digitalWrite (led3,LOW);
delay(tiempo);
digitalWrite (led4,LOW);
delay(tiempo);
digitalWrite (led5,LOW);
delay(tiempo);
digitalWrite (led6,LOW);
delay(tiempo);
digitalWrite (led7,LOW);
delay(tiempo);
digitalWrite (led8,LOW);
delay(tiempo);
digitalWrite (led9,LOW);
}
void bajar_escaleras()
{
digitalWrite (led9,HIGH);
delay(tiempo);
digitalWrite (led8,HIGH);
delay(tiempo);
digitalWrite (led7,HIGH);
delay(tiempo);
digitalWrite (led6,HIGH);
delay(tiempo);
digitalWrite (led5,HIGH);
delay(tiempo);
digitalWrite (led4,HIGH);
delay(tiempo);
digitalWrite (led3,HIGH);
delay(tiempo);
digitalWrite (led2,HIGH);
delay(tiempo);
digitalWrite (led1,HIGH);
delay(5000);
digitalWrite (led9,LOW);
delay(tiempo);
digitalWrite (led8,LOW);
delay(tiempo);
digitalWrite (led7,LOW);
delay(tiempo);
digitalWrite (led6,LOW);
delay(tiempo);
digitalWrite (led5,LOW);
delay(tiempo);
digitalWrite (led4,LOW);
delay(tiempo);
digitalWrite (led3,LOW);
delay(tiempo);
digitalWrite (led2,LOW);
delay(tiempo);
digitalWrite (led1,LOW);
}
y este es el que intento hacer
int TRIG1 = A0;
int ECO1=10;
int DURACION;
int DISTANCIA1;
int DISTANCIA2;
int tiempo;
int ValorAjusteVelocidad = A2;
int TRIG2=11;
int ECO2=A1;
int led1 = 0;
int led2 = 1;
int led3 = 2;
int led4 = 3;
int led5 = 4;
int led6 = 5;
int led7 = 6;
int led8 = 7;
int led9 = 8;
void setup()
{
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);
pinMode (led5,OUTPUT);
pinMode (led6,OUTPUT);
pinMode (led7,OUTPUT);
pinMode (led8,OUTPUT);
pinMode (led9,OUTPUT);
pinMode (ECO1,INPUT);
pinMode (ECO2,INPUT);
pinMode (TRIG1,OUTPUT);
pinMode (TRIG2,OUTPUT);
digitalWrite (led1,LOW);
digitalWrite (led2,LOW);
digitalWrite (led3,LOW);
digitalWrite (led4,LOW);
digitalWrite (led5,LOW);
digitalWrite (led6,LOW);
digitalWrite (led7,LOW);
digitalWrite (led8,LOW);
digitalWrite (led9,LOW);
}
void loop()
{
tiempo = analogRead(ValorAjusteVelocidad);
if (tiempo<250)
{
tiempo=250;
}
digitalWrite(TRIG1, HIGH); // generacion del pulso a enviar
delay(1); // al pin conectado al trigger
digitalWrite(TRIG1, LOW); // del sensor
DURACION = pulseIn(ECO1, HIGH); // con funcion pulseIn se espera un pulso
// alto en Echo
DISTANCIA1 = DURACION / 58.2;
if (DISTANCIA1 <= 50 && DISTANCIA1 >= 0){
subir_escaleras();
}
delay(20);
digitalWrite(TRIG2, HIGH); // generacion del pulso a enviar
delay(1); // al pin conectado al trigger
digitalWrite(TRIG2, LOW); // del sensor
DURACION = pulseIn(ECO2, HIGH); // con funcion pulseIn se espera un pulso
// alto en Echo
DISTANCIA2 = DURACION / 58.2;
if (DISTANCIA2 <= 50 && DISTANCIA2 >= 0){
bajar_escaleras();
}
delay(20);
}
void subir_escaleras()
{
digitalWrite (led1,HIGH);
delay(tiempo);
digitalWrite (led2,HIGH);
delay(tiempo);
digitalWrite (led3,HIGH);
delay(tiempo);
digitalWrite (led4,HIGH);
delay(tiempo);
digitalWrite (led5,HIGH);
delay(tiempo);
digitalWrite (led6,HIGH);
delay(tiempo);
digitalWrite (led7,HIGH);
delay(tiempo);
digitalWrite (led8,HIGH);
delay(tiempo);
digitalWrite (led9,HIGH);
delay(5000);
digitalWrite (led1,LOW);
delay(tiempo);
digitalWrite (led2,LOW);
delay(tiempo);
digitalWrite (led3,LOW);
delay(tiempo);
digitalWrite (led4,LOW);
delay(tiempo);
digitalWrite (led5,LOW);
delay(tiempo);
digitalWrite (led6,LOW);
delay(tiempo);
digitalWrite (led7,LOW);
delay(tiempo);
digitalWrite (led8,LOW);
delay(tiempo);
digitalWrite (led9,LOW);
}
void bajar_escaleras()
{
digitalWrite (led9,HIGH);
delay(tiempo);
digitalWrite (led8,HIGH);
delay(tiempo);
digitalWrite (led7,HIGH);
delay(tiempo);
digitalWrite (led6,HIGH);
delay(tiempo);
digitalWrite (led5,HIGH);
delay(tiempo);
digitalWrite (led4,HIGH);
delay(tiempo);
digitalWrite (led3,HIGH);
delay(tiempo);
digitalWrite (led2,HIGH);
delay(tiempo);
digitalWrite (led1,HIGH);
delay(5000);
digitalWrite (led9,LOW);
delay(tiempo);
digitalWrite (led8,LOW);
delay(tiempo);
digitalWrite (led7,LOW);
delay(tiempo);
digitalWrite (led6,LOW);
delay(tiempo);
digitalWrite (led5,LOW);
delay(tiempo);
digitalWrite (led4,LOW);
delay(tiempo);
digitalWrite (led3,LOW);
delay(tiempo);
digitalWrite (led2,LOW);
delay(tiempo);
digitalWrite (led1,LOW);
}
pero me da fallos y no lo consigo
gracias a todos