Project 2 - Measuring distance of an object using ultrasonic sensor (HC-SR04)
unsigned int pulse_width;
void trigger()
{
Serial.begin(9600);
PORTB|= (1<<PORTB1);
_delay_us(2000);
PORTB &= ~(1<<PORTB1);
}
void init_timer()
{
ACSR |= (0<<ACIC);
TIFR1 = (1<<ICF1);
TCNT1 = 0;
TCCR1A |= (0<<WGM11)|(0<<WGM10);
TCCR1B |= (0<<ICES1)|(0<<WGM13)|(0<<WGM12)|(1<<CS12);
TIMSK1 |= (1<<ICIE1);
sei();
}
ISR(TIMER1_CAPT_vect)
{
pulse_width = ((ICR1 - 12)*10)/625;
}
int main(void)
{
float distance = 0;
DDRB |= (1<<DDB1);
while(1)
{
trigger();
init_timer();
distance = (40*pulse_width)/2;
Serial.print(distance);
Serial.println("cm");
_delay_ms(2000);
}
}