esp32-car/src/ultrasound.cpp

41 lines
1007 B
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "ultrasound.h"
Servo Ultrasonic::servo;
int Ultrasonic::servoPin = 0;
UltrasonicPin Ultrasonic::pin = {0, 0};
float Ultrasonic::distance = 0;
int Ultrasonic::angle = 0;
void Ultrasonic::init(UltrasonicPin pin, int servoPin)
{
Ultrasonic::pin = pin;
Ultrasonic::servoPin = servoPin;
pinMode(pin.trig, OUTPUT);
pinMode(pin.echo, INPUT);
servo.attach(servoPin);
servo.write(90);
}
void Ultrasonic::update()
{
digitalWrite(pin.trig, HIGH);
delayMicroseconds(1);
digitalWrite(pin.trig, LOW);
float distance = pulseIn(pin.echo, HIGH); // 计数接收高电平时间
distance = distance * 340 / 2 / 10000; // 计算距离 1声速340M/S 2实际距离为1/2声速距离 3计数时钟为1US//温补公式c=(331.45+0.61t/℃)m•s-1 (其中331.45是在0度
Ultrasonic::distance = distance;
}
void Ultrasonic::servoControl(int angle)
{
if (angle < 0)
angle = 0;
if (angle > 180)
angle = 180;
Ultrasonic::angle = angle;
servo.write(angle);
}