Challenge

Project 2 - Measuring distance of an object using ultrasonic sensor (HC-SR04)

1.

#include <avr/io.h>
#define F_CPU 16000000L //cpu frequency
#include <util/delay.h> //delay header file
#include <time.h> //timer
#include "avr/interrupt.h" //HEADER FILE for interrupt
#define Baudrate 9600 //defining baudrate
#define FOSC 1843200 //UART communication

#define UBRR ((FOSC/(16*Baudrate))-1)

int TimerOverflow;
int main()
{

int dist;
long count;
DDRB=0x01; //port b pin1 as output
PORTC=0xFF; //on entire portc
sei(); //interrupt
TIMSK1 =(1<<TOIE1); //timermask
TCCR1A=0; //timer1 control register
Uart_Init(); //uart itiating for dispalying distance
while(1)
{
if((UCSR0C && (1<<5))==1)
{
UDR0_0=dist; // stroing distance
_delay_ms(500);
}
PORTB |= (1<<0); //port b on for triggering

_delay_us(10) ;
PORTB &=~(1<<0); //off port b

while((TIFR1 & (ICF1))==0)

TCNT1 = 0 ; //timer1 counter
TCCR1B = 0X01; //timer control register no prescalar mode
TIFR1 = 1<<ICF1; //interrupt register
TIFR1 = 1<<TOV1; //clearing timer overflow flag
TimerOverflow=0;
while((TIFR1 &(ICF1))==0); //logic for calculating distance
long count =ICR1+(65535*TimerOverflow);
int dist=count/466.47;
_delay_ms(500);


}

}
ISR(TIMER1_OVF_vect)
{

TimerOverflow++;
}
void Uart_Init()
{
UBRR0H=UBRR>>8;
UBRR0L=UBRR;
UCSR0B=1<<TXEN0;
UCSR0C=(1<<UCSZ01)|(1<<UCSZ00);
}

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.