Arduino/みんな試作機/MoriminAdvanced2
をテンプレートにして作成
[
トップ
] [
新規
| |
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
** もりみんアドバンスト [#lfc33146]
-- 概要:~
明るさの変化でドレミを奏でます。音量は変わりません。とっ...
2010年度に児童向けの電気工作のために作成しました。[[Ardui...
CdSではなく、環境負荷の少ないフォトトランジスタを使ってい...
~
~
-- ポイント~
--- 明るさを学習して、音階を決める値を自律的に変更します。~
--- 簡単(例によって。)~
--- 安い(例によって。)~
| 部品 | 値段(円) | まとめ買い個数|購入 |h
| マイコンATmega168P | 200 | 14個以上 |秋月電子 http://ak...
| フォトトランジスタ | 50 | 2個入り| 秋月電子http://akizu...
| 圧電スピーカ| 40 | 40 個入り| 秋月電子 http://akizukide...
| コンデンサ 0.1μF | 4.75 | 500 個入り|秋月電子 http://ak...
| 抵抗 100kΩ 1/4 W| 1 | 100本入り | 秋月電子 http://akizu...
| 電池ボックス | 50 | 10個以上 |秋月電子 http://akizukide...
| 単三乾電池2本 | 25 | 8本 | ダイソー |
|スチレンボード | 6.56| 16枚分 | ダイソー |
|ホチキスの針 | ほとんど0 | | |
| | | | |
|合計 | 約380 | | |
~
-- マイコン~
--- ハードウエアはArduino 互換[[ミニマルタイプ>../../Ardu...
--- ブートローダは、ハードウエアに対応して[[ミニマル>../....
--- スケッチ~
次のようなスケッチを導入してあります。~
光センサーの近くに物体がある時には明るさの変化が激しいの...
ここでは、CdS セルではなく、光センサ(フォトトランジスタ)...
#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};
int sdelay=50; // sound length
int idelay=250; // interval length
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++ ){
//original: thre[i] = maxv - (int)((maxv-minv)*pow(((1...
//linear: thre[i] = maxv - (int)( (maxv-minv)*((1.0*i+...
thre[i] = maxv - (int)((maxv-minv)*pow(((1.0*i+0.1)/7...
}
// lesser : brighter
if ( val > thre[0] ){
notePlayer.play(note[0],sdelay);
}else if ( val > thre[1] ){
notePlayer.play(note[1],sdelay);
}else if ( val > thre[2] ){
notePlayer.play(note[2],sdelay);
}else if ( val > thre[3] ){
notePlayer.play(note[3],sdelay);
}else if ( val > thre[4] ){
notePlayer.play(note[4],sdelay);
}else if ( val > thre[5] ){
notePlayer.play(note[5],sdelay);
}else if ( val > thre[6] ){
notePlayer.play(note[6],sdelay);
}else if ( val > thre[7] ){
notePlayer.play(note[7],sdelay);
}
delay(idelay);
}
-- 配線
--- Arduino 互換[[ミニマルタイプ>../../Arduino の自作/MIN...
スピーカ、抵抗、光センサを外せば、Arduino として動作しま...
&ref(MoriminAd_Circuit.png,,359x340);~
※ 意外にもホチキスの針はコーティングしてあって通電しない...
通電しないときは紙やすりで被覆をとって下さい。
-- 配布資料~
--- &ref(もりみんアドバンストWeb用.pdf);
-- 履歴
--- 2010-08-08 ウェッブページ作成
--- 2010-07-31, 08-01 夏休みこども理科・エネルギー教室
//
// --- スピーカ :黒-グラウンド、赤-デジタル13番(マイコ...
// --- 抵抗10kΩ:アナログ0番(マイコンの23番ピン)と電源
// --- CdSセル :アナログ0番ピン(マイコンの23番ピン)とグ...
// &ref(sany0126.jpg,,320x240);~
// ※ スケッチを流し込んでしまった後は、ツェナーダイオード...
// ~
// -- ユニバーサル基板で作る~
// Arduino の Duemilanove などは、なぜフラットパッケージ~
// (QFP,4方に細かい足が出ているタイプ)を使わないのだろう...
// と思っていた。DIP(太い足が2列に並んでブレッドボードや~
// ユニバーサル基板に使いやすいタイプ)よりも、面積が小さ...
// 基板設計も楽だろうし、足の数も多くなるし、安いし、QFP~
// (4方に細かい足が出ているタイプ)の方がより良いように思...
// ~
// ところが、今回の試作で、DIP であることの重要性を痛感し...
// どうして DIP なのかわかったように思う。それは、おそら...
// マイコンを抜いて、基板に挿せるからだ。言葉をかえると、~
// プロトタイプを、よりプロダクトに近いものにチップを移植...
// ことで移行できるからだ。~
// ~
// &ref(SANY0135.JPG,,320x240);~
// ~
// -- プログラム~
// Arduino 017 で [[Tone>http://code.google.com/p/rogue-c...
// Arduino 018 に含まれる Tone はごく一部なので、やはり T...
// #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)...
// }
// // 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...
// #youtube_res(bhNO1FlrfA8)~
// ~
// *** 記録 [#h2dd6f8b]
// -- 参考URL
// --- [[Arduino Tone Library>http://code.google.com/p/ro...
// --- [[Arduinoで遊ぼう - 圧電スピーカでチクタク/なんで...
// --- [[MTM05 Scratch ワークショップ>http://scratch-ja.o...
// -- 履歴~
// --- 2010-06-16 ユニバーサル基板化~
// --- 2010-06-14 動画掲載~
// --- 2010-06-11 音階を分けるAD変換された値を自動的に決...
// --- 2010-06-10 音が出る。配線もプログラムも、こんなに...
//
// --- スピーカ :黒-グラウンド、赤-デジタル13番(マイコ...
// --- 抵抗10kΩ:アナログ0番(マイコンの23番ピン)と電源
// --- CdSセル :アナログ0番ピン(マイコンの23番ピン)とグ...
// &ref(sany0126.jpg,,320x240);~
// ※ スケッチを流し込んでしまった後は、ツェナーダイオード...
// ~
// -- ユニバーサル基板で作る~
// Arduino の Duemilanove などは、なぜフラットパッケージ~
// (QFP,4方に細かい足が出ているタイプ)を使わないのだろう...
// と思っていた。DIP(太い足が2列に並んでブレッドボードや~
// ユニバーサル基板に使いやすいタイプ)よりも、面積が小さ...
// 基板設計も楽だろうし、足の数も多くなるし、安いし、QFP~
// (4方に細かい足が出ているタイプ)の方がより良いように思...
// ~
// ところが、今回の試作で、DIP であることの重要性を痛感し...
// どうして DIP なのかわかったように思う。それは、おそら...
// マイコンを抜いて、基板に挿せるからだ。言葉をかえると、~
// プロトタイプを、よりプロダクトに近いものにチップを移植...
// ことで移行できるからだ。~
// ~
// &ref(SANY0135.JPG,,320x240);~
// ~
// -- プログラム~
// Arduino 017 で [[Tone>http://code.google.com/p/rogue-c...
// Arduino 018 に含まれる Tone はごく一部なので、やはり T...
// #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)...
// }
// // 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...
// #youtube_res(bhNO1FlrfA8)~
// ~
// *** 記録 [#h2dd6f8b]
// -- 参考URL
// --- [[Arduino Tone Library>http://code.google.com/p/ro...
// --- [[Arduinoで遊ぼう - 圧電スピーカでチクタク/なんで...
// --- [[MTM05 Scratch ワークショップ>http://scratch-ja.o...
// -- 履歴~
// --- 2010-06-16 ユニバーサル基板化~
// --- 2010-06-14 動画掲載~
// --- 2010-06-11 音階を分けるAD変換された値を自動的に決...
// --- 2010-06-10 音が出る。配線もプログラムも、こんなに...
終了行:
#topicpath
** もりみんアドバンスト [#lfc33146]
-- 概要:~
明るさの変化でドレミを奏でます。音量は変わりません。とっ...
2010年度に児童向けの電気工作のために作成しました。[[Ardui...
CdSではなく、環境負荷の少ないフォトトランジスタを使ってい...
~
~
-- ポイント~
--- 明るさを学習して、音階を決める値を自律的に変更します。~
--- 簡単(例によって。)~
--- 安い(例によって。)~
| 部品 | 値段(円) | まとめ買い個数|購入 |h
| マイコンATmega168P | 200 | 14個以上 |秋月電子 http://ak...
| フォトトランジスタ | 50 | 2個入り| 秋月電子http://akizu...
| 圧電スピーカ| 40 | 40 個入り| 秋月電子 http://akizukide...
| コンデンサ 0.1μF | 4.75 | 500 個入り|秋月電子 http://ak...
| 抵抗 100kΩ 1/4 W| 1 | 100本入り | 秋月電子 http://akizu...
| 電池ボックス | 50 | 10個以上 |秋月電子 http://akizukide...
| 単三乾電池2本 | 25 | 8本 | ダイソー |
|スチレンボード | 6.56| 16枚分 | ダイソー |
|ホチキスの針 | ほとんど0 | | |
| | | | |
|合計 | 約380 | | |
~
-- マイコン~
--- ハードウエアはArduino 互換[[ミニマルタイプ>../../Ardu...
--- ブートローダは、ハードウエアに対応して[[ミニマル>../....
--- スケッチ~
次のようなスケッチを導入してあります。~
光センサーの近くに物体がある時には明るさの変化が激しいの...
ここでは、CdS セルではなく、光センサ(フォトトランジスタ)...
#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};
int sdelay=50; // sound length
int idelay=250; // interval length
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++ ){
//original: thre[i] = maxv - (int)((maxv-minv)*pow(((1...
//linear: thre[i] = maxv - (int)( (maxv-minv)*((1.0*i+...
thre[i] = maxv - (int)((maxv-minv)*pow(((1.0*i+0.1)/7...
}
// lesser : brighter
if ( val > thre[0] ){
notePlayer.play(note[0],sdelay);
}else if ( val > thre[1] ){
notePlayer.play(note[1],sdelay);
}else if ( val > thre[2] ){
notePlayer.play(note[2],sdelay);
}else if ( val > thre[3] ){
notePlayer.play(note[3],sdelay);
}else if ( val > thre[4] ){
notePlayer.play(note[4],sdelay);
}else if ( val > thre[5] ){
notePlayer.play(note[5],sdelay);
}else if ( val > thre[6] ){
notePlayer.play(note[6],sdelay);
}else if ( val > thre[7] ){
notePlayer.play(note[7],sdelay);
}
delay(idelay);
}
-- 配線
--- Arduino 互換[[ミニマルタイプ>../../Arduino の自作/MIN...
スピーカ、抵抗、光センサを外せば、Arduino として動作しま...
&ref(MoriminAd_Circuit.png,,359x340);~
※ 意外にもホチキスの針はコーティングしてあって通電しない...
通電しないときは紙やすりで被覆をとって下さい。
-- 配布資料~
--- &ref(もりみんアドバンストWeb用.pdf);
-- 履歴
--- 2010-08-08 ウェッブページ作成
--- 2010-07-31, 08-01 夏休みこども理科・エネルギー教室
//
// --- スピーカ :黒-グラウンド、赤-デジタル13番(マイコ...
// --- 抵抗10kΩ:アナログ0番(マイコンの23番ピン)と電源
// --- CdSセル :アナログ0番ピン(マイコンの23番ピン)とグ...
// &ref(sany0126.jpg,,320x240);~
// ※ スケッチを流し込んでしまった後は、ツェナーダイオード...
// ~
// -- ユニバーサル基板で作る~
// Arduino の Duemilanove などは、なぜフラットパッケージ~
// (QFP,4方に細かい足が出ているタイプ)を使わないのだろう...
// と思っていた。DIP(太い足が2列に並んでブレッドボードや~
// ユニバーサル基板に使いやすいタイプ)よりも、面積が小さ...
// 基板設計も楽だろうし、足の数も多くなるし、安いし、QFP~
// (4方に細かい足が出ているタイプ)の方がより良いように思...
// ~
// ところが、今回の試作で、DIP であることの重要性を痛感し...
// どうして DIP なのかわかったように思う。それは、おそら...
// マイコンを抜いて、基板に挿せるからだ。言葉をかえると、~
// プロトタイプを、よりプロダクトに近いものにチップを移植...
// ことで移行できるからだ。~
// ~
// &ref(SANY0135.JPG,,320x240);~
// ~
// -- プログラム~
// Arduino 017 で [[Tone>http://code.google.com/p/rogue-c...
// Arduino 018 に含まれる Tone はごく一部なので、やはり T...
// #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)...
// }
// // 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...
// #youtube_res(bhNO1FlrfA8)~
// ~
// *** 記録 [#h2dd6f8b]
// -- 参考URL
// --- [[Arduino Tone Library>http://code.google.com/p/ro...
// --- [[Arduinoで遊ぼう - 圧電スピーカでチクタク/なんで...
// --- [[MTM05 Scratch ワークショップ>http://scratch-ja.o...
// -- 履歴~
// --- 2010-06-16 ユニバーサル基板化~
// --- 2010-06-14 動画掲載~
// --- 2010-06-11 音階を分けるAD変換された値を自動的に決...
// --- 2010-06-10 音が出る。配線もプログラムも、こんなに...
//
// --- スピーカ :黒-グラウンド、赤-デジタル13番(マイコ...
// --- 抵抗10kΩ:アナログ0番(マイコンの23番ピン)と電源
// --- CdSセル :アナログ0番ピン(マイコンの23番ピン)とグ...
// &ref(sany0126.jpg,,320x240);~
// ※ スケッチを流し込んでしまった後は、ツェナーダイオード...
// ~
// -- ユニバーサル基板で作る~
// Arduino の Duemilanove などは、なぜフラットパッケージ~
// (QFP,4方に細かい足が出ているタイプ)を使わないのだろう...
// と思っていた。DIP(太い足が2列に並んでブレッドボードや~
// ユニバーサル基板に使いやすいタイプ)よりも、面積が小さ...
// 基板設計も楽だろうし、足の数も多くなるし、安いし、QFP~
// (4方に細かい足が出ているタイプ)の方がより良いように思...
// ~
// ところが、今回の試作で、DIP であることの重要性を痛感し...
// どうして DIP なのかわかったように思う。それは、おそら...
// マイコンを抜いて、基板に挿せるからだ。言葉をかえると、~
// プロトタイプを、よりプロダクトに近いものにチップを移植...
// ことで移行できるからだ。~
// ~
// &ref(SANY0135.JPG,,320x240);~
// ~
// -- プログラム~
// Arduino 017 で [[Tone>http://code.google.com/p/rogue-c...
// Arduino 018 に含まれる Tone はごく一部なので、やはり T...
// #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)...
// }
// // 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...
// #youtube_res(bhNO1FlrfA8)~
// ~
// *** 記録 [#h2dd6f8b]
// -- 参考URL
// --- [[Arduino Tone Library>http://code.google.com/p/ro...
// --- [[Arduinoで遊ぼう - 圧電スピーカでチクタク/なんで...
// --- [[MTM05 Scratch ワークショップ>http://scratch-ja.o...
// -- 履歴~
// --- 2010-06-16 ユニバーサル基板化~
// --- 2010-06-14 動画掲載~
// --- 2010-06-11 音階を分けるAD変換された値を自動的に決...
// --- 2010-06-10 音が出る。配線もプログラムも、こんなに...
ページ名: