意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Avoidance by Infrared and Ultrasonic(一)

来源:恒创科技 编辑:恒创科技编辑部
2022-08-25 14:50:24


一、实现要求使用红外避障模块实现低位置处的障碍物避障使用超声波模块实现高位置处的避障使用舵机模块实现超声波模块的多角度探测二、使用材料可驱动的小车模型红外避障模块超声波模块舵机模块Arduino UNO开发板三、舵机的使用完成相应线路的连接舵机引脚的定义和相关变量
#define
int pulseWidth; //pulse width
初始化函数
//initialization of servo
pinMode(servoPin, OUTPUT);
舵机控制函数
void turnServo(int angle){
for(int i = 0; i <= 20; i++)
servoPulse(angle);
}

void servoPulse(int angle){
pulseWidth = (angle * 11) + 500; //map the pulse width value to 500-2048
digitalWrite(servoPin, HIGH);
delayMicroseconds(pulseWidth);
digitalWrite(servoPin, LOW);
delay(20-pulseWidth/1000);
}
至此可实现舵机在(0, 180)内任意角度的转向四、红外避障模块的使用完成相应线路的连接引脚定义和相关的变量
#define
#define

int infraredLeftState; //left infrared state
int infraredRightState; //right infrared state
初始化函数
//initialization of infrared
pinMode(infraredLeft, INPUT);
pinMode(infraredRight, INPUT);
红外检测函数
void infraredJudge(){
infraredLeftState = digitalRead(infraredLeft);
infraredRightState = digitalRead(infraredRight);
if(infraredLeftState == LOW && infraredRightState == LOW) {
//both left and right has obstacle
}
else if(infraredLeftState == HIGH && infraredRightState == LOW){
//right has obstacle
}
else if(infraredLeftState == LOW && infraredRightState == HIGH){
//left has obstacle
五、超声波模块的使用完成线路的连接引脚的定义和相关变量
#define
#define

int distanceFront; //front distance
int distanceLeft; //left distance
int distanceRight; //right distance
初始化函数
//initialization of ultrasonic
pinMode(ultrasonicEcho, INPUT);
pinMode(ultrasonicTrig, OUTPUT);
超声波检测函数
float distanceTest(){
digitalWrite(ultrasonicTrig, LOW);
delayMicroseconds(2);
digitalWrite(ultrasonicTrig, HIGH);
delayMicroseconds(10);
digitalWrite(ultrasonicTrig, LOW);
float dis = pulseIn(ultrasonicEcho, HIGH);
dis = dis / 58;
return



Avoidance by Infrared and Ultrasonic(一)

上一篇: 租用美国服务器:潜在的风险与应对策略。 下一篇: The Installation of Git