mbed nxp lpc11u24 hello world!...hello worldや スタート・ガイドが 用意されています...
TRANSCRIPT
1
mbed NXP LPC11U24 Hello World
日本語版 Japanese
目次
bull mbedの紹介
bull mbed サイトへの登録と Hello World
bull 実習 1 基本 IO
bull 実習 2 割り込みとタイマ
bull 実習 3 ローカルファイルシステムとファイルの扱い
bull 実習 4 スリープとディープスリープを用いた省エネルギー化
bull 実習 5 USBデバイス
この資料と関連の情報は以下のURLに用意されています
httpmbedorguserschrisnotebookmbed-nxp-lpc11u24-hello-world
3
mbedの紹介
mbed NXP LPC11U24 Hello World
マイコンに今何が起こっているか
bull マイコンは低価格に
ndash 32-bit ARM Cortex-M3 マイコンは1ドルに
bull マイコンはパワフルに
ndash たくさんの処理メモリ IOがひとつのパッケージに
bull マイコンはよりインタラクティブに
ndash インターネット接続新しいセンサやアクチュエータ
bull マイコンが使われる機会が増えてきています
高速プロトタイピング
bull 「高速プロトタイピング」で新製品の創出を加速
ndash 制御通信対話性が重要に
ndash マイコンを使った製品開発サイクルも高速化
3D モールディング 3D プリンタ 2D3D デザイン Webフレームワーク
mbed 高速プロトタイピングプラットフォーム
bull ハードウェアとソフトウェアWeb 20で完結したソリューション
軽量オンラインコンパイラ
プロトタイピング用ハードウェア
開発者専用ウェブサイト
高水準ペリフェラル API
mbed NXP LPC11U24 の特長
bull NXP LPC11U24 マイコンを採用
ndash 50 MHz 32-bit ARM Cortex-M0 8KB SRAM 32 KBフラッシュ
ndash Full Speed USB 20 デバイスコントローラ
ndash SPI I2C UART ADC GPIO
8
mbed NXP LPC11U24 Hello World
mbedサイトへの登録とhello world
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
目次
bull mbedの紹介
bull mbed サイトへの登録と Hello World
bull 実習 1 基本 IO
bull 実習 2 割り込みとタイマ
bull 実習 3 ローカルファイルシステムとファイルの扱い
bull 実習 4 スリープとディープスリープを用いた省エネルギー化
bull 実習 5 USBデバイス
この資料と関連の情報は以下のURLに用意されています
httpmbedorguserschrisnotebookmbed-nxp-lpc11u24-hello-world
3
mbedの紹介
mbed NXP LPC11U24 Hello World
マイコンに今何が起こっているか
bull マイコンは低価格に
ndash 32-bit ARM Cortex-M3 マイコンは1ドルに
bull マイコンはパワフルに
ndash たくさんの処理メモリ IOがひとつのパッケージに
bull マイコンはよりインタラクティブに
ndash インターネット接続新しいセンサやアクチュエータ
bull マイコンが使われる機会が増えてきています
高速プロトタイピング
bull 「高速プロトタイピング」で新製品の創出を加速
ndash 制御通信対話性が重要に
ndash マイコンを使った製品開発サイクルも高速化
3D モールディング 3D プリンタ 2D3D デザイン Webフレームワーク
mbed 高速プロトタイピングプラットフォーム
bull ハードウェアとソフトウェアWeb 20で完結したソリューション
軽量オンラインコンパイラ
プロトタイピング用ハードウェア
開発者専用ウェブサイト
高水準ペリフェラル API
mbed NXP LPC11U24 の特長
bull NXP LPC11U24 マイコンを採用
ndash 50 MHz 32-bit ARM Cortex-M0 8KB SRAM 32 KBフラッシュ
ndash Full Speed USB 20 デバイスコントローラ
ndash SPI I2C UART ADC GPIO
8
mbed NXP LPC11U24 Hello World
mbedサイトへの登録とhello world
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
3
mbedの紹介
mbed NXP LPC11U24 Hello World
マイコンに今何が起こっているか
bull マイコンは低価格に
ndash 32-bit ARM Cortex-M3 マイコンは1ドルに
bull マイコンはパワフルに
ndash たくさんの処理メモリ IOがひとつのパッケージに
bull マイコンはよりインタラクティブに
ndash インターネット接続新しいセンサやアクチュエータ
bull マイコンが使われる機会が増えてきています
高速プロトタイピング
bull 「高速プロトタイピング」で新製品の創出を加速
ndash 制御通信対話性が重要に
ndash マイコンを使った製品開発サイクルも高速化
3D モールディング 3D プリンタ 2D3D デザイン Webフレームワーク
mbed 高速プロトタイピングプラットフォーム
bull ハードウェアとソフトウェアWeb 20で完結したソリューション
軽量オンラインコンパイラ
プロトタイピング用ハードウェア
開発者専用ウェブサイト
高水準ペリフェラル API
mbed NXP LPC11U24 の特長
bull NXP LPC11U24 マイコンを採用
ndash 50 MHz 32-bit ARM Cortex-M0 8KB SRAM 32 KBフラッシュ
ndash Full Speed USB 20 デバイスコントローラ
ndash SPI I2C UART ADC GPIO
8
mbed NXP LPC11U24 Hello World
mbedサイトへの登録とhello world
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
マイコンに今何が起こっているか
bull マイコンは低価格に
ndash 32-bit ARM Cortex-M3 マイコンは1ドルに
bull マイコンはパワフルに
ndash たくさんの処理メモリ IOがひとつのパッケージに
bull マイコンはよりインタラクティブに
ndash インターネット接続新しいセンサやアクチュエータ
bull マイコンが使われる機会が増えてきています
高速プロトタイピング
bull 「高速プロトタイピング」で新製品の創出を加速
ndash 制御通信対話性が重要に
ndash マイコンを使った製品開発サイクルも高速化
3D モールディング 3D プリンタ 2D3D デザイン Webフレームワーク
mbed 高速プロトタイピングプラットフォーム
bull ハードウェアとソフトウェアWeb 20で完結したソリューション
軽量オンラインコンパイラ
プロトタイピング用ハードウェア
開発者専用ウェブサイト
高水準ペリフェラル API
mbed NXP LPC11U24 の特長
bull NXP LPC11U24 マイコンを採用
ndash 50 MHz 32-bit ARM Cortex-M0 8KB SRAM 32 KBフラッシュ
ndash Full Speed USB 20 デバイスコントローラ
ndash SPI I2C UART ADC GPIO
8
mbed NXP LPC11U24 Hello World
mbedサイトへの登録とhello world
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
高速プロトタイピング
bull 「高速プロトタイピング」で新製品の創出を加速
ndash 制御通信対話性が重要に
ndash マイコンを使った製品開発サイクルも高速化
3D モールディング 3D プリンタ 2D3D デザイン Webフレームワーク
mbed 高速プロトタイピングプラットフォーム
bull ハードウェアとソフトウェアWeb 20で完結したソリューション
軽量オンラインコンパイラ
プロトタイピング用ハードウェア
開発者専用ウェブサイト
高水準ペリフェラル API
mbed NXP LPC11U24 の特長
bull NXP LPC11U24 マイコンを採用
ndash 50 MHz 32-bit ARM Cortex-M0 8KB SRAM 32 KBフラッシュ
ndash Full Speed USB 20 デバイスコントローラ
ndash SPI I2C UART ADC GPIO
8
mbed NXP LPC11U24 Hello World
mbedサイトへの登録とhello world
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
mbed 高速プロトタイピングプラットフォーム
bull ハードウェアとソフトウェアWeb 20で完結したソリューション
軽量オンラインコンパイラ
プロトタイピング用ハードウェア
開発者専用ウェブサイト
高水準ペリフェラル API
mbed NXP LPC11U24 の特長
bull NXP LPC11U24 マイコンを採用
ndash 50 MHz 32-bit ARM Cortex-M0 8KB SRAM 32 KBフラッシュ
ndash Full Speed USB 20 デバイスコントローラ
ndash SPI I2C UART ADC GPIO
8
mbed NXP LPC11U24 Hello World
mbedサイトへの登録とhello world
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
mbed NXP LPC11U24 の特長
bull NXP LPC11U24 マイコンを採用
ndash 50 MHz 32-bit ARM Cortex-M0 8KB SRAM 32 KBフラッシュ
ndash Full Speed USB 20 デバイスコントローラ
ndash SPI I2C UART ADC GPIO
8
mbed NXP LPC11U24 Hello World
mbedサイトへの登録とhello world
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
8
mbed NXP LPC11U24 Hello World
mbedサイトへの登録とhello world
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
ユーザ登録
bull mbedをPCに接続すると
USBディスクとして見えます
bull USBディスク内の「mbedhtm」
ファイルをダブルクリック
bull ログインする
またはサインアップして
新規アカウント作成
bull mbedにはコンパイラのライセンスが
含まれています
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
ベータモードをオン
bull mbed NXP LPC11U24のベータ試用期間中はベータモードをオンにして使ってください
bull 次のURLのページを開き
httpmbedorgbetamode
bull ココをクリック
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
はじめてみよう
bull 最初のページにはたくさんの役立つ情報があります
Hello Worldや
スタートガイドが
用意されています
bull コンパイラへのリンクも
このページにあります
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
はじめてみよう
bull mbed NXP LPC11U24のベータ期間中は 「new」ボタンを
使う代わりにデフォルトプロジェクトをインポートしてください
ndash httpmbedorguserschrisprogramsm0-helloworldlatest
bull テキストエディタでコードを編集
bull 保存してコンパイル
bull コンパイラは
ndash エラーや警告を出力するか
または
ndash バイナリファイルを出力
bull USBディスク(mbed)に
ダウンロードしたバイナリ
ファイルを保存します
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
はじめてみよう
bull USBディスク内に保存されたファイルはmbed上のマイコン
チップ内にコピーされ実行されます (これは以下の手順(ボタンを押すだけ)で自動的に行われます)
bull mbedモジュールのボタンを押してみましょう
bull 作ったコードが動作します
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
14
実習 1 基本 IO
mbed NXP LPC11U24 Hello World
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
DigitalOut と AnalogIn
bull 前述のハローワールドの例ではコードをコンパイルしてみた
だけでその内容については詳しく見ていませんでした
bull ハローワールドプログラムはデジタル出力 (DigitalOut)を
「myled」という名前で用意しオンオフを単純にずっと繰り返
すだけでした
bull このプログラムを拡張して他のインターフェースを使えるように
してみましょう
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
どんなIOがあるの
bull コンパイラウィンドウの別の部分を見てみましょう先ほどのプロジェ
クト内にはmbedライブラリがありその横に「+」マークが付いています
これを開いて中を見てみてください
bull マイコンチップに内蔵されたハードウェアに関係する部分がこのライ
ブラリに収められています
bull 次はAnalogInとBusOutを使いますそのAPIをこのライブラリ内で確認
してみてください
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
DigitalOut と AnalogIn
bull AnalogIn(オブジェクト)は入力電圧(00V~33V)を正規化した00~10
の浮動小数値を返します
bull BusOutは複数のDigitalOutをグループ化できまとめて書き換えること
が可能になります
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
やってみよう DigitalOut と AnalogIn
bull AlalogInの電圧を4個のLEDで表示するプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-AnalogInlatest
include mbedh
BusOut leds(LED1LED2LED3LED4)
AnalogIn ain(p20)
int main ()
while (1)
leds = 0xF ainread()
bull read関数により正規化され
た浮動小数値が返されます
その値を4ビットの(フルス
ケール)値に変換しています
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
19
実習 2
割り込みとタイマ
mbed NXP LPC11U24 Hello World
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
割り込みとタイマ
bull マイコンのアプリケーションは複雑になりがちで割り込みを使わなければならないことが多々あります
bull 割り込みはソフトウェアタスクのスケジューリングハードウェアからの要求を受け付ける機能としてよく使われます
bull ここではタイマとハードウェア割り込みが一般にどのように使われるかを説明します
bull オンラインコンパイラのmbedライブラリの中の「InterruptIn」と「Ticker」に目を通してみてください
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
wait() と Tickerオブジェクトを使う
bull Tickerを使ってLED2を点滅させるプログラムを書いてみましょう
ndash httpmbedorguserschrisprogramsm0-Tickerlatest
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
Ticker tick
void tick_handler ()
led2 = led2
int main ()
tickattach(amptick_handler03)
while (1)
led1 = led1
wait(02)
bull Tickerハンドラの実行は非常に
高速なのでLED1を点滅させ
るループには影響しません
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
InterruptIn を使ってみる
bull Pin14の信号の立ち上がりでLED3を点滅させるプログラムを
書いてみましょう
ndash httpmbedorguserschrisprogramsm0-InterruptInlatest
include mbedh
DigitalOut led3(LED3)
InterruptIn din(p14)
void int_handler ()
led3 = led3
int main ()
dinrise(ampint_handler)
while (1)
do nothing
bull このコードは期待通りに動かな
いかもしれません
スイッチのチャタリング防止
(デバウンス)を考える必要が
あります
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
やってみよう割り込み ticker その他
bull 最後に前に作ったプログラムを組み合わせてみましょう
LED1LED2LED3をそれぞれ別の要因によって
ONOFFさせるプログラムです
bull 参考
ndash httpmbedorguserschrisprogramsm0-TickerInterruptInlatest
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
24
実習 3
ローカルファイルシステムとファイルの扱い
mbed NXP LPC11U24 Hello World
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
例 データロギング
bull 実際のアプリケーションにはデータロギング機能を備えた例が
よく見られます
そのデータには専用のインターフェースとソフトウェアが
アクセスします
bull ここでは一旦保存したデータを別のソフトウェアで取り出して表示する例を解説します
bull この実験ではデモとして何にも接続されていないADコンバータの
入力に指で触れるなどしてノイズを入力後からその様子を
表示させてみます
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
例 データロギング
bull LocalFileSystem オブジェクトを使ってmbedフラッシュディスク(PCからUSBディスクとして見える部分)にアクセスが可能です
bull 標準C言語のファイル操作でアクセスします
bull fscanfをファイル読み込みに
bull fprintfファイル書き出しに
bull この例は100個のサンプルデータをCSVファイルに保存しています
include mbedh
DigitalOut led1(LED1)
DigitalOut led2(LED2)
AnalogIn ain(p20)
LocalFileSystem fs(fs)
int main ()
FILE fp = fopen(fsdatacsvw)
for (int i=0 i lt 100 i++)
fprintf(fp2fnainread())
wait(005)
led2 = led2
fclose(fp)
led1=1
httpmbedorguserschrisprogramsm0-Filesystemlatest
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
データをPCですぐに確認
ロギングをCSVファイルで行うことによって後からそのままExcelで開けるようにしています データをExcelで開いて編集や プロットさせてみましょう
プログラム実行中はPC上からmbedフラッシュドライブが見えなくなります mbedプログラムがファイルを閉じると再びPC上に現れます
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
GND
MISO ndash p6
SCL - p7
Vcc
MOSI ndash p5
nCS - p8
拡張で大容量化 (解説のみ)
bull 最終的なシステムにより大きな容量が必要になったら
ndash SDカードを使うことができます
bull 最小限のハードウェアでSDに接続
ndash アダプタボードを用いてSPIで接続します
bull 前の例と同じように簡単に扱えます
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
拡張で大容量化 (解説のみ)
bull SDFileSystem ライブラリがコミュニティで公開されています
bull ライブラリの使用は簡単
ndash SDFileシステムライブラリを
インポート
ndash SDFileSystemヘッダをインクルード
ndash LocalFileSystem を SDFileSystemに書き換え
ndash その他の部分はそのまま
bull 標準C言語のファイル操作でアクセス
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
30
実習 4
スリープとディープスリープを用いた省エネルギー化
mbed NXP LPC11U24 Hello World
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
LPC11U24 低電力モード
bull LPC11U24は4つの省電力モードがあります
ndash スリープディープスリープパワーダウンディープパワーダウン
bull スリープモードでは内部とIOの状態が保持されるため単純にス
リープから復帰して作業を再開できます
bull パワーダウンモードはより進んだ省電力化が可能ですが前の(内
部)状態が失われているため若干の複雑な処理が必要になります
bull プロトタイピング目的としてはスリープモードの使用がバランス
の取れた解だと考えます
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
sleep() を使ってみる
bull このプログラムは sleep()の使用例
です
bull VB電源使用時スリープ電流は
10mAになります
bull 通常時のmbedの全体消費は50mA
bull スリープからの復帰はペリフェラル
からの割り込みが使えます
bull 例ではtickerを使ってマイコンを定
期的にスリープから起こしています
include mbedh
BusOut leds(LED1LED2LED3LED4)
Ticker wakeup
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeupattach(NULL 30)
while (1)
dostuff()
sleep()
httpmbedorguserschrisprogramsm0-sleeplatest
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
deepsleep() を使ってみる
bull このプログラムは deepsleep()の使
用例です
bull VB電源使用時スリープ電流は
1mAになります
bull 通常時のmbedの全体消費は50mA
bull ディープスリープからの復帰には外
部割り込みが必要です
bull この例ではInterruptInの立ち上がり
エッジを使用しています
include mbedh
BusOut leds(LED1LED2LED3LED4)
InterruptIn wakeup(p14)
void dostuff()
for (int i=0 ilt5 i++)
leds = 1 ltlt i
wait(025)
int main ()
wakeuprise(NULL)
while(1)
dostuff()
deepsleep()
httpmbedorguserschrisprogramsm0-deepsleeplatest
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
34
実習 5 USB デバイス
mbed NXP LPC11U24 Hello World
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
LPC11U24 USBデバイス
bull mbed NXP LPC11U24 はUSB デバイスインターフェースを搭載していますHID (キーボード マウス) マスストレージ オーディオなどに使用可能です
bull 必要なフィルタや回路はmbedに内蔵外部にはUSBコネクタを接続するだけ
bull 多くのオペレーティングシステムがビルトインでサポートするUSBデバイスを実現できます
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
USBデバイス ndash キーボード
bull USBキーボードの実装例です
bull クレジットカード情報を
自動タイプします
bull タブ (ldquotrdquo) キーは
フィールドの移動
bull リターンキー (ldquonrdquo) は
フォームのsubmitに
bull 強度の高いパスワード入力などの応用に
include mbedh
include USBKeyboardh
USBKeyboard key
DigitalIn din(p14)
DigitalOut led1(LED1)
int main(void)
while (1)
if (din)
led1 = led1
keyprintf(Mr A N Othert)
keyprintf(4929780506391234t)
keyprintf(0611t)
keyprintf(0513t)
keyprintf(123t)
wait(1)
keyprintf(n)
wait(1)
httpmbedorguserschrisprogramsm0-USBKeyboardlatest
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
USBデバイス ndash マウス
bull USBマウスの実装例です
bull ポインタをxyの示す座標の何処に置くことも可能です
bull 浮動小数点計算を行なっています
bull 標準Cライブラリの数学関数
(三角関数)を使っています
bull マウスポインタが円を描くように動きます
include mbedh
include USBMouseh
include ltmathhgt
USBMouse mouse
int main(void)
int16_t x = 0
int16_t y = 0
int32_t radius = 10
int32_t angle = 0
while (1)
x = cos((double)angle3141800)radius
y = sin((double)angle3141800)radius
mousemove(x y)
angle += 3
wait(0001)
httpmbedorguserschrisprogramsm0-USBMouselatest
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
38
まとめ
mbed NXP LPC11U24 Hello World
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
まとめ
bull マイコンにはまだまだ多くの応用の可能性があります
ndash これまではアイデアを簡単に実験してみることができませんでした
bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします
ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化
ndash 新しいテクノロジを使った新しいアイデアを試してみる
bull テクノロジーを使いやすく
ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました
ndash 使い始めから実験作業までを簡単に
bull 実験のツールとして使えます
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに
まとめ
bull 多くの人にアピールするためのプロトタイピングにフォーカス
bull 組み込みアプリケーションの経験の浅いユーザには
ndash 製品アイデアの最初の実験とテストを可能に
ndash 電子回路マイコン設計は別の方法で
bull 経験豊富なエンジニアには
ndash 生産性を高めるためのコンセプト検証の一つの手段として
ndash 既存製品への32bitマイコンの導入検討に
bull マーケティング営業アプリケーションエンジニアには
ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用
ndash 効果的効率的なマイコンのプロモーションに