LoginSignup
0
0

More than 3 years have passed since last update.

初心者向け Arduinoで自作楽器を作ろう!!

Last updated at Posted at 2020-04-07

皆さん、自作楽器作りたくないですか?
さっそく作りましょう。

楽器の代表例としてピアノを作っていきます。

準備するもの

  • arduino
  • スイッチ
  • ジャンパー線
  • ブザー

配線の仕方

piano.jpg
上の写真のように配線していきます。
ブザーが皆さんの手元の物と少し違いますが、形が違うだけで中身は一緒です。

プログラミング

arduino_piano.ino
void setup(){
pinMode(2,INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
pinMode(4,INPUT_PULLUP);
pinMode(5,INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
pinMode(9,INPUT_PULLUP);
pinMode(12,OUTPUT);
}

void loop(){
int frequency=0;

if(digitalRead(2)==LOW){
 frequency=523;//ド
}
if(digitalRead(3)==LOW){
 frequency=587;//ㇾ
}
if(digitalRead(4)==LOW){
 frequency=659;//ミ
}
if(digitalRead(5)==LOW){
 frequency=698;//ファ
}
if(digitalRead(6)==LOW){
 frequency=784;//ソ
}
if(digitalRead(7)==LOW){
 frequency=880;//ラ
}
if(digitalRead(8)==LOW){
 frequency=988;//シ
}
if(digitalRead(9)==LOW){
 frequency=1046;//ド
}

if(frequency!=0){
tone(12,frequency);
}else{
noTone(12);
}
}

コードの解説:

備考:○は何かしらの値が入ると認識してください。

pinMode(○,INPUT_PULLUP);

これはarduinoの端子を入力モードにするという関数です。
INPUT_PULLUPとはarduino内部のPULLUP抵抗を使用するという物です。(よくわからない場合は読み飛ばしてください)

if(digitalRead(○)==LOW){
frequency=○;
}

digitalRead(○) で○ピンがLOWの状態かHIGHの状態か読み取ります。
○ピンがLOWの状態であればLOW==LOWになりif文がTrueになりif文の中のfrequency=○;が実行されます。ここでスピーカーが発生させる音の周波数が決定されます。

if(frequency!=0){
tone(12,frequency);
}else{
noTone(12);
}

if(frequency!=0)でfrequencyが0でないか判断し、値が代入されているか判断します。
もし代入されていなかったらnoTone(12);でブザーを停止させます。
されていた場合はtone(12,frequency);で指定した周波数の音を発生させます。

演奏してみよう

ちゃんと音はなりましか?
ドレミファソラシドとなっているはずです。
自分で改造してみたくなったらfrequencyの値を変えると音が変わります。
またボタンの数を増やしたり、録音モードを作ってみても面白そうですね。

最後に

皆さん電子工作を楽しんでいただけましたか?
電子工作の醍醐味はブログをみて作った後にいかに自分で改造するかだと思っています。
ぜひやってみてください!!

それでは、おつかれさまでした!!

0
0
1

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
0
0