Challenge

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

#include <avr/io.h>

#define F_CPU 16000000UL

#include <util/delay.h>

#include <avr/interrupt.h>

#define TRIG_PIN PD0

#define ECHO_PIN PD1

void init_timer() {

TCCR1B |= (1 << CS11); // Set timer prescaler to 8

}

void init_io() {

DDRD |= (1 << TRIG_PIN); // Set TRIG_PIN as output

DDRD &= ~(1 << ECHO_PIN); // Set ECHO_PIN as input

}

void trigger_sensor() {

PORTD |= (1 << TRIG_PIN);

_delay_us(10);

PORTD &= ~(1 << TRIG_PIN);

}

uint16_t measure_distance() {

uint16_t pulse_width = 0;

while (!(PIND & (1 << ECHO_PIN))); // Wait for echo start

TCNT1 = 0; // Start timer

while (PIND & (1 << ECHO_PIN)); // Wait for echo end

pulse_width = TCNT1; // Capture timer count

return pulse_width;

}

int main() {

init_io();

init_timer();

while (1) {

trigger_sensor();

_delay_ms(60); // Wait for sensor to reset

uint16_t distance = measure_distance();

// Convert distance and display on LCD or Serial Monitor

_delay_ms(1000); // Delay between measurements

}

}


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.