第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 distancia 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 distancia 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 distancia 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 distancia 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 distancia segura, e ligaremos o LED VERDE
else if(distancia 《= 40)
{
digitalWrite(PIN_GREEN_LED, HIGH);
}
//para distancias maiores que 40, tomaremos como uma distancia sem perigo
//acenderemos o LED AZUL para indicar
else
{
digitalWrite(PIN_BLUE_LED, HIGH);
}
}
責任編輯:wv
-
超聲波傳感器
+關注
關注
18文章
583瀏覽量
35927 -
ESP32
+關注
關注
18文章
971瀏覽量
17203
發布評論請先 登錄
相關推薦
評論