目次
ESP32でタッチセンサを使ってピアノを作ってみた
こんにちは!wak-techです。
今回はESP32を使って小さなピアノを作ってみました。と言ってもただタッチセンサから抵抗を伸ばし、それを鍵盤として使用しただけですが…
動いている様子
ESP32のタッチセンサでピアノ作れた♬
センサーの値が起動したての時よりも小さい時に音が鳴ります。#esp32#ワクテク pic.twitter.com/WZm2sgse4g— ????????????-???????????????? (@wak_tech) December 26, 2018
前提知識
ESP32のタッチセンサ関連の記事はこちら
今回は特に下の方のページの原理を使い、音を鳴らしてみます。
音を鳴らす方法などはESP32で圧電スピーカーを動かしてみた【wak-tech Advent Calender 2018】をご覧ください。
実行環境
ソフトウェア関連
- windows10 home
- Arduino 1.8.5
- ESP32 core for arduino 1.0.0
使用部品
- ESP32 dev module
- サンハヤト ブレッドボード
- ジャンプワイヤ
- フレキシブルジャンプワイヤ
- 圧電スピーカー
- 抵抗(510Ω)3本
回路
- GPIO27,14,12(それぞれT7,T6,T5)から伸びている青い線には、実際には3本の抵抗が付いています。
- GPIO25にはただ圧電スピーカーをつなげただけ
以上のように、かなりシンプルな回路です。故にドレミしか音が鳴らせません。
同様の原理を使えば、残り7本のタッチセンサが使えるので鍵盤は再現できるはずです。
ソースコード(コピペで動く)
#define BUZZER_PIN 25
#define BEAT 200
//音階の設定
#define C4 261.6
#define C#4 277.18
#define D4 293.665
#define D#4 311.127
#define E4 329.63
#define F4 349.228
#define F#4 369.994
#define G4 391.995
#define G#4 415.305
#define A4 440
#define A#4 466.164
#define B4 493.883
#define C5 523.251
float default_values[] = {0.0,0.0,0.0};
uint8_t pins[] = {T7,T6,T5};
float tones[] = {C4,D4,E4,0};
float value_ratio = 1;
int i = 0;
int selected = 3; //デフォルトの音の波長を0Hz
//音再生関数
void playTone(float tone){
ledcWriteTone(1,tone);
delay(BEAT);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("ESP32 piano start");
ledcSetup(1,12000, 8);
ledcAttachPin(BUZZER_PIN,1);
//タッチセンサの設定
int i = 0;
for(i=0;i<3;i++){
default_values[i] = touchRead(pins[i]);
Serial.println(default_values[i]);
}
}
void loop() {
selected = 3;
for(i=0;i<3;i++){
value_ratio = touchRead(pins[i])/default_values[i];
if(value_ratio < 0.5){
selected = i;
}
Serial.print(i);
Serial.print(":");
Serial.println(value_ratio);
}
if(selected == 3){
ledcWriteTone(1,0);
delay(100);
}else{
playTone(tones[selected]);
}
Serial.println("---------------------");
}
最後に
twitterアカウントの方で最新記事のお知らせや記事にならないような小さな情報を小出ししています。もしよろしければフォローお願いいたしますm(__)m
ご覧いただきありがとうございました!
ピンバック: ESP32のタッチセンサ3つを使って8個の状態を表してみた | Wak-tech
ピンバック: ESP32のタッチセンサ3つでドレミファソラシまで鳴らせるピアノを作ってみた | Wak-tech
ピンバック: ESP32-DevKitCを挿してタッチピアノにする基板「ESPiano」を作った | Wak-tech