본문 바로가기

카테고리 없음

(ESP32/DAC) 내장 DAC 기능으로 톤 발생하기

ESP32의 30핀 모델에서 핀25와 핀26은 내장 DAC 기능을 가지고 있는데, 이를 활용하면 ESP32에서 숫자를 출력해서 0~3.3V를 이 핀을 통해 내보낼 수 있다. 일반 DAC 칩의 기능을 이 핀 둘이 가지고 있는 것이다. 드론봇 워크샵의 자료를 참조했다.

 

https://dronebotworkshop.com/esp32-dac/

 

아래 예제에서는 esp32의 DAC판을 활용해 DacESP32라는 라이브러리를 사용하고 있는데, 50Hz에서 3000Hz를 발생시켜 스피커를 통해 내보내고 있다.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);

#include <DacESP32.h>
DacESP32 dac1(GPIO_NUM_25);
const int default_hz = 1000;

void print_Hz(const int Hz) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("ESP32 interanl DAC test");
  lcd.setCursor(0, 1);
  lcd.print("DacESP32.h library");
  lcd.setCursor(0, 2);
  lcd.print("Sound of 50~3000 Hz");
  lcd.setCursor(0, 3);
  lcd.print(Hz);
  lcd.setCursor(5, 3);
  lcd.print("Hz");
}

void setup() {
  Serial.begin(115200);

  lcd.init();
  lcd.backlight();
  dac1.outputCW(default_hz);
  print_Hz(default_hz);

  delay(2000);
}

const int ratio = 50;

void loop() {
  for (int i = 1; i < 60; i++) {

    dac1.outputCW(i*ratio);
    Serial.println(i*ratio);
    
    print_Hz(i*ratio);
    delay(200);
  }
}

 

https://www.youtube.com/shorts/p1xWEM8MbjE