mbed nxp lpc11u24 hello world!...hello worldや スタート・ガイドが 用意されています...

40
1 mbed NXP LPC11U24 Hello World! 日本語版 Japanese

Upload: others

Post on 21-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 2: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

目次

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 効果的効率的なマイコンのプロモーションに

Page 3: mbed NXP LPC11U24 Hello World!...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 効果的効率的なマイコンのプロモーションに

Page 4: mbed NXP LPC11U24 Hello World!...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 効果的効率的なマイコンのプロモーションに

Page 5: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

高速プロトタイピング

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 効果的効率的なマイコンのプロモーションに

Page 6: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 7: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 8: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 9: mbed NXP LPC11U24 Hello World!...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 効果的効率的なマイコンのプロモーションに

Page 10: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

ベータモードをオン

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 効果的効率的なマイコンのプロモーションに

Page 11: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 12: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 13: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 14: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 15: mbed NXP LPC11U24 Hello World!...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 効果的効率的なマイコンのプロモーションに

Page 16: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

どんな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 効果的効率的なマイコンのプロモーションに

Page 17: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 18: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

やってみよう 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 効果的効率的なマイコンのプロモーションに

Page 19: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 20: mbed NXP LPC11U24 Hello World!...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 効果的効率的なマイコンのプロモーションに

Page 21: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 22: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 23: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

やってみよう割り込み 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 効果的効率的なマイコンのプロモーションに

Page 24: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 25: mbed NXP LPC11U24 Hello World!...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 効果的効率的なマイコンのプロモーションに

Page 26: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

例 データロギング

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 効果的効率的なマイコンのプロモーションに

Page 27: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

データを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 効果的効率的なマイコンのプロモーションに

Page 28: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 29: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

拡張で大容量化 (解説のみ)

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 効果的効率的なマイコンのプロモーションに

Page 30: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 31: mbed NXP LPC11U24 Hello World!...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 効果的効率的なマイコンのプロモーションに

Page 32: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 33: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 34: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 35: mbed NXP LPC11U24 Hello World!...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 効果的効率的なマイコンのプロモーションに

Page 36: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 37: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 38: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

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 効果的効率的なマイコンのプロモーションに

Page 39: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

まとめ

bull マイコンにはまだまだ多くの応用の可能性があります

ndash これまではアイデアを簡単に実験してみることができませんでした

bull mbed は簡単にはじめることができ高速プロトタイピングを可能にします

ndash アイデアをプロトタイプ化し実験を行うまでの作業を高速化

ndash 新しいテクノロジを使った新しいアイデアを試してみる

bull テクノロジーを使いやすく

ndash ここまでのデモでプロトタイプ作成の流れをご覧いただきました

ndash 使い始めから実験作業までを簡単に

bull 実験のツールとして使えます

まとめ

bull 多くの人にアピールするためのプロトタイピングにフォーカス

bull 組み込みアプリケーションの経験の浅いユーザには

ndash 製品アイデアの最初の実験とテストを可能に

ndash 電子回路マイコン設計は別の方法で

bull 経験豊富なエンジニアには

ndash 生産性を高めるためのコンセプト検証の一つの手段として

ndash 既存製品への32bitマイコンの導入検討に

bull マーケティング営業アプリケーションエンジニアには

ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用

ndash 効果的効率的なマイコンのプロモーションに

Page 40: mbed NXP LPC11U24 Hello World!...Hello Worldや スタート・ガイドが 用意されています • コンパイラへのリンクも このページにあります はじめてみよう

まとめ

bull 多くの人にアピールするためのプロトタイピングにフォーカス

bull 組み込みアプリケーションの経験の浅いユーザには

ndash 製品アイデアの最初の実験とテストを可能に

ndash 電子回路マイコン設計は別の方法で

bull 経験豊富なエンジニアには

ndash 生産性を高めるためのコンセプト検証の一つの手段として

ndash 既存製品への32bitマイコンの導入検討に

bull マーケティング営業アプリケーションエンジニアには

ndash 共通のマイコンプラットフォームとしてデモ評価サポートに活用

ndash 効果的効率的なマイコンのプロモーションに