第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
-
超声波传感器
+关注
关注
18文章
575浏览量
35881 -
ESP32
+关注
关注
17文章
953浏览量
17032
发布评论请先 登录
相关推荐
评论