LPC810でArduino API互換環境eXodusinoを使うまとめ
8ピンDIP LPC810でArduinoライクな開発をする
Cortex-M0/M0+向けArduino API互換環境eXodusinoはLPC81xシリーズに対応開始しました。
ここでは、8ピン DIPバッケージLPC810で使う方法を取り上げます。
- LPCXpresso IDEのダウンロード
- スイッチマトリクスツールのダウンロード
- eXodusinoのダウンロード
- スイッチマトリクスツールでペリフェラルが使うIOピンを指定する
- eXodusinoプロジェクトにコピー
- マイコンへの書き込み
- eXodusinoのLPC810M021F用プログラムのビルド方法
基本的な使い方は以前に書いたまとめとほぼ一緒です。
Arduino API互換環境eXodusinoをLPC1114 DIPで使うまとめ - Lynx-EyEDの電音鍵盤 新館
今回はスイッチマトリクスツール関連が新たに加わっています。
■必要なもの
- PC
- LPCXpresso IDE ver5.0.12以上
- LPC810M021F(DIPのLPC810マイコン)
- LPC-Link か USB-UART(プログラム書き込みに使う)
(1) LPCXpresso IDEの用意
インストール方法はCQのページから
LPCXpresso IDEのインストール
LPCXpresso IDEダウンロードは(要ログイン)
Home Page | LPCXpresso, powered by Code Red Technologies
ここではLPCXpressoの詳細設定を取り扱うことは致しません。ダウンロード後、無事起動できる事を確認してください。
(2) スイッチマトリクスツールのダウンロード
LPC81xはSPIやUARTやI2CなどのIOピンを電源以外のほぼ全てのピンから自由に割り当てる事が出来ます。
たとえばSPI0は以下のように指定します
/* SPI0_MOSI */ // PIO0_14 -> MOSI (LSB) /* SPI0_MISO */ // PIO0_6 -> MISO /* SPI0_SSEL */ // not in use LPC_SWM->PINASSIGN4 = 0xffff060eUL;
でも、このように手作業で書くのは面倒ですし、GUIツールに任せた方がよいので以下のツールの力を借ります。(ダウンロードにログインは不要)
NXP Switch Matrix Tool for LPC800 | www.LPCware.com
(3) eXodusinoのダウンロード
eXodusino[エクソダシノ]とは簡単に言うとArduinoの記述をCortex-M0/M0+に理解させるための手段です。
現状でLPC81xで動作しているのは以下の機能です
- Serial
- SPI (一部未実装)
- 割り込みを除くGPIOの機能
- delay
- millis
ここからダウンロードできます。
lynxeyed-atsu/eXodusino · GitHub
(図:この部分の「ZIP」とかいてあるボタンをクリック)
ダウンロード後、解凍すると「lynxeyed-atsu-eXodusino-(数字)」という謎フォルダ名になってしまうので、「exodusino」(鍵かっこ含まず)という名前に変更する。
これをLPCXpresso IDEの作業用ディレクトリに移動など、作業しやすい場所に移動してください。
LPCXpresso IDEを起動します
QuickStartウィンドウの[Import Existing Projects]を選択し、先ほど移動したexodusinoフォルダを指定してください。
インポートが完了するとProject Explorerウィンドウに下図のような構成でeXodusinoプロジェクトが展開されます。
ここでLPCXpresso IDEの必要最小限の設定はおしまいです。
(4) スイッチマトリクスツールでIOピンを指定する
ダウンロードして来たスイッチマトリクスツールのjarファイルを起動します。Mac OSXの場合はダブルクリックで起動するはずですが、起動しない場合は、ターミナル.appで
java -jar Switch\ Matrix\ Tool\ -\ LPC8xx\ ver1\ 20121210.jar
のように起動します。
今回は8pinのLPC810M021FN8を選択します。
ペリフェラルが使うIOを指定します。今回はUARTとLED点滅用のGPIOピンを使おうと思います。
UARTはTXとRXの2ピンが必要です。どのピンにも指定可能ですが、今回は
PIO0_4 -> UART0_TXD PIO0_0 -> UART0_RXD
に指定します。USART0をクリックします
次にPIO0_4をクリックし、ポップアップから、U0_TXDを選択します。
同様にPIO0_0をクリックし、ポップアップから、U0_RXDを選択します。
これで設定は完了です。ウィンドウ下部のswm.cをクリックし、SwitchMatrix_Init()関数の中身を貰ってきます。右クリックではコピーメニューが出ませんので、ショートカットキー[Ctrl + C]でコピーできます。
(5) eXodusinoプロジェクトにコピー
/eXodusino/src/core/device_dependent/lpc800/swm.cpp にSwitchMatrix_Init()関数の中身をペーストします。
(6)マイコンへの書き込み
ここではリンクを紹介するにとどめます。NXPのfacebookからですが、
- LPCXpressoからの書き込み方法
- flash magicを使う、シリアルからの書き込み方法
が紹介されています。
「LPC810 (= DIP8_ARMマイコン) + LPCXpresso」で,Lチカ (LED点滅)プログラムを動かしてみる | Facebook
LPC810 (= DIP8_ARMマイコン) のフラッシュへの書き込みをシリアルインターフェースで行なう | Facebook
(7)eXodusinoのLPC810M021F用プログラムのビルド方法
今回のビルド条件は以下のようなものです
デバイス:LPC810F021F
LPCXpressoから直接書き込み
マイコンの内蔵クロックで動作
LPCXpresso IDEのProject Explorer → eXodusinoプロジェクトトップフォルダ右クリック → Propertiesを選択
[C/C++ Build]の項目を選択 → Manage Configurations... → [LPC810M_F021F_DIP8]を選択 → [Set Active]
[OK] → [Apply] → [OK]
これで完了です。*1
Arduinoのスケッチに相当するファイルが[eXodusinoプロジェクトトップ] → [src] → [user_application.cpp]です。
USB-UARTのRX,TXをLPC810のPIO0_4,PIO0_0にそれぞれ接続するとPCからシリアルコンソールで確認する事が出来ます。また、PIO0_1にLEDを接続すると、1秒周期で点滅します。
#include <libmary.h> void setup(void) { pinMode(P0_1, OUTPUT); Serial.begin(9600); Serial.println("Start.."); } void loop(void) { digitalWrite(P0_1,HIGH); delay(500); digitalWrite(P0_1,LOW); delay(500); Serial.println(millis() / 1000, DEC); }
一旦、メニューのProject → Cleanを選択し、その後、Project → Build Allします。
エラーが出現しなければマイコンへ書き込みをします。
[eXodusinoプロジェクトフォルダ]/LPC810M_021F_DIP8/eXodusino.axf
が書き込むバイナリです。
■配線図
書き込み後、以下の回路でテストしました。
3.3V電源で駆動してください。
シリアルから9600baudで
1秒ごとに経過時間が表示され、LEDが1秒間隔で点滅します。
実験風景
番外編:LPC812も使ってみる
いつものフラクタルを描いてみました。今回はLPCXpresso LPC812とMAPLEボードを使っています。一部、OLEDの配線の関係でジャンパーを飛ばしました。
詳細はまた、別記事にて。
*1:DIP8パッケージを選択した場合、eXodusinoはInternal RCで動作するようコンフィグレーションします
eXodusinoのフレームワーク
対応デバイスの増加と機能追加に対応する
現在、eXodusinoのgithubで公開しているプロジェクトでは、
- LPC1114L系列*1
- LPC1115/301
に対応しています。
[ lynxeyed-atsu/eXodusino · GitHub]
現在、国内とUSAのコミッタを合わせた5人で、複数のNXP Cortex-Mxに対応するような努力が払われており、最終の調整を進めています。
NXPのマイコンはローエンドからミッドレンジまでペリフェラルIPが統一されているので、少しの変更でかなりのデバイスをカバーできるはずですが、例えば、SPIのコアはLPC8xxとLPC11xxで異なります。また、GPIOやSystick以外のタイマーはそれぞれのデバイスに応じて実装されているので、これらの差分もeXodusinoは吸収しなければならない事になります。つまりAPIの抽象度を上げて、それよりも抽象度の低いフレームワークをコールし、このフレームワークがデバイス依存の低レベルのコードを読み出します。
もっとも、某R社のように同じIPと見せかけてデバイス毎に全く違うドライバを書かなきゃいけない、ミスを誘発するような仕組みにはなっておらず、差分もわずかなので、少しの調整で済むと思われます。*2
いままで、Arduino APIにデバイスドライバをべた書きしてしまっているコードも多く、汎用性に乏しかった事もあり、この機会に書き直す事にしました。
幸い、NXPがそこそこ汎用性のあるデバイスドライバを用意してくれているので、コレの上にeXodusinoを構築する事にしました。↓こんな感じ。いままで、APIにべた書きしていた部分を完全に分離するのが目標です。
Software Design 2012年12月号
ちょっと告知が遅くなってしまったのですが、Software Design誌2012年12月号にて@ytsuboi氏による連載の「はんだづけカフェなう」ARMマイコンをはじめてみよう(後編)にてeXodusinoが登場しました。
わーい。
SD誌2012年11月号から続いてるARMマイコンの話題ですが、LPCXpressoの導入からeXodusinoの使いかたまでユーザの視点からちょう詳しく書かれております。このブログで取り上げてない使い方等もあります。
このブログの説明なんか読まずにこちらのSD誌読んだ方が良いと思います。(爆
http://www.fujisan.co.jp/product/1535/b/865610/
Software Design 2012年12月号、電子書籍版もあるのでぜひ。
MFT2012出展その後(スマホで文字データ可視光通信)
今回、Androidアプリとマイコン(eXodusino)制御のフルカラーLEDによる可視光通信ネタをメインに展示していたわけですが、直射日光やオレンジ色の部屋のライトアップなどがあり、一定しない環境光に悩まされながらの展示でした。(初日は午後は壊滅的)
今回作ったアプリはカメラで取得した画像をHSV変換し、明度がV=100[%]のデータ(つまり白とび)、V<50[%](50%未満=つまりライトではない色データ)を間引いています。詳しい実装は(AndroidでHSV変換 - Lynx-EyEDの電音鍵盤 新館)をご覧ください。強い白色LEDトーチをフルカラーLEDの発光部に当てながらカメラで色相を読み取らせるとよい事に気がつきました。
というわけで2日目はそれでほぼ終日運用。また、10bpsまで通信速度を下げました。
2日目最終日に急いで撮った画像をYouTubeにアップしました。周りがにぎやかですが、よかったらご覧ください
LPC1114 DIPのArduinoボード "NeXtPino" 登場
Arduino本家がArduino DueでARMプロセッサに置き換わるなど、この界隈もまたにぎやかですが、依然としてDIPマイコンが使えるArduino UNOは人気が高いようですね。
32bit Arduinoクローン(ソフトのみ、ハードのみ互換含む)でも
- chipKitシリーズ (PIC32MX/MIPS M4K)
- Netduinoシリーズ (AT91SAM7/ARM7TDMI)
- FEZ Dominoシリーズ(LPC2xxx/ARM7TDMI-S)
- MAPLEシリーズ(STM32F/Cortex-M3)
- Pellerduino (P8X32A/Parallax Propeller)
など、(あとなんかあったっけ?いろいろあると思います)
当ブログでも史上最速でCortex-M0に対応したArduino互換APIを提供しています。(STMicroのCortex-M0 Arduinoより早かったはず)
NeXtPino LPC1114 Arduino board
えとせとらのMatty氏より、DIP ARMが載るArduinoボードを提供いただきました。安心のUSB-UARTチップ搭載済み
ピンアサインも深く考慮されており、使いやすくなっております。
使ってみた
コレにNetSynth.orgのGenie氏のご厚意により提供いただいたねむいさんのTFT-LCDシールド(RC版)を載せてみました。*1
お約束のフラクタル描画
eXodusinoライブラリのSPIの変更
NeXtPino登場にあわせ、eXodusinoライブラリのSPIクラスを改良しました
いままで、LPC1114FN28で
SPI.begin();
とすると、今まではSCKピンはPIO0_6を使用するようになっていましたが、今回の修正でPIO0_10になりました。もし、PIO0_6をSCKピンとして使いたい場合は
SPI.begin( SCK_P0_6 );
としていただく必要がございます。何卒ご了承ください。
ボード入手方法
ITショップ「えとせとら」さんより
ITショップ「えとせとら」
あら、在庫わずか。早いもの勝ちですな。
ボクもマンデルブロ集合描きたい
eXodusinoライブラリが必要になります。
lynxeyed-atsu/eXodusino · GitHub
使い方1.(必須)
Arduino API互換環境eXodusinoをLPC1114 DIPで使うまとめ - Lynx-EyEDの電音鍵盤 新館
使い方2.(ブートローダなど。必須ではない)
Arduino API互換環境eX(ryまとめ その2 - Lynx-EyEDの電音鍵盤 新館
参考:マンデルブロについて参考にさせていただいたサイトです
マンデルブロ集合/C言語サンプル ソースプログラム/佐伯英子技術士事務所(情報工学)
ほぼそのままの実装を使わせていただいております。ありがとうございます。
user_application.cppに以下を記述し、コンパイル後NeXtPinoに書き込みます
#include <math.h> #include <libmary.h> #include "TFTLCD.h" volatile int count = 0; volatile float magnitude; volatile float sub_x; volatile float sub_y; void setup() { Serial.begin(9600); SPI.setBitLength(8); SPI.setDataMode(SPI_MODE0); SPI.setClockDivider(SPI_CLOCK_DIV4); SPI.begin(); //TFT-LCD init pinMode(LCD_DC,OUTPUT); pinMode(LCD_RES,OUTPUT); pinMode(LCD_CS,OUTPUT); initDisplay(); //表示領域の初期化(全画面) resetArea(); fillScreen(0,0); delay(1000); sub_x = -0.5; sub_y = 0.1; magnitude = 1; Serial.println("LCD Initialization finish..."); } volatile int generateColor(int count, int base) { int r,g,b; int d = (count % base) * 256 / base; int m = (int)(d / 42.667); switch(m) { case 0: r=0; g=6*d; b=255; break; case 1: r=0; g=255; b=255-6*(d-43);break; case 2: r=6*(d-86); g=255; b=0; break; case 3: r=255; g=255-6*(d-129);b=0; break; case 4: r=255; g=0; b=6*(d-171); break; case 5: r=255-6*(d-214); g=0; b=255; break; default: r=0; g=0; b=0; break; } return (((r >> 3) & 0x1f) << 11) | (((g >> 2) & 0x3f) << 5) | ((b >> 3) & 0x1f); } void loop() { int oldtime = 0,nowtime = 0; select_disp(); resetArea(); for(int y = 0;y < 130;y++) // 虚部(縦方向) { for(int x = 0; x < 130; x++) { // 実部(横方向) float cr = (x - 64) / 64. / magnitude + sub_x; float ci = (y - 64) / 64. / magnitude + sub_y; float zr = 0.0, zrN; float zi = 0.0, ziN; float E = 4.0; // E:この値を超えたら発散とする int t,tmax = 512; // tmax:最大計算回数 // 収束検査 for(t = 0; t < tmax; t++) { zrN = zr * zr - zi * zi + cr; if(zrN > E) break; ziN = 2.0 * zr * zi + ci; if(ziN > E) break; zr = zrN; zi = ziN; } int colour = generateColor(t, 64); int data1 = ((colour >> 8) & 0xff) | 0x100; int data2 = (colour & 0x0ff) | 0x100; sendData(data1); sendData(data2); } } unselect_disp(); nowtime = millis(); Serial.print("描画終了時間="); Serial.print(nowtime,DEC); Serial.println("mSec"); Serial.print("描画時間="); Serial.print((nowtime - oldtime),DEC); Serial.println("mSec"); magnitude = magnitude * 1.2; if(count++ > 10) { count = 0; magnitude = 1; } delay(1); }
マルツのDIPモジュール基板でeXodusino
eXodusino関連の内容です。
■いままでの内容です。参考までに
Arduino API互換環境eXodusinoをLPC1114 DIPで使うまとめ - Lynx-EyEDの電音鍵盤 新館
Arduino API互換環境eX(ryまとめ その2 - Lynx-EyEDの電音鍵盤 新館
マルツからこんな基板が出たので買ってみました。PK-MYARM-SET
【PK-MYARM-SET】MB 基板付キット - 雑誌・書籍連動キット - その他 キット - マルツエレック【マルツパーツ館WebShop】
お目当ては8pin SOPパッケージのUSB-UARTチップPL2303SA。
Mac OSXでそのままじゃ動かないと噂に聞いていたのでそれの検証もかねて買いました。
でけた。
うむ…
はい動きませんありがとうございました。(棒
PL2303SAのページにアクセス
PL2303SA USB to Serial Bridge Controller | Prolific USA
このページの下の方に
Mac OS X Universal Binary Driver v1.4.0 (DMG file format)
という項目があるので、dmgファイルを貰って来てインストールします。終わると強制的に再起動...
再起動後、端末エミュレータなどで
/dev/tty.usbserial
という端末が見えている事を確認できると思います。
LPC1114にeXodusブートローダを書き込むと、シリアルコンソール上で、プログラムの書き込みからいわゆる"printfデバッグ"まで出来ます。
eXodusブートローダの書き込み方法はこちらを参考にしてください。
Arduino API互換環境eX(ryまとめ その2 - Lynx-EyEDの電音鍵盤 新館
WindowsでのシリアルコンソールはTeraTermを使うと便利です。Mac/LinuxではMinicom、GUIが使いやすいCuteComがあります。
前回(Arduino API互換環境eXodusinoをLPC1114 DIPで使うまとめ - Lynx-EyEDの電音鍵盤 新館)もやったLEDホタルを作ります。
マルツの基板では
LED1 -> P1_5 (Lowで点灯) LED2 -> P0_7 (Highで点灯)
に接続されています。
LED1とLED2が交互に点灯するようにします。user_application.cppを次のように書き換えます
#include <libmary.h> #define LED1 P1_5 #define LED2 P0_7 void setup() { Serial.begin(9600); // UARTのセットアップ(9600baud) Serial.println("\r\nStart..."); } void loop() { for(int i = 0; i < 256; i++) { analogWrite(LED1,255 - i); analogWrite(LED2,255 - i); delay(5); } for(int i = 0; i < 256; i++) { analogWrite(LED1,i); analogWrite(LED2,i); delay(5); } }
基板上のUARTのピン設定を済ませたら、リセット(SW1)を押し、1秒以内にターミナル上から[z]キーを入力し、eXodusブートローダを書き込みモードにします。
図はCuteComでの書き込み待機状態。詳細はArduino API互換環境eX(ryまとめ その2 - Lynx-EyEDの電音鍵盤 新館をご覧下さい。
書き込みが成功すれば、交互にLEDが点灯します
Arduino API互換環境eXodusinoをLPC1114 DIPで使うまとめ
ここでは、Arduino API互換環境 eXodusino をLPC1114 DIPで使うにあたっての手順をまとめてみました。
(1) LPCXpresso IDEの用意
(2) eXodusinoのダウンロード
(3) マイコンへの書き込み方法
(4) eXodusinoのLPC1114FN28/102用プログラムのビルド方法
Arduinoに比べて手順がちょっと多いですが、順番に説明していきます。なお、当ブログで書いてきた内容が重複してますので、ご存知の方は(4)のみ読んでいただければと思います。(プリプロセッサの切り替えを追加しましたので)
■必要なもの
・PC
・LPCXpresso IDE 4.2.3以上
・LPC1114FN28/102(DIPのLPC1114マイコン)
・LPCXpressoの左側の、みんなに邪魔あつかいされてくびちょんぱされるアレ(LPC-Link)
・USB-UART(必須ではないけど、ほとんど必須)
(1) LPCXpresso IDEの用意
LPCXpresso IDEはCQのMARY基板などでインストールされた方も多いと思いますが、おそらくその当時のバージョンですとDIPマイコンでは書き込みやデバッグが出来ません。最新のバージョンをもう一度インストールしてください。
インストール方法はCQのページから
LPCXpresso IDEのインストール
LPCXpresso IDEダウンロードは(要ログイン)
Home Page | LPCXpresso, powered by Code Red Technologies
ここではLPCXpressoの詳細設定を取り扱うことは致しません。ダウンロード後、無事起動できる事を確認してください。
(2) eXodusinoのダウンロード
eXodusino[エクソダシノ]とは簡単に言うとArduinoの記述をLPC1114に理解させるための手段です。完全互換ではありませんが、SPIでメモリを読み書きしたり、PWMでLEDを点灯させたり、キャラクタ液晶に文字を表示したり、乱数でさいころゲームを作ったりと、かなりの部分をカバーしています。
ここからダウンロードできます。
lynxeyed-atsu/eXodusino · GitHub
(図:この部分の「ZIP」とかいてあるボタンをクリック)
ダウンロード後、解凍すると「lynxeyed-atsu-eXodusino-(数字)」という謎フォルダ名になってしまうので、「exodusino」(鍵かっこ含まず)という名前に変更する。
これをLPCXpresso IDEの作業用ディレクトリに移動など、作業しやすい場所に移動してください。
LPCXpresso IDEを起動します
QuickStartウィンドウの[Import Existing Projects]を選択し、先ほど移動したexodusinoフォルダを指定してください。
インポートが完了するとProject Explorerウィンドウに下図のような構成でeXodusinoプロジェクトが展開されます。
※以下の作業は2012年11月以降のバージョンアップでは不要になりました
ここでエラーが出た方も多いと思います。不要なプロジェクトがあるためです。cutecom-0.22-0というフォルダ*1が不要です。
このフォルダ上で右クリックし、Resource Configurations → Exclude from Build...を選択します。
続いて、Select Allを選択しOK
ここでLPCXpresso IDEの必要最小限の設定はおしまいです。
(3) マイコンへの書き込み方法
書き込み方法は3つ有ります
- LPC-Linkを使いLPCXpresso IDEから直接書き込む
- Flash Magicを使う
- eXodusブートローダを使う
一番最初のやり方が、煩雑な手順が無く、確実に思えます。
なおeXodusブートローダを使うとTeraTermなどシリアルコンソールから無手順UARTで書き込みが出来ます。詳細は別エントリで扱おうと思います。
LPCXpressoボードのLPC-Linkを使います。LPC-Linkはこのようなピン配置となっております。JTAGではなくSWDです。
上図の右側半分を切断するか、Pカッターなどで電気的に分離し、ピンヘッダを立ててLPC-Linkを横取りします。
なお、LPC1114FN28/102のSWD書き込みに使うピンは
対応するピン同士をブレッドボードやユニバーサル基板を使って配線します。
3.3V電源はLPC-Linkから貰ってしまって構わないでしょう。
このままだと、LPCXpresso IDEで書き込み時にエラーを返してくる恐れがあります。LPC-Linkに接続しているデバイスがLPC1114FN28/102である事を明示的に伝える必要があります。
LPCXpresso IDEのProject Explorer → eXodusinoプロジェクトトップフォルダ右クリック → Propertiesを選択
下図のように、[C/C++ Build]の項目を展開し、[MCU settings]を選択 → LPC1114FNを選択 → [OK]
これで書き込みの準備段階は完了です
(4) eXodusinoのLPC1114FN28/102用プログラムのビルド方法
今回のビルド条件は以下のようなものです
- デバイス:LPC1114FN28/102
- ブートローダなし(=LPCXpressoから直接書き込み)
- マイコンの内蔵クロックで動作
この条件に合わせるようにリンカスクリプトとソースコードを書き換えるのはやりたくないので、コンフィグをワンタッチで変更できるようにしました。
LPCXpresso IDEのProject Explorer → eXodusinoプロジェクトトップフォルダ右クリック → Propertiesを選択
[C/C++ Build]の項目を選択 → Manage Configurations... → [LPC1114_FN28_102_DIP]を選択 → [Set Active]
[OK] → [Apply] → [OK]
これで完了です。
Arduinoのスケッチに相当するファイルが[eXodusinoプロジェクトトップ] → [src] → [user_application.cpp]です。
デフォルトでは9600baudで1秒ごとにマイコンが起動してからの時間を秒単位で送信します。
USB-UARTのRX,TXをLPC1114の15,16番ピンに接続するとPCからシリアルコンソールで確認する事が出来ます。
#include <libmary.h> void setup() { Serial.begin(9600); // UARTのセットアップ(9600baud) Serial.println("\r\nStart..."); } void loop() { Serial.println(millis()/1000,DEC); // 起動後の経過時間を1秒ごとに更新 delay(1000); }
一旦、メニューのProject → Cleanを選択し、その後、Project → Build Allします。
エラーが出現しなければOKです。
いよいよマイコンへ書き込みをします。
LPCXpresso IDEメニューの黒いICマークをクリック。
[Browse]を選択
[eXodusinoプロジェクトフォルダ]/LPC1114FN28_102_DIP28/eXodusino.axf
が書き込むバイナリです。
これを選択し、[OK]
しばらくすると書き込みが完了し、シリアルから9600baudで
1秒ごとにカウントアップが始まります。
実験風景……。
おい、Lチカさせろよw
はい。
LPC1114FN28/104のピンアサインを考慮しました。
上の図の水色の名称がeXodusinoで使えるピン名です。黄色の四角はそのピンの持つGPIOとは別の機能です。
P0_7とP0_4でLチカしてみました。eXodusinoはこの水色のピンのうちほぼすべてのピンでanalogWriteが使えます。(最大4チャネルまで)
LチカじゃなくてLEDホタルです。P0_7とP0_4に330~500Ωくらいの抵抗を介してLEDをそれぞれに接続すると交互に"ホタル点滅"します。
user_application.cppにこのように記述します。
#include <libmary.h> void setup() { Serial.begin(9600); // UARTのセットアップ(9600baud) Serial.println("\r\nStart..."); } void loop() { for(int i = 0; i < 256; i++) { analogWrite(P0_7,i); analogWrite(P0_4,255 - i); delay(1); } for(int i = 0; i < 256; i++) { analogWrite(P0_7,255 - i); analogWrite(P0_4,i); delay(1); } }
おしまい