基于Atmel atmega328p plained mini用3个HC-SR04超声波测量距离控制3个灯泡,灯泡只需要亮3秒,然后关闭
时间: 2024-05-02 08:21:29 浏览: 92
以下是一个基于Atmel atmega328p plained mini的程序,可以使用3个HC-SR04超声波测量距离并控制3个灯泡:
```
#include <NewPing.h>
#define TRIG_PIN_1 2
#define ECHO_PIN_1 3
#define TRIG_PIN_2 4
#define ECHO_PIN_2 5
#define TRIG_PIN_3 6
#define ECHO_PIN_3 7
#define LED_PIN_1 8
#define LED_PIN_2 9
#define LED_PIN_3 10
#define MAX_DISTANCE 200
NewPing sonar1(TRIG_PIN_1, ECHO_PIN_1, MAX_DISTANCE);
NewPing sonar2(TRIG_PIN_2, ECHO_PIN_2, MAX_DISTANCE);
NewPing sonar3(TRIG_PIN_3, ECHO_PIN_3, MAX_DISTANCE);
void setup() {
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
pinMode(LED_PIN_3, OUTPUT);
}
void loop() {
// Measure distances
int distance1 = sonar1.ping_cm();
int distance2 = sonar2.ping_cm();
int distance3 = sonar3.ping_cm();
// Turn on LED 1 if distance is less than 10cm
if (distance1 < 10) {
digitalWrite(LED_PIN_1, HIGH);
delay(3000);
digitalWrite(LED_PIN_1, LOW);
}
// Turn on LED 2 if distance is between 10cm and 20cm
if (distance2 >= 10 && distance2 < 20) {
digitalWrite(LED_PIN_2, HIGH);
delay(3000);
digitalWrite(LED_PIN_2, LOW);
}
// Turn on LED 3 if distance is between 20cm and 30cm
if (distance3 >= 20 && distance3 < 30) {
digitalWrite(LED_PIN_3, HIGH);
delay(3000);
digitalWrite(LED_PIN_3, LOW);
}
}
```
该程序使用NewPing库来进行超声波测距,使用digitalWrite函数来控制LED灯的开关。程序首先设置了引脚模式,然后在循环中使用超声波传感器测量距离,并根据距离控制LED灯的开关。如果距离小于10厘米,则打开第一个灯,并在3秒后关闭。如果距离在10厘米到20厘米之间,则打开第二个灯,并在3秒后关闭。如果距离在20厘米到30厘米之间,则打开第三个灯,并在3秒后关闭。
阅读全文