新規記事の投稿を行うことで、非表示にすることが可能です。
2018年06月26日
【番外編3】Auduino_v5+DIPS / ブレッドボード
前回のAuduino_v5をミント缶に実装する前に基板用ポテンショメーターを使ってブレッドボード上でAuduino_v5を組んで動作確認した
この基板用ポテンショは足がブレッドボードから外れやすく、外れると出音が変わることがある
どの足の信号がどんな音の変化に影響しているのかを知りたくてジャンパー線を1本ずつ外してみたりするとほとんどの足で違った音の変化があるように感じる
とりあえず音の変化のバリエーションが多いのは面白いというだけで
「それぞれの入出力をディップスイッチで切り替えられるAuduino_v5」(Auduino_v5+DIP Switch (DIPS))を作ってみようと思った
ブレッドボードで作ってみる
(1)配線
配線はこんな感じ
(Fritzingに3極ディップスイッチがなかったので8極で代用)
(2)スケッチ
スケッチはauduino_v5と同じ
(3)実行
では実行してディップスイッチをいじってみます
一応できているかな
ディップスイッチを使わなくても、つまみをグリグリ動かすことで同じような音が出そうですが、ディップスイッチをいじった瞬間に音が変化するのはつまみとは違った面白さがあります
今回はここまで
ではまた〜
新品価格 |
Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab 新品価格 |
Arduinoをはじめよう 第3版 (Make:PROJECTS) 新品価格 |
Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット 基本部品セット20 in 1 Arduino sidekick basic kit 新品価格 |
新品価格 |
Arduino エントリーキット(Uno版)- Physical Computing Lab 新品価格 |
タミヤ 楽しい工作シリーズ No.216 3ch RCロボット製作セット 70216 新品価格 |
新品価格 |
新品価格 |
新品価格 |
タミヤ 楽しい工作シリーズ No.211 アームクローラー工作セット 70211 新品価格 |
タミヤ 楽しい工作シリーズ No.97 ツインモーターギヤーボックス (70097) 新品価格 |
タミヤ 楽しい工作シリーズ No.106 4チャンネル・リモコンボックス (70106) 新品価格 |
2018年06月19日
【番外編2】Auduino_v5 / ミント缶
前回、ブレッドボード上でauduino_v5を組んで音を出した
これをALTOIDS缶に組み込みたいけど・・・
9v電池を使おうとすると・・・ALTOIDS缶の大きさが・・・これは全部は入らないんじゃ・・仮置きしてみると
配線を考えるとちょっと入りそうにないので、いくつかパーツを変更することにしました
ケースを大きくするのが一番簡単だということには気がつかないことにします
(パーツ変更)
1. ALTOIDS缶は加工がしやすいように無地のものに
2. Arduino UNOは小さいArduino NANOに
3. ポテンショメーターは小型のものに
4. 9v電池は小さい12v電池に
5. 8Ω 0.5W スピーカーを小型の8Ω 1W スピーカーに
6. 4極オーディオジャック実装済み基板を差し込み口固定用ネジがきってある5ピン ステレオオーディオジャックに
変更したパーツで仮置きしてみました
これでいけるはず
実装するのを一回失敗してるので全体の流れを先に示すと
(1)(失敗)配線取り回し
はじめ蓋一体型のミント缶に配線取り回しで作ったけど何回か蓋の開け閉めをしたら断線、ショートしてArduino nanoが壊れた(泣)
(2)(成功)ユニバーサル基板
配線取り回しをやめて、できるだけユニバーサル基板に載せ、蓋の開け閉めを減らすために電源スイッチとLEDをつけた
ALTOIDSサイズ缶の穴あけと配線の半田付けまでをして組み立てて・・・
蓋を閉めて音出しをして・・・なんか調子がおかしくなって・・・配線が外れてて・・・音出しをして・・・蓋を閉めて・・・音がしなくなって・・・配線が切れてて・・・結線やり直して・・・蓋をして音が出なくて煙が出て・・・あれ?っと思ったらArduino NANOが反応しなくなって・・・ダメだこりゃ
Arduino NANOが逝ってしまいました(痛恨)
ワイヤーの選択を誤ったな・・・orz
この方法は難しいので新しく作り直します
Auduino_v5_1stからの改善案
(問題点と改善点)
@ 狭いスペースでの配線取り回しと蓋の開け閉めでケーブルにストレスがかかって接触不良・断線・ショートしてnanoが逝ってしまった
⇨ できるだけ基板実装タイプにする
A ポテンショメーターつまみ間の距離が狭く操作性が悪かった
⇨ つまみ位置間隔をできるだけ広めにとる
B 蝶番蓋の開け方で配線にストレスがかかる
⇨ 蓋を取り外せるタイプにして蓋の開け方に自由度を持たせる
C スピーカー穴のデザインがいまいち&穴あけ面倒
⇨ スピーカー穴のデザインを変える
D 蓋を閉めると電源のON/OFFや確認ができない
⇨ 電源スイッチとLEDインジケーターをつける
という感じでパーツを作りました
ミント缶に入れる前に一度テストしてみるとスピーカーでは気にならなかったノイズがイヤホンだと気になって、ボリュームを最小にすると「シー」って音と低い「ムー」みたいな音が聞こえたので出力に47Ωの抵抗をかませて抑えた
ノイズを完全に抑えようとするとスピーカーからの出力が下がるし、低すぎるとノイズがきになるのでその間で47Ωにしました
組み立てと動作テスト
ミント缶に組み入れます
できました!
これで完成ですっっっ
ではまた〜
新品価格 |
Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab 新品価格 |
Arduinoをはじめよう 第3版 (Make:PROJECTS) 新品価格 |
Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット 基本部品セット20 in 1 Arduino sidekick basic kit 新品価格 |
新品価格 |
Arduino エントリーキット(Uno版)- Physical Computing Lab 新品価格 |
タミヤ 楽しい工作シリーズ No.216 3ch RCロボット製作セット 70216 新品価格 |
新品価格 |
新品価格 |
新品価格 |
タミヤ 楽しい工作シリーズ No.211 アームクローラー工作セット 70211 新品価格 |
タミヤ 楽しい工作シリーズ No.97 ツインモーターギヤーボックス (70097) 新品価格 |
タミヤ 楽しい工作シリーズ No.106 4チャンネル・リモコンボックス (70106) 新品価格 |
2018年06月12日
【番外編1】Auduino_v5 / ブレッドボード
ロボットのためにArduinoのことを調べているときに"Auduino"というのを見かけた
AuduinoはArduinoを使ったシンセサイザーのようなもののよう
ロボット作りと直接関係ないけど寄り道は楽しい
今回は、第6回「シンプルなのに出音がすごいシンセサイザ - Auduino入門」を参考に「Auduino_v5」を作ります
この記事は・・・(2009年 7月 16日)のものなんですかね・・・結構前ですね・・・知らんかった
では、やってみます
(1)配線
ブレッドボードを使って組んでみます
(材料)
1. Arduino UNO (互換品)x1
2. Arduino UNO付属のUSBケーブル x1
3. B10Kポテンショメーター x5
4. 0.5Wスピーカー x1
5. ブレッドボード x1
6. ジャンパワイヤー x必要数
そんなに複雑じゃ無いのでブレッドボードいらないんですが・・・
一応できました
写真だとわかりにくいのでFritzingも置いて
(2)スケッチ
スケッチは第6回「シンプルなのに出音がすごいシンセサイザ - Auduino入門」の記事中に紹介されているtinker.it のリスト中のauduino_v5.pdeをダウンロードしてAuduino IDEで開きます
auduino_v5
――――――――――(auduino_v5)――――――――――
// Auduino, the Lo-Fi granular synthesiser
//
// by Peter Knight, Tinker.it http://tinker.it
//
// Help: http://code.google.com/p/tinkerit/wiki/Auduino
// More help: http://groups.google.com/group/auduino
//
// Analog in 0: Grain 1 pitch
// Analog in 1: Grain 2 decay
// Analog in 2: Grain 1 decay
// Analog in 3: Grain 2 pitch
// Analog in 4: Grain repetition frequency
//
// Digital 3: Audio out (Digital 11 on ATmega8)
//
// Changelog:
// 19 Nov 2008: Added support for ATmega8 boards
// 21 Mar 2009: Added support for ATmega328 boards
// 7 Apr 2009: Fixed interrupt vector for ATmega328 boards
// 8 Apr 2009: Added support for ATmega1280 boards (Arduino Mega)
#include
#include
uint16_t syncPhaseAcc;
uint16_t syncPhaseInc;
uint16_t grainPhaseAcc;
uint16_t grainPhaseInc;
uint16_t grainAmp;
uint8_t grainDecay;
uint16_t grain2PhaseAcc;
uint16_t grain2PhaseInc;
uint16_t grain2Amp;
uint8_t grain2Decay;
// Map Analogue channels
#define SYNC_CONTROL (4)
#define GRAIN_FREQ_CONTROL (0)
#define GRAIN_DECAY_CONTROL (2)
#define GRAIN2_FREQ_CONTROL (3)
#define GRAIN2_DECAY_CONTROL (1)
// Changing these will also requires rewriting audioOn()
#if defined(__AVR_ATmega8__)
//
// On old ATmega8 boards.
// Output is on pin 11
//
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 5
#define PWM_PIN 11
#define PWM_VALUE OCR2
#define PWM_INTERRUPT TIMER2_OVF_vect
#elif defined(__AVR_ATmega1280__)
//
// On the Arduino Mega
// Output is on pin 3
//
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 7
#define PWM_PIN 3
#define PWM_VALUE OCR3C
#define PWM_INTERRUPT TIMER3_OVF_vect
#else
//
// For modern ATmega168 and ATmega328 boards
// Output is on pin 3
//
#define PWM_PIN 3
#define PWM_VALUE OCR2B
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 5
#define PWM_INTERRUPT TIMER2_OVF_vect
#endif
// Smooth logarithmic mapping
//
uint16_t antilogTable[] = {
64830,64132,63441,62757,62081,61413,60751,60097,59449,58809,58176,57549,56929,56316,55709,55109,
54515,53928,53347,52773,52204,51642,51085,50535,49991,49452,48920,48393,47871,47356,46846,46341,
45842,45348,44859,44376,43898,43425,42958,42495,42037,41584,41136,40693,40255,39821,39392,38968,
38548,38133,37722,37316,36914,36516,36123,35734,35349,34968,34591,34219,33850,33486,33125,32768
};
uint16_t mapPhaseInc(uint16_t input) {
return (antilogTable[input & 0x3f]) >> (input >> 6);
}
// Stepped chromatic mapping
//
uint16_t midiTable[] = {
17,18,19,20,22,23,24,26,27,29,31,32,34,36,38,41,43,46,48,51,54,58,61,65,69,73,
77,82,86,92,97,103,109,115,122,129,137,145,154,163,173,183,194,206,218,231,
244,259,274,291,308,326,346,366,388,411,435,461,489,518,549,581,616,652,691,
732,776,822,871,923,978,1036,1097,1163,1232,1305,1383,1465,1552,1644,1742,
1845,1955,2071,2195,2325,2463,2610,2765,2930,3104,3288,3484,3691,3910,4143,
4389,4650,4927,5220,5530,5859,6207,6577,6968,7382,7821,8286,8779,9301,9854,
10440,11060,11718,12415,13153,13935,14764,15642,16572,17557,18601,19708,20879,
22121,23436,24830,26306
};
uint16_t mapMidi(uint16_t input) {
return (midiTable[(1023-input) >> 3]);
}
// Stepped Pentatonic mapping
//
uint16_t pentatonicTable[54] = {
0,19,22,26,29,32,38,43,51,58,65,77,86,103,115,129,154,173,206,231,259,308,346,
411,461,518,616,691,822,923,1036,1232,1383,1644,1845,2071,2463,2765,3288,
3691,4143,4927,5530,6577,7382,8286,9854,11060,13153,14764,16572,19708,22121,26306
};
uint16_t mapPentatonic(uint16_t input) {
uint8_t value = (1023-input) / (1024/53);
return (pentatonicTable[value]);
}
void audioOn() {
#if defined(__AVR_ATmega8__)
// ATmega8 has different registers
TCCR2 = _BV(WGM20) | _BV(COM21) | _BV(CS20);
TIMSK = _BV(TOIE2);
#elif defined(__AVR_ATmega1280__)
TCCR3A = _BV(COM3C1) | _BV(WGM30);
TCCR3B = _BV(CS30);
TIMSK3 = _BV(TOIE3);
#else
// Set up PWM to 31.25kHz, phase accurate
TCCR2A = _BV(COM2B1) | _BV(WGM20);
TCCR2B = _BV(CS20);
TIMSK2 = _BV(TOIE2);
#endif
}
void setup() {
pinMode(PWM_PIN,OUTPUT);
audioOn();
pinMode(LED_PIN,OUTPUT);
}
void loop() {
// The loop is pretty simple - it just updates the parameters for the oscillators.
//
// Avoid using any functions that make extensive use of interrupts, or turn interrupts off.
// They will cause clicks and poops in the audio.
// Smooth frequency mapping
//syncPhaseInc = mapPhaseInc(analogRead(SYNC_CONTROL)) / 4;
// Stepped mapping to MIDI notes: C, Db, D, Eb, E, F...
//syncPhaseInc = mapMidi(analogRead(SYNC_CONTROL));
// Stepped pentatonic mapping: D, E, G, A, B
syncPhaseInc = mapPentatonic(analogRead(SYNC_CONTROL));
grainPhaseInc = mapPhaseInc(analogRead(GRAIN_FREQ_CONTROL)) / 2;
grainDecay = analogRead(GRAIN_DECAY_CONTROL) / 8;
grain2PhaseInc = mapPhaseInc(analogRead(GRAIN2_FREQ_CONTROL)) / 2;
grain2Decay = analogRead(GRAIN2_DECAY_CONTROL) / 4;
}
SIGNAL(PWM_INTERRUPT)
{
uint8_t value;
uint16_t output;
syncPhaseAcc += syncPhaseInc;
if (syncPhaseAcc < syncPhaseInc) {
// Time to start the next grain
grainPhaseAcc = 0;
grainAmp = 0x7fff;
grain2PhaseAcc = 0;
grain2Amp = 0x7fff;
LED_PORT ^= 1 << LED_BIT; // Faster than using digitalWrite
}
// Increment the phase of the grain oscillators
grainPhaseAcc += grainPhaseInc;
grain2PhaseAcc += grain2PhaseInc;
// Convert phase into a triangle wave
value = (grainPhaseAcc >> 7) & 0xff;
if (grainPhaseAcc & 0x8000) value = ~value;
// Multiply by current grain amplitude to get sample
output = value * (grainAmp >> 8);
// Repeat for second grain
value = (grain2PhaseAcc >> 7) & 0xff;
if (grain2PhaseAcc & 0x8000) value = ~value;
output += value * (grain2Amp >> 8);
// Make the grain amplitudes decay by a factor every sample (exponential decay)
grainAmp -= (grainAmp >> 8) * grainDecay;
grain2Amp -= (grain2Amp >> 8) * grain2Decay;
// Scale output to the available range, clipping if necessary
output >>= 9;
if (output > 255) output = 255;
// Output to PWM (this is faster than using analogWrite)
PWM_VALUE = output;
}
―――――――――――――――――――――――――――
(3)実行
(2)のスケッチをArduinoに書き込んで実行します
初めは小さなビープ音しか聴こえなくて、なんか失敗したかなって感じだったんですが、ノブを色々いじってみるとそれなりに音が聴こえるようになりました
ちょっと楽しくていろいろいじって遊んでしまった
でも・・・音が小さいというか・・・小さい音の中にもかすかに音の変化があるというか・・・何かを聴き落としているような・・・
もっと大きなスピーカーに繋ぐとかイヤホンで聴いた方が良いかな?
というわけで、4極オーディオジャック実装済み基板につないでイヤホンで聴いてみます
イヤホンから出ている音だけでもスピーカーより大きいような・・・
途中イヤホンの左右のつなぎ変えの方法を確かめたりしてます
音が聞こえないところでは耳にイヤホンを入れて聴いてます
イヤホンを耳で聴いたら、耳が痛いくらいの大音量になったけど、音の傾向は変わらず、逆にゲインが大きすぎると耳に良く無さそうで聴きにくい
心持ちビビリノイズが増えているような・・・
これはアンプに繋いでボリューム調節できないとダメなんじゃ・・・オーディオジャック経由でアンプ付きスピーカーに繋ぐしか無いのかな・・・持ち運びできるといいんだが・・・
なんかいいのないかなあってググっててAmazonでボリュームノブのついた小型オーディオアンプボードを見つけたのでつないでみる
小型オーディオアンプボードのスルーホールに直接ジャンパー線をつないで接続しているのでところどころ接触が悪くて音が飛んでます・・・
結果はまあ、いいんじゃないでしょうか
小さな音の変化を拾いやすくなったような気がします
これくらいの構成で一度ケースに組み込んでみようと思います
ではまた〜
新品価格 |
Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab 新品価格 |
Arduinoをはじめよう 第3版 (Make:PROJECTS) 新品価格 |
Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット 基本部品セット20 in 1 Arduino sidekick basic kit 新品価格 |
新品価格 |
Arduino エントリーキット(Uno版)- Physical Computing Lab 新品価格 |
タミヤ 楽しい工作シリーズ No.216 3ch RCロボット製作セット 70216 新品価格 |
新品価格 |
新品価格 |
新品価格 |
タミヤ 楽しい工作シリーズ No.211 アームクローラー工作セット 70211 新品価格 |
タミヤ 楽しい工作シリーズ No.97 ツインモーターギヤーボックス (70097) 新品価格 |
タミヤ 楽しい工作シリーズ No.106 4チャンネル・リモコンボックス (70106) 新品価格 |