46 lines
1.2 KiB
C
46 lines
1.2 KiB
C
#ifndef SONAR_H
|
|
#define SONAR_H
|
|
|
|
#include "common.h"
|
|
|
|
// Trigger
|
|
#define TRIG_DDR DDRC
|
|
#define TRIG_PORT PORTC
|
|
#define TRIG_PIN PINC
|
|
#define TRIG_BIT PC4
|
|
|
|
// Echo
|
|
#define ECHO_DDR DDRC
|
|
#define ECHO_PORT PORTC
|
|
#define ECHO_PIN PINC
|
|
#define ECHO_BIT PC5
|
|
|
|
#define SPEED_OF_SOUND 343 // (m/s)
|
|
#define US_PER_CM 58 // Time for sound to travel distance of 1cm
|
|
#define MAX_SONAR_RANGE 8 // Trigger + echo (m)
|
|
#define DELAY_BETWEEN_TESTS 500 // Timeout for return signal
|
|
#define TIMER_MAX 65535 // Depends on the timer used
|
|
|
|
#define CYCLES_PER_US F_CPU / 1000000
|
|
#define SONAR_TIMEOUT (F_CPU * MAX_SONAR_RANGE) / SPEED_OF_SOUND
|
|
|
|
#define TRIG_ERROR -1
|
|
#define ECHO_ERROR -2
|
|
|
|
#define TRIG_INPUT_MODE() CLR(TRIG_DDR, TRIG_BIT)
|
|
#define TRIG_OUTPUT_MODE() SET(TRIG_DDR, TRIG_BIT)
|
|
#define TRIG_LOW() CLR(TRIG_PORT, TRIG_BIT)
|
|
#define TRIG_HIGH() SET(TRIG_PORT, TRIG_BIT)
|
|
|
|
#define ECHO_INPUT_MODE() CLR(ECHO_DDR, ECHO_BIT)
|
|
#define ECHO_OUTPUT_MODE() SET(ECHO_DDR, ECHO_BIT)
|
|
#define ECHO_LOW() CLR(ECHO_PORT, ECHO_BIT)
|
|
#define ECHO_HIGH() SET(ECHO_PORT, ECHO_BIT)
|
|
|
|
|
|
void init_sonar(void);
|
|
void trigger_sonar(void);
|
|
unsigned int read_sonar(void);
|
|
|
|
#endif /* SONAR_H */
|