2011年2月アーカイブ

 μVison4のデバッガ機能には変数の内容を表示するウォッチする機能があります。
  =>変数kをドラッグ、右クリック =>

12_debug2_trace.GIF

STM32バリュー・ライン用のサンプル・プログラムGPIOToggleを動かす
   今回は、GPIO_Init()関数でどのようなことが行われているか確認します。半分はSTM32のGPIOの制御の仕組みについて、半分はプログラムのCの記述方法の話になります。手元にJIS プログラム言語C JISX3010をおき、参照しながら確認することにします。
 GPIO_Initを呼び出す前に各GPIOの操作を行うためには各ポートのクロックをイネーブルにする必要があるため、RCC_APB2PeriphClockCmd関数でGPIOの該当ポートのクロックをオンにしました。関数GPIO_Initに渡す引数として対象汎用入出力ポート名と初期化のための次の二つのデータを用意します。
 この二つのデータは、初期化のためのデータ構造 GPIO_InitStructureのメンバのGPIO対象ピンを示すGPIO_PinとGPIOの動作モードを指定するGPIO_Modeの二つです。
 GPIO_InitStructure.GPIO_Pinには16ビットがすべて1がセットされたGPIO_Pin_Allの値が書き込まれ、GPIO_InitStructure.GPIO_ModeにはGPIO_Mode_Ainの値が書き込み、この初期化データのデータ構造のアドレスをGPIO_Init関数の2番目の引数として渡します。データ構造のアドレスを示すために、2番目の引数はデータ構造名GPIO_ InitStructureにこの変数のアドレスであることを示す&を付加し記入されています。
        &GPIO_InitStructure

 

IAR5500010.jpg
 Hello_World2を続けます。
  =>Import and Export =>Import exisiting projects =>

13_hello_w2.GIF
 Hello world2 として橙と緑のLEDを1秒間隔で点滅するプログラムを作成しましょう。

 LPCXpressoにおいて一からプロジェクトを準備してプログラムを作成するのはなかなか面倒な作業になります。そこで、既存のプロジェクトをちょっとだけ書き直して作成することにします。

workspaceの準備
 課題を保存するworkspace=フォルダを設定します。
好みの名前のフォルダ ここではLPCXpresso =>hello_worldフォルダ作成=>

1_hello_w2.GIF
 μVison4のデバッガを起動できるようになりましたか? 引き続き、デバッガに内蔵しているトレース機能を試します。

 今回使用するプロジェクト・ファイルは、こちらよりダウンロードしてください。
   
2ak1223_Hello_LED.lzh

 ダウンロードしたファイルは解凍してください。

  =>Peoject =>Open Project =>

1_debug2_trace.GIF
ファームウェアの再転送
 LPCXpressoで作ったC言語を動かした後に、ビュートビルダー2で再びプログラムを楽しむには、ファームウェアを再転送する必要があります。ファームウェアの最新版はVsotne社のWebよりダウンロードすることができます。
  =>Vstone web:http://www.vstone.co.jp/robot/rover/ =>ダウンロード =>

5_strage_ready.GIF
4.なんちゃってテルミンの製作

 距離によって音程が変わる「なんちゃってテルミン」を製作します。
 テルミンとは2本のアンテナに手を近づけたり遠ざけたりすることで音程と音量を調整しながら演奏する電子楽器です。今回はこのテルミンをイメージして、距離センサで測定した距離によって、音程が変わる「なんちゃってテルミン」を製作します。
 マイコンを使って音を出す方法は、 以前の記事(メモリ・カードを使ったデータの読み書き<2/3>)で紹介しました。この時は方形波を使って音を鳴らしましたが、今回は正弦波を使って音を鳴らしてみました。
 しかし、距離センサから値を取得しその値によって周波数を決める処理が重いため、センサから値を取得する0.5秒ごとに一瞬だけアナログの出力が途切れてしまうのが残念ですが、今後の改善点とさせていただきます。
 KEIL MCBTMPM360とμVison4の組み合わせることにより、強力なデバッグ機能を実現しています。最強といえるデバッグ機能を使ってみましょう。

  =>Debug =>Start/Stop Debug Session =>

1_debug_start.GIF
  =>μVison4の評価版ではデバッグ可能なコードに32kBytes以下の制限がある =>OK =>

2_debug_start.GIF
ロッカISとカラーISの違い
 今回は、 mbed にロッカISスイッチ IS-18WWC1W をつないで、画像を表示してみます。カラーISとロッカISは表示画素数、カラー、白黒の違いだけでなく、推奨電源電圧やコマンドなども違います。
 購入した状態のビュートローバーARMは、すぐにビュートビルダー2でプログラミングを楽しむことができます。

 自分の作成したプログラムをビュート・ドライブに書き込んで実行するときには、すでに書き込まれているfirmware.binを削除してから書き込みます。

作成したファームウェアの転送手順
 LPCXpressoにより作成したプログラムは以下の手順で転送します。ここでは、前回作成した”Hello world”(付属CD-ROMのサンプル・プロジェクトのLED点滅プログラムと同等)を転送します。

  =>ビュートビルダーARMの電源はOFF、USBケーブルをパソコンと接続しない =>CPUボードのリセット・スイッチを押す =>

1_strage_ready.jpg
 Bluetoothの接続まで準備できたので、次にプログラムを準備します。
 BuletoothとWiiリモコンの通信の確認だけであれば、mbedサイトのCookbookにあるBuleUSBがそのまま使用できるので、それをコンパイルしてmbedに書き込めば大丈夫です。
 完成したシステムに改良したプログラムを搭載します。

プログラム
■■mbedプログラミング
 mbed用サーバ・プログラムに変更はありません。

■■Javascript
 太陽光発電パネル電圧・電流・電力、バッテリ電圧をブラウザに表示します。
 ARM社でPublishしているJavascriptを参考にして記述しています。今回は見やすさを重視し、表組み内に表示されるようにプログラミングを工夫しました。

STM32バリュー・ライン用のサンプル・プログラムGPIOToggleを動かす
  前回、次のメイン・プログラムの開始部から、プログラムのステップ動作を開始しました。ボードのLED4を点滅させるPC8、LED3を点滅させるPC9、SW入力を受け取るPA0の各ディジタル・ポートの設定のため、GPIOポートのクロックをイネーブルにしました。

IAR5400010.jpg
回路を検討する
 mbedにカラーISスイッチ IS-C15ANP4 をつないで、SD カードに保存した画像を表示してみます。IS-C15ANP4のロジック系電源の推奨範囲は 2.4[V]から3.5[V]です。mbedは3.3[V]で動作しているので、ロジック系電源を mbed から供給することにします。
 表示に必要な電源(ドライブ系電源)の推奨範囲は15[V]から17[V]です。必要な電流は最大5[mA]未満です。そこでDC-DCコンバータ(COSEL, SUS1R50515C)で5[V]から15[V]を作ることにします。電源投入の順序が指定されているのでDC-DCコンバータの出力をトランジスタで制御します(図1)。

fig2-1-circuit1.png
図1 mbedにIS-C15ANP4をつなぐ

 ビュートローバーARM C言語プログラム開発環境であるLPCXpressoの準備は整いましたか?
それでは最初に実行する”Hello World”プログラムに挑戦しましょう。
 ここでは、ビュートローバーARMに装備されている橙と緑のLEDを交互に点灯させます。

  =>LPCXpressoを起動 =>

1_lpc_hello.GIF  =>Workspace Launcher =>OK =>

2_lpc_hello.GIF
3.距離をもとめるプログラムの作成

 最初に距離を計測し、測定した値をLCDに表示するプログラムを作成したいと思います。
 LCDは、手軽に利用できる☆ボードオレンジを使用します。LCDを直接接続する方は以前の記事LCDを極める<1/5>を参考にして、mbedとLCDを接続してください。

 まずは、Bluetooth の通信を確認するためにmbedにUSB Aコネクタを取り付けます。

6.jpg
 addするファイルはこちらからダウンロードしてください=>Hello_LED_source.lzh

  =>Targetの名前がTMPM364F10になっていることを確認 =>

12_new_project.GIF
 LPCXpressoのライセンス登録を行います。

  =>LPCXpressoアイコンクリック =>

38_br_lpcexp.GIF  =>LPCXpresso起動 =>

27_br_lpcexp.gif

STM32バリュー・ライン用のサンプル・プログラムGPIOToggleを動かす
Assert_parm関数、アロー演算子

    GPIOToggleのメイン・プログラムから最初に呼び出されるRCC_APB2PeriphClockCmd関数に制御が移ります。次に示すように呼び出された関数の最初の3行を飛ばして、引数NewStateがDISABLEでないかのチェックを行っています。 

IAR5300010.jpg
 最近では、小型液晶モジュールと同じぐらいのサイズの、有機EL(OLED)ディスプレイ・モジュールが個人でも手に入りやすくなってきています。その中でもユニークなのが、日本開閉器工業(NKK)の有機ELディスプレイ内蔵スイッチISシリーズです。
 今回からいろいろなセンサを紹介しながら、それらを活用したプログラムを作成していきたいと思います。マイコンは主にセンサから得られた情報によって何かを制御するような用途に用いられます。
 センサを含めた入出力デバイスを自由に使うことができれば、あとはあなたのアイデア次第でどんなものでも作ることができます。
 そこで今回は、赤外線距離センサを使って距離計を製作します。次に、その活用例として、距離によって音色が変わる「なんちゃってテルミン」を製作します。





カテゴリ


Copyright (C) 2006-2015 CQ Publishing Co.,Ltd. All Rights Reserved.