带超声波传感器的ESP32的制作

电子说

1.3w人已加入

描述

第1步:WiFi NodeMCU-32S ESP-WROOM-32

超声波传感器

第2步:显示

对于显示器,在此程序集中,我们展示了如何使用I2C,该I2C允许仅通过两根电线发送大量信息。

第3步:超声波传感器

超声波传感器

我们解释说HC-SR04是最常见的超声波传感器,广泛用于Arduino,既便宜又容易找到。请记住,它可以测量的最小距离是2英寸,最大距离是4米。另一个细节是5伏特为其供电。

步骤4:连续蜂鸣器

步骤5:LEDs

有4个带220欧姆电阻的彩色LED。

步骤6:组装

超声波传感器

HC-SR 04的主要细节是它具有电源,并使用两个引脚,即触发器和Echo,它们出现在源代码中。

步骤7:库

在此程序集中,我们使用了两个库:TM1637Display和Ultrasonic。 PDF文件包含两个链接的下载地址:http://www.fernandok.com/2017/12/sensor-ultrassonico-com-esp32.html

步骤8:源代码

在这一部分中,您可以看到有关项目操作的演示。在代码中,我们已经声明了TM1637Display和Ultrasonic,其读取范围为250毫秒。这是选择的时间,以避免数字快速变化。接下来,我们定义用于LED和蜂鸣器的引脚。我声明了另一个变量“ unsigned int”,它将保存设备的距离。

//Biblioteca responsável para comunicação com o display de 7 segmentos

#include

//Carrega a biblioteca do sensor ultrassonico

#include 《 ultrasonic.h》

#define INTERVALO_LEITURA 250 //(ms)

//definição dos PINOS que utilizaremos para os LEDS e o BUZZER

#define PIN_BLUE_LED 16

#define PIN_GREEN_LED 17

#define PIN_YELLOW_LED 18

#define PIN_RED_LED 19

#define PIN_BUZZER 21

//variável responsável por armazenar a distância lida pelo sensor ultrassônico

unsigned int distancia = 0;

传感器和显示

在此步骤中,我们定义用于控制超声传感器和显示器的对象的引脚和构造函数。

//conexão dos pinos para o sensor ultrasonico

#define PIN_TRIGGER 4

#define PIN_ECHO 5

//Inicializa o sensor nos pinos definidos acima

Ultrasonic ultrasonic(PIN_TRIGGER, PIN_ECHO);

// Module connection pins (Digital Pins)

#define CLK 14

#define DIO 13

//Inicializa o display nos pinos definidos acima

TM1637Display display(CLK, DIO);

设置

在此功能中,我们以9600的速度初始化串行,配置引脚,然后配置显示器的亮度。

void setup()

{

Serial.begin(9600);

configurarPinos();

//configura o brilho do display com valor máximo

display.setBrightness(0x0a);

Serial.println(“Setup.。.”);

}

引脚配置

在这里,我们将四个LED和蜂鸣器都设置为pinMode,均为OUTPUT,因为它们是输出。

/*

CONFIGURA O MODOS DE CADA UM DOS PINOS QUE UTILIZAREMOS COMO SAIDA

*/

void configurarPinos()

{

pinMode(PIN_BLUE_LED, OUTPUT);

pinMode(PIN_GREEN_LED, OUTPUT);

pinMode(PIN_YELLOW_LED, OUTPUT);

pinMode(PIN_RED_LED, OUTPUT);

pinMode(PIN_BUZZER, OUTPUT);

}

回路

在“循环”功能中,我们进行了距离和延迟检查,即读取间隔。

void loop()

{

verificarDistancia();

delay(INTERVALO_LEITURA);

}

获取距离

现在,我们要读取传感器计算出的当前距离。

/*

FAZ A LEITURA DA DISTANCIA ATUAL CALCULADA PELO SENSOR

*/

int getDistance()

{

//faz a leitura das informacoes do sensor (em cm)

int distanciaCM;

long microsec = ultrasonic.timing();

// pode ser um float ex: 20,42 cm se declarar a var float

distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM);

return distanciaCM;

}

检查距离

我们要检查4位显示屏上显示的距离。然后,我们擦除4个LED并使蜂鸣器静音。这种情况可用于许多应用程序。

/*

VERIFICA A DISTANCIA ATUAL QUE O SENSOR ULTRASONIC ESTA LENDO

E EM SEGUIDA, IMPRIME O VALOR NO DISPLAY, E ACENDE O LED CORRESPONDENTE

*/

void verificarDistancia()

{

//recupera a distância atual lida pelo sensor

distancia = getDistance();

//imprime no display o valor lido

display.showNumberDec(distancia);

//esse FOR tem como objetivo apagar todos os LEDS que estejam acesos.

for(int i=PIN_BLUE_LED; i《=PIN_RED_LED; i++)

{

digitalWrite(i, LOW);

}

//desliga o BUZZER

digitalWrite(PIN_BUZZER, LOW);

//caso a distancia lida seja menor ou igual a 5, tomaremos como uma distância de perigo

//então acenderemos o LED VERMELHO e ligaremos o BUZZER

if( distancia 《= 5 )

{

digitalWrite(PIN_RED_LED, HIGH);

digitalWrite(PIN_BUZZER, HIGH);

}

//caso a distancia seja maior que 5 e menor ou igual a 20,

//tomaremos como uma distância de atenção, e ligaremos o LED AMARELO

else if(distancia 《=20)

{

digitalWrite(PIN_YELLOW_LED, HIGH);

}

//caso a distancia seja maior que 20 e menor ou igual a 40,

//tomaremos como uma distância segura, e ligaremos o LED VERDE

else if(distancia 《= 40)

{

digitalWrite(PIN_GREEN_LED, HIGH);

}

//para distâncias maiores que 40, tomaremos como uma distância sem perigo

//acenderemos o LED AZUL para indicar

else

{

digitalWrite(PIN_BLUE_LED, HIGH);

}

}
       责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分