Revista Digital Sexto semestre en electrónica 1 | Page 29

Programación:

int TRIG = 10;

int ECO = 9;

int led1PWM = 7;

int led2PWM = 6;

int led3PWM = 5;

int led4PWM = 4;

int pot1;

int pot2;

float distancia;

float tiempo;

int resu;

int res;

int operacion;

int a;

void setup() {

Serial.begin(9600);

pinMode(10,OUTPUT);

pinMode(9,INPUT);

pinMode(led1PWM, OUTPUT);

pinMode(led2PWM, OUTPUT);

pinMode(led3PWM, OUTPUT);

pinMode(led4PWM, OUTPUT);

}

void loop() {

digitalWrite(10, LOW);

delayMicroseconds(2);

digitalWrite(10, HIGH);

delayMicroseconds(10);

digitalWrite(10, LOW);

tiempo = pulseIn(9,HIGH);

distancia =tiempo/58.30;

Serial.print(distancia);

Serial.println(" cm");

digitalWrite(led1PWM, LOW);

digitalWrite(led2PWM,LOW);

digitalWrite(led3PWM, LOW);

digitalWrite(led4PWM,LOW);

pot1 = analogRead(0);

resu = map(pot1, 0, 1023, 0, 30);

pot2 = analogRead(1);

res = map(pot2, 0, 1023, 50, 200);

Serial.print("MINIMO");

Serial.println(resu);

Serial.print("MAXIMO");

Serial.println(res);

operacion =(res-resu);

a=operacion/4;

if(distancia >= resu && distancia <= res)

{

if(distancia >= resu && distancia <= (resu+a) ){

Serial.println(" hola 1");

digitalWrite(led1PWM,HIGH);

digitalWrite(led2PWM,LOW);

digitalWrite(led3PWM, LOW);

digitalWrite(led4PWM,LOW);

}

if(distancia >= (resu+a) && distancia <= (resu+(2*a)) )

{

Serial.println(" LED 2");

digitalWrite(led1PWM, HIGH);

digitalWrite(led2PWM, HIGH);

digitalWrite(led3PWM, LOW);

digitalWrite(led4PWM,LOW);

}

if(distancia >= (resu+(2*a)) && distancia <= (resu+(3*a)))

{

Serial.println(" LED 3");

digitalWrite(led1PWM, HIGH);

digitalWrite(led2PWM, HIGH);

digitalWrite(led3PWM, HIGH);

digitalWrite(led4PWM,LOW);

}

if(distancia >= (resu+(3*a)) && distancia <= res)

{

Serial.println(" LED 4");

digitalWrite(led1PWM, HIGH);

digitalWrite(led2PWM, HIGH);

digitalWrite(led3PWM, HIGH);

digitalWrite(led4PWM,HIGH);

}

}

delay(500);

}

Simulación del Proyecto: