LoginSignup
6
4

More than 3 years have passed since last update.

esp32内蔵DACとトランジスタで波形音を遊ぶ

Last updated at Posted at 2019-08-01

esp32で音を扱いたくて、その前にトランジスタをあまり扱ってなかったので実験と遊びです
ArduinoIDEでやっていきます

環境

MacOS v10.14.3
ArduinoIDE v1.8.8
ESP32(Arduinoボード) v1.0.2
ESP32-DevKitC http://akizukidenshi.com/catalog/g/gM-11819/
トランジスタ 2SA1015GR http://akizukidenshi.com/catalog/g/gI-00882/
このトランジスタはなんか近くにあったのでこれを使ってみます

esp32の内蔵DACを利用

参考サイト

サンプルコード

dacTest1.ino

double i=0.0;
void setup() {
  Serial.begin(115200);
}
void loop() {
//  Serial.println(128+128*sin(i));
  dacWrite(25, 128+128*sin(i));
  i+=0.01;
}

いたってシンプルでした
esp32の内蔵dacはgpio25と26固定らしく、今回は25を利用しました
参考サイトの上のやつではdac.hをインクルードしていて、それを使えばDAC_CHANNEL_1という定数が使えますね
そして単純にsin()を利用して0〜255の値でsin波を生成しdacWrite()で出力しています

配線

IMG_1122のコピー.jpg

結果

音はなったが小さいです
そしてpwmで出すビープ音とあまり変わらない気が...

sin波以外も試す

参考サイト

サンプルコード

参考サイトのまんまです

dacTest2.ino

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

void loop() { // Generate a Sine wave
  for (int deg = 0; deg < 360; deg = deg + 8){
    dacWrite(25, int(128 + 80 * (sin(deg*PI/180)+1/pow(3,2)*sin(3*deg*PI/180)+1/pow(5,2)*sin(5*deg*PI/180)+1/pow(7,2)*sin(7*deg*PI/180)+1/pow(9,2)*sin(9*deg*PI/180)))); // Triangle
  }
}

参考サイトの「ESP32_DAC_Simple.ino」からSquareからTriangleに変えてみたものです

結果

なんか変わった気がするが、やはり小さい?

トランジスタを使うぞ!

参考サイト

ここのサイトがなんか面白そうだったので同じようにやってみるぞ!
人が端子に両手で触れて、微量な電流をトランジスタのベースに送り、音量を変化させたい

先ほどのソースコードから変えずに配線だけ変更します

配線

IMG_1121のコピー.jpg

参考サイトと違うところは5v出力なところと、抵抗を120Ωにしています
写真左と下側に伸びている赤と黄色を触れば音がでるはずです

結果

結局音は小さいですが動画をどうぞ

あまりぎゅっと触ると電流が流れずらいのか逆に音が小さくなるっぽくて面白いですね
あ〜最初から作りたかったものから遠ざかる気がする〜が面白いのできそ〜

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4