ESP32로 OLED 디스플레이에 시간 표시

13295 단어 Arduino

목적



ESP32에서 OLED 디스플레이 SSD1331에 현재 시간을 얻는 웨어러블 장치 개발의 선구자.

미리 다운로드



ESP32에 필요한 ESP32 라이브러리을 다운로드합니다.
현재 시간을 얻으려면 NTP (Network Time Protocol)에서 시간 취득 라이브러리을 가져옵니다.

ESP32 보드를 추가하는 방법



・Windows의 방법으로 추가 방법을 소개합니다.
Arduino가 설치된 위치에 폴더를 만들고 이전에 esp32에 다운로드 한 "arduino-esp32-master"를 저장하십시오.

  예 C:\Program Files (x86)\Arduino\hardware\espressif\esp32\

esp32\tools에서 get.exe를 시작합니다.
시작하면 필요한 파일이 다운로드됩니다.

· CP210x USB-UART 브리지 VCP 드라이버을 다운로드하여 설치하십시오. .

목차


  • 전자 부품 목록
  • 배선도
  • 현재 시간을 얻는 프로그램
  • 동영상

  • 1. 전자 부품 목록




    이름
    사양
    개수


    ESP-WROOM-32
    ESP32
    1개

    소형 유기 EL 디스플레이
    SSD1331
    1개

    브렛 보드

    1개

    케이블

    7개


    2. 배선




    ESP32
    OLED


    5
    SCLK

    18
    MOSI

    12
    ChipSelect

    13
    DC

    14
    Reset RST


    3. 현재 시간을 취득하는 프로그램



    ESP32.rb
    #include <WiFi.h> // WiFi接続
    #include <WiFiUdp.h>
    const char *ssid     = "*******"; //WiFi接続ID ;
    const char *password = "*******"; //WiFi接続パスワード ;
    
    #include <NTPClient.h> //時間取得ライブラリ
    WiFiUDP ntpUDP;
    NTPClient timeClient(ntpUDP);
    
    // OLEDピン定義
    const uint8_t SCLK_OLED = 5; //SCLK (SPI Clock)
    const uint8_t MOSI_OLED = 18; //MOSI (Master Output Slave Input)
    const uint8_t CS_OLED   = 12; //OLED ChipSelect
    const uint8_t DC_OLED   = 13; //OLED DC (Data/Command)
    const uint8_t RST_OLED  = 14; //OLED Reset RST
    // 色の設定
    #define BLACK 0x0000 // 黒
    #define BLUE 0x001F // 青
    #define RED 0xF800 // 赤
    #define GREEN 0x07E0 // 緑
    #define CYAN 0x07FF // シアン
    #define MAGENTA 0xF81F // マゼンダ
    #define WHITE 0xFFFF // 白
    // ライブラリの設定
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1331.h>
    #include <SPI.h>
    Adafruit_SSD1331 afficheur = Adafruit_SSD1331(CS_OLED, DC_OLED, MOSI_OLED, SCLK_OLED, RST_OLED);
    
    void setup() {
      Serial.begin(115200); // シリアルモニタ開始
      afficheur.begin(); // OLEDディスプレイの開始
    
      // WiFi接続開始
      WiFi.begin(ssid, password);
      while ( WiFi.status() != WL_CONNECTED ) {
    
        Serial.print ( "." );
      }
      // 現在時間の取得
      timeClient.begin();
      timeClient.setTimeOffset(32400);
    }
    void loop() {
    
      // 時間の表示
      timeClient.update();
      String jp_time = timeClient.getFormattedTime();
      Serial.println(jp_time);
      Serial.print("\n");
    
      afficheur.setCursor(0,0); // cursor is in x=0 and y=0
      afficheur.setTextColor(WHITE); // テキストカラー白
      afficheur.print("--------");  // テキスト表示  
      afficheur.fillScreen(BLACK); // バックグラウンド黒
      afficheur.setCursor(0,16); // cursor is in x=0 and y=16
      afficheur.setTextSize(2); // テキストサイズ
      afficheur.setTextColor(WHITE); // テキストカラー白
      afficheur.print(jp_time); //テキスト表示
      afficheur.setCursor(0,31); // cursor is in x=0 and y=31
      afficheur.setTextColor(WHITE); // テキストカラー白
      afficheur.print("--------");  // テキスト表示  
      afficheur.setCursor(0,46); // cursor is in x=0 and y=46
      afficheur.setTextColor(WHITE); // テキストカラー白
      afficheur.print("   ");  // テキスト表示  
    
      delay(1000); // 1000 us(1)毎に更新
    }
    

    디스플레이에 굽는 것을 피하기 위해 디스플레이를 1초 간격으로 화면을 업데이트합니다.

    4. 동영상



    아래 이미지를 선택하면 동영상이 재생됩니다.
    YouTube로 날아갑니다.

    좋은 웹페이지 즐겨찾기