超音波&0.96OLED-ESP32


超音波&0.96OLED-ESP32

tags: esp32 HC-SR04 超音波模組

0.96OLED實作參考-https://esp32-blairan.blogspot.com/2021/05/091oled-esp32.html

超音波(Arduino)實作參考-https://blairandreamwork.blogspot.com/2021/05/hc-sr04.html

超音波和Arduino上的模組大同小義,不過我使用的模組比一般簡單多了,省去

計算,直接呼叫函式就能取得inc和cm。

接線

————————–      ———————     

//  * | HC-SC04 | ESP32  |     | OLED | ESP32 |

//  * ———————     ———————     

//  * |   Vcc   |   3.3V  |     | Vcc | 3.3V |

//  * |   Trig  |   32    |     | Gnd | GND |

//  * |   Echo  |   33    |     | SCL | 21 |

//  * |   Gnd   |   GND   |     | SDA | 22 |

//  * --------------------- ———————-


程式碼

#include <Ultrasonic.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Adafruit_GrayOLED.h>
#include <Wire.h>

Ultrasonic ultrasonic1(32, 33); //ultrasonic(trig, echo)
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup(){
    Serial.begin(115200);
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C, OLED_RESET);
}

void loop(){
    unsigned int distance=ultrasonic1.read(CM);
    Serial.print(distance); Serial.println(" CM");
    display.clearDisplay();
    display.setTextSize(3);
    display.setTextColor(WHITE);
    display.setCursor(0, 20);
    display.print(distance);
    display.setTextSize(2);
    display.setCursor(60, 40);
    display.println("CM");
    display.display();
    delay(500);
}

這個模組是呼吸超音波用的

#include <Ultrasonic.h>

這些是OLED使用的模組

#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>

#include <Adafruit_GrayOLED.h>

#include <Wire.h>

設制超音波腳位

Ultrasonic ultrasonic1(32, 33); //ultrasonic(trig, echo)

定義oled所須參數

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

初始化

void setup(){
    Serial.begin(115200);
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C, OLED_RESET);
}

void loop(){}裡面

讀取超音波數質並賦予變數

unsigned int distance=ultrasonic1.read(CM);

其中

setTextSize(3),
setTextColor(WHITE),
setCursor(0, 20),
display.display()

一定要有,要不然不會顯示於OLED上

display.clearDisplay();
    display.setTextSize(3);
    display.setTextColor(WHITE);
    display.setCursor(0, 20);
    display.print(distance);
    display.setTextSize(2);
    display.setCursor(60, 40);
    display.println("CM");
    display.display();
    delay(500);

文章作者: blairan
版權聲明: 本博客所有文章除特別聲明外,均採用 CC BY 4.0 許可協議。轉載請註明來源 blairan !
评论
  目錄