mbed Application Board
■AnalogIn
アナログ入力端子の電圧を読み取ります。
Example
0(0V)~1.0(3.3V)の数値(float)が0.3以上であればHIGHそうでなければLOWを出力し、アナログ入力から読み取った値を表示します。
main.cpp
#include "mbed.h"
AnalogIn ain(p19); // AnalogInのインスタンスであるainを生成
DigitalOut dout(p25); // DigitalOutのインスタンスであるdoutを生成
int main(void)
{
while(1)
{
// 0.3 * VCCより大きい場合は1、そうでなければ0を出力
if(ain > 0.3f)
{
dout = 1;
}
else
{
dout = 0;
}
// パーセンテージと16ビットの値を表示
// percentage: 20.537%
// normalized: 0x3293
printf("percentage: %3.3f%%\n", ain.read() * 100.0f);
printf("normalized: 0x%04X \n", ain.read_u16());
wait(0.2f);
}
}
■DigitalIn
デジタル入力ピンの値を読み取るために使用します。
Example
ボタンが押されたらLEDを点灯します。
main.cpp
#include "mbed.h"
DigitalIn enable(p14);
BusOut leds(LED1,LED2,LED3,LED4);
int main()
{
while(1)
{
if (enable)
{
leds=0xf; // ボタンが押されたらLED1〜LED4を点灯
}
else
{
leds=0x0; // LED1〜LED4を消灯
}
wait(0.1); // チャタリング対策
}
}
■I2C
I2CインターフェイスはI2Cマスタ機能を提供します。I2Cマスタは、I2Cスレーブとデータを交換することを可能にする2線式シリアル・プロトコルです。センサー、シリアルメモリ、その他モジュールなどのI2Cデバイスと通信するために使用します。
Example
x,y,z軸の加速度を5秒間隔で表示します。
main.cpp
#include "mbed.h"
#include "MMA7660.h"
DigitalOut connectionLed(LED1);
MMA7660 MMA(p28, p27);
Serial pc(USBTX, USBRX);
int main()
{
if (MMA.testConnection()) // MMA7660が通信可能かテストする
connectionLed = 1;
while(1)
{
/*
x,y,z軸の加速度を表示
x: -0.188 g
y: -0.094 g
z: 0.985 g
*/
pc.printf("x: %1.3f g \n", MMA.x());
pc.printf("y: %1.3f g \n", MMA.y());
pc.printf("z: %1.3f g \n", MMA.z());
pc.printf("\n");
wait(5);
}
}
■LCD
C12832(128x32 LCD)にテキストを表示します。
Example
LM75Bから読み取った温度を1秒間隔でLCDに表示します。
main.cpp
#include "mbed.h"
#include "LM75B.h"
#include "C12832.h"
C12832 lcd(p5, p7, p6, p8, p11);
LM75B sensor(p28,p27);
Serial pc(USBTX,USBRX);
int main ()
{
// LM75Bが通信可能か確認する
if (sensor.open()) {
printf("Device detected!\n");
while (1) {
lcd.cls(); // ディスプレイのバッファをクリア
lcd.locate(0,3); // 座標をセット
lcd.printf("Temp = %.3f\n", (float)sensor); // 温度を表示する
wait(1.0);
}
}
else
{
error("Device not detected!\n");
}
}
■Ticker
ティッカーは指定されたタイミングで関数を呼び出す定期的な割り込みに使用されます。
Example
2秒間隔でLEDが点滅を繰り返します。5秒毎に割り込みが入りLCDに温度(100回の平均値)が表示されます。
main.cpp
#include "mbed.h"
#include "C12832.h"
#include "LM75B.h"
#define COUNT 100 //測定回数
#define INTERVAL 5.0 //測定間隔(秒)
C12832 lcd(p5, p7, p6, p8, p11);
LM75B temp(p28,p27);
DigitalOut led1(LED1);
Ticker input;
void get_temp()
{
float ans ;
int i ;
ans = 0 ;
lcd.cls(); // ディスプレイのバッファをクリア
for (i=0 ; i < COUNT ; i++)
{
ans = ans + temp; // 温度を積算する
}
float avg = ans / COUNT; // 100回の平均値を返す
lcd.locate(0,5); // 座標をセット
lcd.printf("Temp = %.3f\n", avg); // 温度を表示する
}
int main ()
{
// LM75Bが通信可能か確認する
if (temp.open())
{
lcd.locate(0,5); // 座標をセット
lcd.printf("Device detected!\n");
input.attach(&get_temp, INTERVAL); // 5.0秒毎にget_temp関数を実行する
while (1)
{
// 無限ループ
led1 = !led1;
wait(2.0);
}
}
else
{
error("Device not detected!\n");
}
}
■Ethernet
Ethernetインターフェイスは、イーサネット接続を介してインターネットに接続するためのAPIを提供します。
Example
HTTPクライアントプログラムの簡単な例です。Ethernetインターフェイスを使用し、TCPソケット経由でHTTPトランザクションを実行するために使用します。
main.cpp
#include "mbed.h"
#include "TCPSocketConnection.h"
#include "EthernetInterface.h"
EthernetInterface eth;
TCPSocketConnection socket;
int main()
{
printf("Example network-socket HTTP client\n");
// Brings up the network interface
eth.init(); // インターフェースの初期化
eth.connect(); // インターフェースを起動
const char *ip = eth.getIPAddress(); // IPアドレスを取得
const char *mac = eth.getMACAddress(); // MACアドレスを取得
printf("IP address is: %s\n", ip ? ip : "No IP");
printf("MAC address is: %s\n", mac ? mac : "No MAC");
socket.connect("mbed.org", 80); // サーバーへ接続する
char sbuffer[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\r\n\r\n"; // 送信するHTTPリクエスト
int scount = socket.send(sbuffer, sizeof sbuffer); // TCPソケットでデータを送信する
printf("sent %d [%.*s]\r\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
char rbuffer[17];
int rcount = socket.receive(rbuffer, sizeof rbuffer); // HTTPレスポンスを受信する
printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
// Close the socket to return its memory and bring down the network interface
socket.close(); // ソケットを閉じる
eth.disconnect(); // インターフェースを停止
printf("Done\n");
}
Please log in to post comments.
