#topicpath

** みんな試作機 [#y6742b06]
--- 作ってみたものをリストアップ
*** Arduino と CdS と圧電スピーカを使ったテルミンもどき楽器 [#z543e351]
-- 概要:~
明るさの変化でドレミを奏でます。音量は変わりません。とっても明るいと音は鳴りませんので、あまりやかましくありません。~
2010年度オープンキャンパスのために作成しました。
~
-- ポイント~
--- 明るさを学習(というほど大袈裟ではない)して、音階を決める値を自律的に変更します。~
電源電圧が変わっても大丈夫なはずです。
--- プログラムがこなれていない。(試作ですから。)
--- 安い(例によって。)
--- 簡単(例によって。)
--- 簡単(例によって。)~
→ 気楽に作りやすい = ガラクタの素質がある!
--- 安い(例によって。)~
→ 保存できる = ガラクタがたまる!
~
~
-- 配線~
[[USBに直結するタイプ>../Arduino の自作/USBTYPE]]をもとに作成。~
&ref(sany0126.jpg,,320x240);~
~
-- プログラム~
Arduino 017 で [[Tone>http://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation]] を使いました。
~
 #include <Tone.h>
 #include <math.h>
 
 Tone notePlayer;
 int val = 0;
 int maxv = 0;
 int minv = 1024;
 int note[]={ 262, 294, 330, 349, 393, 440, 494, 523};
 int thre[]={minv,minv,minv,minv,minv,minv,minv,minv};
 
 void setup(void)
 {
 	notePlayer.begin(13);
 }
 
 void loop(void)
 {
 	int i;
 	val = analogRead(0);
 	
 	if ( minv > val ){
 		minv = val;
 	}
 	if ( maxv < val ){
 		maxv = val;
 	}
 	for( i = 0; i < 8; i++ ){
 		thre[i] = maxv - (int)((maxv-minv)*pow(((1.0*i+0.3)/7.5),0.1));
 	}
 	// lesser : brighter 
 	if (       val > thre[0] ){
 		notePlayer.play(note[0],100);
 	}else if ( val > thre[1] ){
 		notePlayer.play(note[1],100);
 	}else if ( val > thre[2] ){
 		notePlayer.play(note[2],100);
 	}else if ( val > thre[3] ){
 		notePlayer.play(note[3],100);
 	}else if ( val > thre[4] ){
 		notePlayer.play(note[4],100);
 	}else if ( val > thre[5] ){
 		notePlayer.play(note[5],100);
 	}else if ( val > thre[6] ){
 		notePlayer.play(note[6],100);
 	}else if ( val > thre[7] ){
 		notePlayer.play(note[7],100);
 	}
 	delay(200);
 }
~
~
-- 動作の様子([[YouTube>http://www.youtube.com/watch?v=bhNO1FlrfA8]])~
#u2b(id=bhNO1FlrfA8)~
~
-- 履歴~
--- 2010-06-14 動画掲載~
--- 2010-06-11 音階を分けるAD変換された値を自動的に決めるように変更~
--- 2010-06-10 音が出る。配線もプログラムも、こんなに簡単。


トップ   新規 検索 最終更新   ヘルプ   最終更新のRSS