Project 2 - Measuring distance of an object using ultrasonic sensor (HC-SR04)
//
#include <avr/io.h>//headerfile
#define F_CPU 16000000 //Frequency
#include <util/delay.h>//headrfile for delay
#include "avr/interrupt.h" //interrupt headerfile
#define baudrate
unsigned int pulsewidth; //decalring globa variable pulsewidth
void trigger(){ //function definition
PORTB |= (1<<PORTB1); //making protB1 high
_delay_us(15); //delay of 15us
PORTB &=~(1<<PORTB1);
}
void timer(){ //function definiton
ACSR |= (1<<ACIC); //Enabling input capture pin
TIFR1 |= (1<<ICF1); //clear input capture
TCNT1=0;
TCCR1A=0x00; //set the values of TCCR1A register
TCCR1B=0x04;//00000100; set the values of TCCR1B register,capture on rising edge
TIMSK1=0x20;//00100000 //set the value of TIMSK1 register , interrupt mask register set the interrupt value corresponding vector is called
sei(); //enable global interrupt
}
int main(void)//main function
{
Serial.begin(9600); //for using serail monitor
unsigned int distance=0;//decalring a varible and initialised to 0
DDRB |= (1<<PORTB1); //making portB1 as output Pin
/* Replace with your application code */
while (1) //infinte loop
{
trigger();//function call
timer();//funciton call
distance=(34*pulsewidth)/2; //formula for distance
Serial.println(distance); //print distance in serial moonitor
_delay_ms(40); //delay
Serial.println("CM");//print cm in serial monitor
}
}
ISR(TIMER1_CAPT_vect){ //funciton definition for ISR
pulsewidth=((ICR1 - 12)*10)/625; //pulse width calculation
}
