ESP8266 (ESP-WROOM-02)으로 7 세그먼트 LED 제어

개요



ESP8266 (ESP-WROOM-02 이하 WROOM02)을 사용하여 7 세그먼트 4 디지트 LED를 제어합니다.

소개



WROOM02는 Wi-Fi 통신 기능이 내장된 Arduino(로 사용할 수 있는 IC)입니다.

※센서를 사용하려면 아래 참조.
ぃ tp // 이 m / 에우 gs / ms / 9 또는 4093813db71278b39

이번에는 7 세그먼트 4 디지트 (5461AS 캐소드 커먼)의 LED를 제어합니다.

회로도



Eagle 프로젝트 전체는 이 Github에 올라 있습니다.
htps : // 기주 b. 코 m / 에우 gs / 에 g 7 세 g 4 ts

실제의 회로도는 이하.



1 LED당 20mA 정도이므로, 애노드측은 소스 드라이버를 사용하지 않아도 된다고 생각합니다.
그래서, 캐소드측만, 싱크 드라이버(TD62083APG)를 사용하고 있습니다.

[주의]
- WROOM02는 3.3V 구동입니다. 전원 회로는 별도로 사용하십시오.
- USB-시리얼 변환의 인터페이스는 회로도에서 분리되어 있으므로 TXD/RXD, GND에 적절히 접속해 주십시오.

스케치



스케치는 다음과 같습니다.
- 10000부터 카운트다운합니다.
- 1 디지트를 4msec로 다이나믹 점등하고 있습니다. 이보다 길고 깜박입니다.
#include "Ticker.h"

Ticker ticker;
Ticker ticker2;

#define SCK 14                // CLK       クロック信号出力ピン
#define RCK 12                // LOAD      ラッチ動作出力ピン
#define SI  13                // MOSI - DI データ信号出力ピン
#define CLR 15                // クリア

const int segments[] = {
//  HGFEDCBA
  0b00111111, // 0
  0b00000110, // 1
  0b01011011, // 2
  0b01001111, // 3
  0b01100110, // 4
  0b01101101, // 5
  0b01111101, // 6
  0b00100111, // 7
  0b01111111, // 8
  0b01101111, // 9
};

const int digits[] = {
//  HGFEDCBA
  0b00000001, // 0
  0b00000010, // 1
  0b00000100, // 2
  0b00001000, // 3
};

void out1(int x, int d) {
  digitalWrite(CLR, LOW) ; // Clear
  digitalWrite(CLR, HIGH) ;

  digitalWrite(RCK, LOW) ;
  shiftOut(SI, SCK, MSBFIRST, digits[d]);
  shiftOut(SI, SCK, MSBFIRST, segments[x]);
  digitalWrite(RCK, HIGH) ;        // ラッチ信号を出す
}

void out4(int val) {
  static int p = 0;
  p = ++p % 4;
  int x[4];
  for (int i = 0; i < 4; i++) {
    x[i] = val % 10;
    val = val / 10;
  }
  out1(x[p], p);
}

void setup() {
  Serial.begin(115200);
  Serial.print("\n");

  pinMode(SCK, OUTPUT) ;
  pinMode(RCK, OUTPUT) ;
  pinMode(SI,  OUTPUT) ;
  pinMode(CLR, OUTPUT) ;

  delay(3000) ;            // 3S後開始

  Serial.print("Start\n");

  ticker.attach_ms(1000, timer);
  ticker2.attach_ms(4, loop2);
}

int cnt = 10000;

void loop() {
}

void loop2() {
  out4(cnt);
}

void timer() {
  cnt--;
  Serial.print(cnt);
  Serial.print("\n");
}

Arduino 스케치 전체는 여기 Github에서.
htps : // 기주 b. 코 m / 에우 gs / s tch 7 세g 4 ㎢ ts

제작



실제로 만들어 보면, 이런 느낌입니다.



요약



ESP8266 (ESP-WROOM-02 이하 WROOM02)을 사용하여 7 세그먼트 4 디지트 LED를 제어했습니다.
다이나믹 점등의 주기를, 깜박이지 않고 길게 하는 것은, 무엇인가 수법이 있습니까?

좋은 웹페이지 즐겨찾기