Arduino

dsPIC33FJ64GP802 (16) --- 1/12 オクターブバンド・フィルタを使った「グライコ」風表示 (1)

1/12 オクターブバンド・フィルタを多数並べて、オーディオ用グラフィック・イコライザの「バー」風の表示をさせてみました。 表示は、下の記事の Adafruit 1.8 インチ TFT LCD シールド互換のシールドを装着した Arduino で行い、1/12 オクターブバンド・フ…

ムライボックス (19) --- ムライシールド (3)

2017 年 12 月 08 日付けの記事 (→こちら) では、「ムライシールド(仮)」の回路図を示しました。 これは、Arduino 本体の基板の面積と同程度の基板上に作成するという制約、および「SparkFun」製の「MIDI シールド」と同様な機能を持たせるという制約のため…

ムライボックス (13) --- ソフトウェア (5)

ストップ・ビットの中央付近で「送信完了」のフラグが立つタイプの UART では、残りの 1/2 ビット・タイム (約 16 μs) 期間の、まだストップ・ビットの中にいる状態で次のキャラクタ・データの書き込みを終えることができれば余分なアイドル状態が挿入される…

ムライボックス (12) --- ソフトウェア (4)

ソフトウェアの話の続きです。 MIDI IN から入力される MIDI ストリームを UART RX から 1 バイト読む MIDI チャネル番号書き換え、ビットマスク・パターン読み出しなどの処理 マスク・パターンの出力、および MIDI バイトを UART TX に出力 という処理の流…

ムライボックス (10) --- ムライシールド (2)

STMicroelectronics Nucleo シリーズ (より正確には Nucleo64 シリーズ) では、ST 独自の「Morpho」コネクタのほかに Arduino Uno R3 互換の Arduino コネクタを持ち、Arduino 用シールドが利用できます。 しかし、デフォルトではコネクタのピン D0、D1 には…

1.8 インチ TFT LCD シールド (3)

STmicroelectronics の STM32Cube では、MCU のファミリ別に HAL ライブラリが構成されています。 その中で F0 / F1 / F3 / F4 シリーズのライブラリしかダウンロードしていないのですが、いずれのライブラリにも Adafruit 1.8 インチ TFT LCD シールド用の …

1.8 インチ TFT LCD シールド (2)

Arduino 用の S6D0151 ライブラリは、Adafruit 製の「Adafruit_ST7735」を元に手を加えて、比較的簡単に実現でき、「tft_S6D0151」と名づけました。 Yahoo! ボックス上 (→こちら) に公開しました。 (2017 年 5 月 27 日追記: 画面の回転角が 90°および 270°…

1.8 インチ TFT LCD シールド (1)

STmicroelectronics 社製の STM32 マイコンの評価ボード「Nucleo」シリーズは、秋月価格で 1500 円 〜 1800 円と安価 (Nucleo-32、Nucleo-64 の場合) で提供されています。 しかし、「プログラマ/デバッガ」である ST-LINK/V2-1 にターゲット MPU の「ブレー…

OTA/VCA/PGA を使用した 2 次特性 VCF (11)

JRC 製の普及型電子ボリューム NJW1159 の特性を測定してみました。 公称 1 dB ステップで減衰量を 0 〜 95 dB まで可変できる抵抗ラダーが 2 系統あって、バッファ・アンプも内蔵しています。 この公称 1 dB ステップが 20 × log10(2 ^ (1/6)) = (20/6) × l…

Arduino スケッチで AVR インライン・アセンブラを使う

Arduino IDE では、特に「ファイルをプロジェクトに追加」のような操作をしなくても、メインのスケッチ (.pde / .ino ファイル) があるフォルダに含まれている C/C++ ソース・ファイル (.c / .cpp) を拾ってくれて自動的にコンパイル/リンクしてくれます。 …

PSoC 4200 Prototyping Kit (1)

以前から Cypress の PSoC (Programmable System-on-Chip) シリーズには興味があったのですが、PSoC1 の出始めの頃の、プログラマ約 1 万円、別売 C コンパイラ約 3 万円という「割高」なイメージがあって、手を出せずにいました。 最近では「廉価版」の PSo…

無限音階オルガン (1)

220 円の PIC32MX による USB MIDI ホストと組み合わせるのにふさわしいローコストな音源を、ふたつの「はやり」 無限音階オルガン MIDI からの電源供給 に乗っかって作成することにしました。 ターゲットのチップとしては、110 円の LPC1114FN28/102 を考え…

アナログシンセの VCO ブロック (60) -- マルチ出力アンチログ回路の測定 (9)

今回は、現在実装されている 2 つの VCO 間の「混変調」というか「クロストーク」というか、VCO 間相互の影響について調べてみました。 結果としては、問題になるレベルではありませんでした。 トランジスタ・アレイ TD62507 では、16 ピン・パッケージの中…

アナログシンセの VCO ブロック (59) -- マルチ出力アンチログ回路の測定 (8)

これまでは、 ピンポイントの温度における MIDI ノート番号全体に渡る特性の測定 広い温度範囲に渡るオクターブ・スパンの特性の測定 を、それぞれ行ってきましたが、今回は 広い温度範囲での全 MIDI ノート番号に渡るピッチ誤差特性 を リワインド型 VCO リ…

アナログシンセの VCO ブロック (57) -- マルチ出力アンチログ回路の測定 (7)

前回の測定後も測定は続行しており、計 56 時間 (2 日と 8 時間) に渡るデータを収集しました。 温度変化の幅は、最低 23.9 °C から最高 33.6 °C までの 9.7 °C となりました。 9 月 22 日 09 時ごろに測定開始した以降の経過時間と室温とのグラフを下に示し…

アナログシンセの VCO ブロック (56) -- マルチ出力アンチログ回路の測定 (6)

オクターブ・スパン誤差の温度変化の測定を始めました。 今回、実験回路は Arduino の「シールド」の形で作成したので、必要なコントロールはすべて Arduino で行い、シリアルで接続する PC は測定結果のロギングだけに使っています。 とりあえず、室温 27.5…

アナログシンセの VCO ブロック (55) -- マルチ出力アンチログ回路の測定 (5)

残りの 1 系統にリセット型 VCO を実装して、測定を行いました。 アンチログ出力トランジスタから VCO までの部分の回路図を下に示します。 左側が今回追加したリセット型 VCO です。

アナログシンセの VCO ブロック (54) -- マルチ出力アンチログ回路の測定 (4)

PWM CV マルチプレクサ + LPF + アンチログ出力トランジスタ部の回路図を下に示します。 LPF 部は OP アンプを 1 個使用した 3 次アクティブ・フィルタの構成になっています。 OP アンプは、ありあわせで MOSFET 入力の NJU7032 (JRC 製) を使用しています。…

アナログシンセの VCO ブロック (53) -- マルチ出力アンチログ回路の測定 (3)

Spice の Ebers-Moll モデルでは、バイポーラ・トランジスタが大電流領域において理想 PN 接合の特性からズレてくる効果を、理想 PN 接合による「真性トランジスタ」の外部に直列抵抗を接続することにより表現しています。 直列抵抗の「実体」としては、端子…

アナログシンセの VCO ブロック (52) -- マルチ出力アンチログ回路の測定 (2)

今回は、CV に対する VCO 出力周波数のピッチ誤差の測定結果を示します。 PWM による DA でアナログ CV を作り出すわけですが、今回は ATmega168/328 の 8 ビット・タイマである Timer2 を使って PWM 波を発生させることにしました。 Timer0 は Arduino のシ…

アナログシンセの VCO ブロック (51) -- マルチ出力アンチログ回路の測定 (1)

マルチ出力アンチログ回路で、マルチプレクサ → LPF → アンチログ → VCOの系統をとりあえず 1 系統のみ実装した基板を作成しました。 複数出力間の干渉のようすを調べるために、最終的には 2 系統を実装するつもりです。 3 系統以上を実装する予定はありませ…

ICSP 接続で PIC32MX のフラッシュに書き込む (14)

LPC1114 / NUC120 / ATmega / Arduino 共用のソース・パッケージと、Arduino のスケッチをアーカイブしたものを公開しました。(→ こちら) ファイル名は。LPC1114/NUC120/ATmega/Arduino 版、Arduino スケッチ版それぞれ、 pic_icsp-20130722.zip icsp_arduin…

ICSP 接続で PIC32MX のフラッシュに書き込む (13)

Arduino ライブラリを使わない「素」の AVR ATmega 用プログラムに「空っぽ」のメイン・スケッチ・ファイルを追加し、「形式上」 Arduino スケッチ化することができました。 (Arduino 1.0.5 のみ確認、他のバージョンでは未確認) 最も簡単には、 20130706 版…

ICSP 接続で PIC32MX のフラッシュに書き込む (11)

移植第 2 弾として、Atmel AVR ATmega328P/168/88 用のプログラムを作り、動作を確認しました。 フラッシュ 8 K、RAM 1 K におさまったので、ATmega88 でも動作します。 「ハードウェア」としては、専用に回路を作るほかに、既存の「Arduino」(互換ボード) …

円周率の計算 (12) -- BBP 公式による計算 (1)

フラッシュ ROM 2 K バイト、RAM 128 バイトの ATtiny2313 で円周率Πの値を BBP 公式 (後述) を使って UART 経由で 16 進数で 4000 桁出力するという記事 (ドイツ語のサイト) 4000 Stellen von Pi mit ATtiny2313 – Mikrocontroller.net があることを知り、…

ATtiny10 用プログラム (17)

今回は、マイコン・チップ上のフラッシュ・メモリにオブジェクト・プログラムを書き込むという意味の「プログラミング」の話題です。 ATtiny10 では、フューズ・ビットの設定により、通常はリセット端子として使われる 6 番ピンを PB3 の入出力ポートや、そ…

ATtiny10 用プログラム (8)

内蔵 8 MHz オシレータの周波数を測定するには、正確で安定な基準周波数が必要で、これは外部から与える必要があります。 ATtiny10 では、Timer0 および CPU コアのクロックとして外部クロックを選択すると、内部クロックの行き先はフラッシュ・メモリの書き…

ATtiny10 用プログラム (7)

ATtiny10 の「OSCCAL」レジスタ (アドレス 0x39) に設定する値と、内蔵 8 MHz クロック・オシレータの発振周波数の関係を測定し、グラフにしてみました。 単に CPU クロック周波数の測定なら、フューズ・ビットの設定で、CLKO 端子 (4 番ピン) にクロックが…

ATtiny10 用プログラム (4)

ATtiny10 用のサイン波発生プログラムを作りました。 (12/27 追記: 「sin_tn10.c」で USE_ADC 未定義の場合にコンパイル・エラーになる問題と、「stab128.S」の 2 の補数計算のバグを修正したプログラムに差し替えました) フェーズ・アキュムレータとサイン…

Arduino を使った ATtiny10 の書き込み (4)

今回は、 ブレッドボード・シールドの製作 ターゲットへのプログラム書き込み後に自動でそのターゲット・プログラムが走り出すようにするためのスケッチの修正点 を取り上げます。