38 lines
1.3 KiB
C
38 lines
1.3 KiB
C
#ifndef SENSOR_HANDLER_H
|
|
#define SENSOR_HANDLER_H
|
|
|
|
#include "config.h"
|
|
#include <Arduino.h>
|
|
|
|
// TCRT5000 循迹传感器阈值 (如果使用数字模式或需要软件比较)
|
|
// 这个值需要根据实际传感器和线路进行校准
|
|
#define TCRT5000_THRESHOLD 500 // 假设模拟读取值,高于此值为检测到线,低于则为背景
|
|
|
|
void sensor_setup();
|
|
|
|
// 超声波传感器
|
|
long get_ultrasonic_distance_cm(int trig_pin, int echo_pin);
|
|
long get_front_obstacle_distance(); // 获取前方障碍物距离 (cm)
|
|
long get_side_spot_distance(); // 获取侧方充电桩距离 (cm)
|
|
|
|
// TCRT5000 循迹传感器
|
|
// 返回值可以根据具体循迹算法设计,例如:
|
|
// 0: 均在线上或中间
|
|
// -1: 左边传感器在线上,车体偏右
|
|
// 1: 右边传感器在线上,车体偏左
|
|
// -2: 左边传感器出界
|
|
// 2: 右边传感器出界
|
|
// 或者直接返回左右传感器的原始值/数字值
|
|
struct LineFollowValues {
|
|
bool left_on_line;
|
|
bool right_on_line;
|
|
// 可以添加原始模拟值如果需要
|
|
// int raw_left;
|
|
// int raw_right;
|
|
};
|
|
LineFollowValues get_line_follow_values();
|
|
|
|
// 辅助函数,判断是否在线上 (基于模拟值和阈值)
|
|
bool is_on_line(int sensor_pin, int threshold = TCRT5000_THRESHOLD);
|
|
|
|
#endif // SENSOR_HANDLER_H
|