HC-SR04超声波模块、oled模块、tcrt5000循迹模块功耗分别多少
时间: 2023-11-08 20:33:12 浏览: 200
HC-SR04超声波模块的功耗一般在5V电源下为15mA左右,工作电压为5V。
OLED模块的功耗取决于其尺寸和工作电压,一般为20mA-50mA不等。例如,0.96英寸的OLED模块在3.3V电源下的工作电流大约为20mA。
TCRT5000循迹模块的功耗也取决于其工作电压和工作模式。一般在3.3V电源下,其待机电流大约为0.1mA,工作电流为8mA左右。
相关问题
如果你是Arduino高级开发者会怎么写arduino的循迹避障四轮小车,用的是 1、arduino mega2560开发板。 2、2个l298n电机驱动模块引脚分别是控制方向左前电机6、5,控制方向左后电机11、12,控制方向右前电机,4、3,控制方向右后电机9、10,控制电机调速左前电机7,右前2,左后13,右后8。 3、hc-sr04超声波测距模块引脚 TrigPin 14,EchoPin 15。 4、5路TCRT5000红外循迹模块引脚从左到右分别是A0、A1、A2、A3、A4。 要求程序小车接电就可以实现黑线循迹和物体避障
首先,我们需要将电机驱动模块和超声波测距模块以及红外循迹模块连接到Arduino Mega2560开发板上。具体的连接方式可以参考各个模块的数据手册。
接下来,我们需要编写代码。代码的主要思路如下:
1. 初始化引脚,包括电机驱动模块的方向控制引脚和调速引脚,超声波测距模块的TrigPin和EchoPin,以及红外循迹模块的引脚。
2. 在循迹模块上使用红外传感器进行检测,判断小车所在的位置,然后根据检测结果控制电机的转向和速度。当小车检测到黑线时,电机应该向前运动,否则应该向左或向右转。
3. 在避障模块上使用超声波传感器进行检测,如果检测到前方有障碍物,则应该停止电机,向左或向右转,直到没有障碍物为止。
下面是示例代码,供您参考:
```
#include <NewPing.h>
#define TRIG_PIN 14
#define ECHO_PIN 15
#define LEFT_FRONT_DIR_PIN 6
#define LEFT_FRONT_PWM_PIN 7
#define LEFT_REAR_DIR_PIN 11
#define LEFT_REAR_PWM_PIN 13
#define RIGHT_FRONT_DIR_PIN 4
#define RIGHT_FRONT_PWM_PIN 2
#define RIGHT_REAR_DIR_PIN 9
#define RIGHT_REAR_PWM_PIN 8
#define IR_SENSOR_LEFT_PIN A0
#define IR_SENSOR_LEFT_FRONT_PIN A1
#define IR_SENSOR_CENTER_PIN A2
#define IR_SENSOR_RIGHT_FRONT_PIN A3
#define IR_SENSOR_RIGHT_PIN A4
#define MAX_DISTANCE 200
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
pinMode(LEFT_FRONT_DIR_PIN, OUTPUT);
pinMode(LEFT_FRONT_PWM_PIN, OUTPUT);
pinMode(LEFT_REAR_DIR_PIN, OUTPUT);
pinMode(LEFT_REAR_PWM_PIN, OUTPUT);
pinMode(RIGHT_FRONT_DIR_PIN, OUTPUT);
pinMode(RIGHT_FRONT_PWM_PIN, OUTPUT);
pinMode(RIGHT_REAR_DIR_PIN, OUTPUT);
pinMode(RIGHT_REAR_PWM_PIN, OUTPUT);
pinMode(IR_SENSOR_LEFT_PIN, INPUT);
pinMode(IR_SENSOR_LEFT_FRONT_PIN, INPUT);
pinMode(IR_SENSOR_CENTER_PIN, INPUT);
pinMode(IR_SENSOR_RIGHT_FRONT_PIN, INPUT);
pinMode(IR_SENSOR_RIGHT_PIN, INPUT);
}
void loop() {
int distance = sonar.ping_cm();
if (distance < 10) { // 出现障碍物
stop();
if (leftClear()) {
right();
} else if (rightClear()) {
left();
} else {
back();
delay(500);
left();
}
} else { // 没有障碍物
if (onTrack()) {
forward();
} else {
if (left()) {
left();
} else if (right()) {
right();
} else {
back();
delay(500);
left();
}
}
}
}
void forward() {
digitalWrite(LEFT_FRONT_DIR_PIN, HIGH);
analogWrite(LEFT_FRONT_PWM_PIN, 255);
digitalWrite(LEFT_REAR_DIR_PIN, HIGH);
analogWrite(LEFT_REAR_PWM_PIN, 255);
digitalWrite(RIGHT_FRONT_DIR_PIN, HIGH);
analogWrite(RIGHT_FRONT_PWM_PIN, 255);
digitalWrite(RIGHT_REAR_DIR_PIN, HIGH);
analogWrite(RIGHT_REAR_PWM_PIN, 255);
}
void stop() {
digitalWrite(LEFT_FRONT_DIR_PIN, LOW);
analogWrite(LEFT_FRONT_PWM_PIN, 0);
digitalWrite(LEFT_REAR_DIR_PIN, LOW);
analogWrite(LEFT_REAR_PWM_PIN, 0);
digitalWrite(RIGHT_FRONT_DIR_PIN, LOW);
analogWrite(RIGHT_FRONT_PWM_PIN, 0);
digitalWrite(RIGHT_REAR_DIR_PIN, LOW);
analogWrite(RIGHT_REAR_PWM_PIN, 0);
}
void left() {
digitalWrite(LEFT_FRONT_DIR_PIN, LOW);
analogWrite(LEFT_FRONT_PWM_PIN, 200);
digitalWrite(LEFT_REAR_DIR_PIN, LOW);
analogWrite(LEFT_REAR_PWM_PIN, 200);
digitalWrite(RIGHT_FRONT_DIR_PIN, HIGH);
analogWrite(RIGHT_FRONT_PWM_PIN, 200);
digitalWrite(RIGHT_REAR_DIR_PIN, HIGH);
analogWrite(RIGHT_REAR_PWM_PIN, 200);
}
void right() {
digitalWrite(LEFT_FRONT_DIR_PIN, HIGH);
analogWrite(LEFT_FRONT_PWM_PIN, 200);
digitalWrite(LEFT_REAR_DIR_PIN, HIGH);
analogWrite(LEFT_REAR_PWM_PIN, 200);
digitalWrite(RIGHT_FRONT_DIR_PIN, LOW);
analogWrite(RIGHT_FRONT_PWM_PIN, 200);
digitalWrite(RIGHT_REAR_DIR_PIN, LOW);
analogWrite(RIGHT_REAR_PWM_PIN, 200);
}
void back() {
digitalWrite(LEFT_FRONT_DIR_PIN, LOW);
analogWrite(LEFT_FRONT_PWM_PIN, 200);
digitalWrite(LEFT_REAR_DIR_PIN, LOW);
analogWrite(LEFT_REAR_PWM_PIN, 200);
digitalWrite(RIGHT_FRONT_DIR_PIN, LOW);
analogWrite(RIGHT_FRONT_PWM_PIN, 200);
digitalWrite(RIGHT_REAR_DIR_PIN, LOW);
analogWrite(RIGHT_REAR_PWM_PIN, 200);
}
bool onTrack() {
return digitalRead(IR_SENSOR_LEFT_PIN) == LOW &&
digitalRead(IR_SENSOR_LEFT_FRONT_PIN) == LOW &&
digitalRead(IR_SENSOR_CENTER_PIN) == LOW &&
digitalRead(IR_SENSOR_RIGHT_FRONT_PIN) == LOW &&
digitalRead(IR_SENSOR_RIGHT_PIN) == LOW;
}
bool leftClear() {
return digitalRead(IR_SENSOR_LEFT_PIN) == HIGH &&
digitalRead(IR_SENSOR_LEFT_FRONT_PIN) == HIGH;
}
bool rightClear() {
return digitalRead(IR_SENSOR_RIGHT_PIN) == HIGH &&
digitalRead(IR_SENSOR_RIGHT_FRONT_PIN) == HIGH;
}
```
请注意,这只是示例代码,您可能需要进行一些调整才能使它适合您的具体应用程序。
基于arduino设计一个程序,L298N电机驱动两轮车,三个TCRT5000循迹模块3PIN用来检测赛道,将3个红外循迹模块命名为L(左),I(中),R(右)。当L,I,R其中一个检测到赛道时,只有L,则全力左转,只有I,则全力直行,只有R,则全力右转。L和I,I和R中一对检测到赛道时该情况与上面相差不大,只是转弯力度减小即可。加入HC-SR04超声波模块当前方有人时,两轮车停止不动,SYN6288语音合成模块发出一条语音,语音内容:“请将手放在测温口前”。超过40秒播放另一条语音,语言内容是“麻烦让一让”。这时将手放在MLX90614非接触式红外测温传感器前,检测温度。当温度大于37时,控制SG90舵机顺时针转动90°,等手拿开后舵机转回原位。
这是一个基于Arduino的项目,旨在设计一个能够使用L298N电机驱动的双轮车,并通过三个TCRT5000循迹模块来检测赛道。我们将这三个红外循迹模块命名为L(左)、I(中)、R(右)。
以下是程序的实现思路:
1. 首先,需要将L298N电机驱动模块连接到Arduino,并连接两个电机用于驱动车辆的两个轮子。
2. 将三个TCRT5000循迹模块连接到Arduino的数字引脚上,分别用来检测赛道。
3. 创建一个循环,在循环中读取L、I和R的状态,并根据不同的情况控制车辆的运动。
4. 如果只有L检测到赛道,则全力左转;如果只有I检测到赛道,则全力直行;如果只有R检测到赛道,则全力右转。
5. 如果L和I、I和R中有一对同时检测到赛道,则转弯力度减小即可。
6. 加入HC-SR04超声波模块,用于检测当前方是否有人。如果有人,则停止车辆运动,并通过SYN6288语音合成模块发出一条语音指示。
7. 如果人在超过40秒后仍然在前方,则播放另一条语音,内容为“麻烦让一让”。
8. 将手放在MLX90614非接触式红外测温传感器前,检测温度。如果温度大于37度,则控制SG90舵机顺时针转动90°;当手拿开后,舵机会转回原位。
请注意,以上是程序的基本思路,你还需要根据具体的硬件连接和代码编写进行进一步的调整和实现。希望对你有所帮助!
阅读全文