当前位置:首页Arduino > 正文

anduino红外避障小车代码

作者:野牛程序员:2023-08-08 21:23:48Arduino阅读 3933

以下是一个简单的 Arduino 红外避障小车代码示例,用于制作一个能够通过红外传感器避免障碍物的小车。请注意,这只是一个基本示例,实际的硬件配置可能会有所不同。

#include <IRremote.h>  // 需要安装 IRremote 库

// 定义红外传感器引脚
const int leftIRPin = 2;   // 左侧红外传感器
const int rightIRPin = 3;  // 右侧红外传感器

// 定义电机控制引脚
const int leftMotorPin1 = 4;
const int leftMotorPin2 = 5;
const int rightMotorPin1 = 6;
const int rightMotorPin2 = 7;

IRrecv irrecv(8);  // 使用引脚 8 初始化红外接收器
decode_results results;

void setup() {
    pinMode(leftIRPin, INPUT);
    pinMode(rightIRPin, INPUT);

    pinMode(leftMotorPin1, OUTPUT);
    pinMode(leftMotorPin2, OUTPUT);
    pinMode(rightMotorPin1, OUTPUT);
    pinMode(rightMotorPin2, OUTPUT);

    irrecv.enableIRIn();  // 启用红外接收器
}

void loop() {
    if (irrecv.decode(&results)) {  // 检测是否接收到红外信号
        switch (results.value) {
            case 0xFFA25D:  // 红外遥控器的某个按钮的值
                // 执行小车前进操作
                digitalWrite(leftMotorPin1, HIGH);
                digitalWrite(leftMotorPin2, LOW);
                digitalWrite(rightMotorPin1, HIGH);
                digitalWrite(rightMotorPin2, LOW);
                break;
            // 其他红外信号的处理
        }

        irrecv.resume();  // 继续接收下一个红外信号
    }

    // 红外避障逻辑
    int leftIRValue = digitalRead(leftIRPin);
    int rightIRValue = digitalRead(rightIRPin);

    if (leftIRValue == HIGH && rightIRValue == HIGH) {
        // 都没有障碍物,继续前进
        digitalWrite(leftMotorPin1, HIGH);
        digitalWrite(leftMotorPin2, LOW);
        digitalWrite(rightMotorPin1, HIGH);
        digitalWrite(rightMotorPin2, LOW);
    } else if (leftIRValue == LOW && rightIRValue == HIGH) {
        // 左侧有障碍物,右转
        digitalWrite(leftMotorPin1, HIGH);
        digitalWrite(leftMotorPin2, LOW);
        digitalWrite(rightMotorPin1, LOW);
        digitalWrite(rightMotorPin2, LOW);
    } else if (leftIRValue == HIGH && rightIRValue == LOW) {
        // 右侧有障碍物,左转
        digitalWrite(leftMotorPin1, LOW);
        digitalWrite(leftMotorPin2, LOW);
        digitalWrite(rightMotorPin1, HIGH);
        digitalWrite(rightMotorPin2, LOW);
    } else {
        // 左右都有障碍物,停止
        digitalWrite(leftMotorPin1, LOW);
        digitalWrite(leftMotorPin2, LOW);
        digitalWrite(rightMotorPin1, LOW);
        digitalWrite(rightMotorPin2, LOW);
    }
}

请注意,此示例使用了红外遥控器和红外传感器,还需要 IRremote 库来处理红外信号。实际的硬件连接可能会有所不同,你需要根据你的硬件配置进行适当的连接和调整。

在这个示例中,小车可以通过红外遥控器进行前进,还使用红外传感器避免障碍物。当左侧或右侧传感器检测到障碍物时,小车会相应地转向。这只是一个简单的演示,可以根据需要进行更多的扩展和优化。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击