Soy nuevo en Arduino. la verdad necesito ayuda.
tengo un sensor de distancia y me gustaria producir una señal PWM proporcional a la distancia que hay entre el sensor y un objeto.
tenia un codigo para medir la distancia y otro para producir la señal pero no funciona como deseo. alguien me podria explicar que tengo mal.
adjunto el codigo que estoy utilizando
int Trig = 12;
int Echo = 13;
const int salida=3;
int out;
void setup ()
{
Serial.begin(9600);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(salida, OUTPUT);
}
void loop()
{
long duracion;
long distancia;
int Distancia=distancia;
const int Salida=3;
digitalWrite(Trig, LOW);
delayMicroseconds(4);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
duracion = pulseIn(Echo, HIGH);
duracion = duracion / 2;
distancia = duracion / 29;
out=distancia;
while((out<0)&&(out <256))
{
analogWrite(Salida,out);
delay(10);
}
Serial.println(distancia);
delay(50);
}
estimados he tratado de usar su codigo pero la señal del PWM se ve reflejada en el pin 13 del blink... no puedo cambiarlo a otro pin cuando conecto el pin 3 del arduino no veo la señal del PWM no entiendo bien el codigo me lo podrian explicar por favor.
el problema es que no logro relacionar el codigo...
me cuesta arduino ya que no logro ver con que se conecta out por ejemplo. en micro C esta todo a la vista.
out, map
lo unico que quiero es que el PWM a los 25 cn tenga 5 volt aprox y a los 5 cn casi cero pero no logro cambiar las variables es como que faltara codigo para cambiar.
// globales
const int salida = 3;
int out;
// en el loop
out = map(salida, 0, MAXIMO, 0, 255);
analogWrite(salida, out); // sin ningún while
rescato lo relevante a tu consulta.
Definido como salida pin 3 asi que pin 13 si ves cambios es porque se usa para enviar Echo del sensor ultrasónico.
out es la variable de salida que varia de 0 255
La función map toma valores entre 0 y 250 cmts y las transofrma en 0 a 255, luego valiéndonos de analogWrite saldrá una PWM por pin 3.