Project 2 - Measuring distance of an object using ultrasonic sensor (HC-SR04)
#include <avr/io.h> //header files
#include "avr/interrupt.h" //interrupt header file
#include <util/delay.h> //delay header file
#define F_CPU 16000000L
#define Trigger PB1
#define Echo PB0
int pulse_width; //variable initialisation
void trigger() //Trigger function
{
PORTB |=(1<<Trigger);
_delay_ms(15);
PORTB &=~(1<<Trigger);
_delay_ms(15);
}
void timer_init() //Timer function
{
ACSR = (0<<ACIC); //Making ACIC low
TIFR1=1<<ICF1; //setting TCF1
TCNT1=0x00; //makingg TCNT1 0
TCCR1A=0x00; //making TCCR1A 0
TCCR1B=0x04;
TIMSK1=1<<ICIE1; //Making ICIE1
sei(); //global enable interrupt
}
ISR(TIMER1_CAPT_vect) //Interrupt service routine
{
pulse_width=((ICR1-12)*10)/625;
}
int main(void) //main function
{
int distance=0;
DDRB |=(1<<Trigger);
while(1)
{
trigger(); //calling trigger function
timer_init(); //calling timer function
distance=(34*pulse_width)/2;
Serial.print(distance); //printing in serial monitor
Serial.println("cm");
_delay_ms(40);
}
}