Problema con de Activacion del Ultrasonico

Hola buen día compañeros del foro,pues bien ahora estoy programando un ATmega328p para poder activar un ultrasónico que cuando se active pueda controlar un servomotor, primero quiero realizar la parte del ultrasónico.Estoy probando con un led pero veo que se mantiene activo el led siempre , y solo cuando tapo completamente el emisor o el receptor se enciende mal,pienso que debe ser algo de ajuste,alguien me podría ayudar a ver en que la estoy regando?
y con otra pregunta, la señal que entra al receptor es analógica verdad, entonces para activar mi servo tengo que convertirla a una señal digital?

estoy programando en ATMEL STUDIO y el sensor ultrasónico que uso es el HD-SR04. Mi programación esta en c, y es la siguiente:

Código:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>

void configurar_adc()
{
    ADMUX=0x40;
    ADCSRA=0x86;
    ADCSRB=0x00;
}

int _leer_canal(int canal)
{
    ADMUX &= 0xF8;
    ADMUX |=canal;
    
    ADCSRA |=(1<<ADSC);
    _delay_ms(20);
    return(ADC);
}
int frecuencia()
{
    DDRD=255;
    PORTD=0b00000001;
    _delay_us(10);
    PORTD=0;
    _delay_us(50);
}
int main(void)
{
    long x;
    while(1)
    {
        frecuencia();
        x=_leer_canal(0);
        if (1<x<5)
        {
            PORTD=0b00000010;
            _delay_ms(1000);
        }
    }
}
 
Última edición por un moderador:
Atrás
Arriba