前回は、BEEP音だけを鳴らしただけだが、BEEP音が「圧電ブザーなのか」「I2S+WM8960経由のスピーカーなのか」が判別しにくかった。
そこで今回は、出力先を切り替えて音の違いを確認するコードを実行してみた。
・圧電ブザー(WIO_BUZZER)
・スピーカー(I2S → WM8960 → アンプ)
の2つを順番に鳴らし、液晶表示で現在の出力先も確認できるようにした。
#include <Audio.h>
#include <TFT_eSPI.h>
#include <Wire.h>
AudioSynthWaveformSine sine1;
AudioOutputI2S i2s1;
AudioConnection patchCord(sine1, 0, i2s1, 0);
AudioConnection patchCord2(sine1, 0, i2s1, 1);
AudioControlWM8960 codec;
TFT_eSPI tft;
void setup() {
pinMode(WIO_BUZZER, OUTPUT);
Wire.begin();
AudioMemory(8);
codec.enable();
codec.volume(0.8);
tft.begin();
tft.setRotation(3);
tft.fillScreen(TFT_BLACK);
tft.setTextSize(2);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
// ① Buzzer
tft.setCursor(10, 60);
tft.println("Buzzer: ON");
tone(WIO_BUZZER, 440);
delay(1000);
noTone(WIO_BUZZER);
tft.setCursor(10, 80);
tft.println("Buzzer: OFF");
delay(1000);
// ② Speaker
tft.fillScreen(TFT_BLACK);
tft.setCursor(10, 60);
tft.println("Speaker: ON");
sine1.frequency(440);
sine1.amplitude(0.6f);
delay(1000);
sine1.amplitude(0.0f);
tft.setCursor(10, 80);
tft.println("Speaker: OFF");
}
void loop() {}
うん、違いは分かった。
0 件のコメント:
コメントを投稿