Challenge

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);
}
}

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.