在arduino IDE环境下写一个具有以下功能的程序:两个超声波传感器分别控制led灯1和led灯2,当超声波检测信号时led灯灭,用数码管显示有多少个led灯亮
时间: 2023-05-24 13:01:27 浏览: 96
超声波测距_arduino_lcd1602_超声波测距_超声波位移测量_超声_
5星 · 资源好评率100%
以下是在arduino IDE环境下,具有上述功能的程序:
```
#include <NewPing.h>
#define TRIGGER_PIN1 2
#define ECHO_PIN1 3
#define TRIGGER_PIN2 4
#define ECHO_PIN2 5
#define MAX_DISTANCE 200
int led1 = 6;
int led2 = 7;
int digital_display = 8;
NewPing sonar1(TRIGGER_PIN1, ECHO_PIN1, MAX_DISTANCE);
NewPing sonar2(TRIGGER_PIN2, ECHO_PIN2, MAX_DISTANCE);
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(digital_display, OUTPUT);
}
void loop() {
delay(50);
int distance1 = sonar1.ping_cm();
int distance2 = sonar2.ping_cm();
if (distance1 < 20) {
digitalWrite(led1, HIGH);
} else {
digitalWrite(led1, LOW);
}
if (distance2 < 20) {
digitalWrite(led2, HIGH);
} else {
digitalWrite(led2, LOW);
}
int num_leds = calculate_leds();
display_to_digit(num_leds);
}
int calculate_leds() {
int num_leds = 0;
if (digitalRead(led1) == HIGH) {
num_leds++;
}
if (digitalRead(led2) == HIGH) {
num_leds++;
}
return num_leds;
}
void display_to_digit(int num) {
int digit_pin[] = {9, 10, 11, 12};
int digits[] = {
0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00000111, //7
0b01111111, //8
0b01101111 //9
};
for(int i=0; i<4; i++) {
digitalWrite(digit_pin[i], HIGH);
delay(1);
digitalWrite(digit_pin[i], LOW);
shiftOut(digital_display, digital_display, MSBFIRST, digits[num%10]);
num /= 10;
delay(1);
}
}
```
使用两个超声波传感器分别控制LED灯1和LED灯2,当两个超声波传感器检测到物体距离小于20厘米时,将相应的LED灯点亮。使用另一个函数计算有多少个LED灯被点亮,然后将此数字显示在四位数码管上。
阅读全文