機能 | CPU PIN | BOE PIN | BOE PIN | CPU PIN | 機能 |
---|---|---|---|---|---|
Ground | 1 | Vss | Vss | 1 | Ground |
AnalogIn | 15 | P0 | P1 | 16 | AnalogIn |
AnalogIn | 17 | P2 | P3 | 18 | AnalogIn |
AnalogIn | 19 | P4 | P5 | 20 | AnalogIn |
Scl | 10 | P6 | P7 | 9 | Sda |
Scl | 27 | P8 | P9 | 28 | Sda |
PwmOut | 21 | P10 | P11 | 22 | PwmOut |
PwmOut | 23 | P12 | P13 | 24 | PwmOut |
PwmOut | 25 | P14 | P15 | 26 | PwmOut |
Vdd | Vin | 2 | 電源入力 |
BotBot.h |
---|
#include "mbed.h" enum BoePinName { P0 = P0_23, P1 = P0_24, P2 = P0_25, P3 = P0_26, P4 = P1_30, P5 = P1_31, P6 = P0_1, P7 = P0_0, P8 = P0_11, P9 = P0_10, P10 = P2_5, P11 = P2_4, P12 = P2_3, P13 = P2_2, P14 = P2_1, P15 = P2_0 }; |
LEDを点滅させるプログラム | |
---|---|
#include "mbed.h" #include "BoeBot.h" DigitalOut LED((PinName)P10); int main() { while(1) { LED = 1; wait(0.2); LED = 0; wait(0.2); } } |
1 2 3 BoeBotのP10はmbedのP21(cpuのP2_5)に繋がっている。 4 P10にPinNameでキャストする必要がある。 5 6 7 8 9 10 11 12 13 14 |
左右のサーボモーターを動かしてみる | |
---|---|
#include "mbed.h" #include "BoeBot.h" PwmOut Right((PinName)P12); PwmOut Left((PinName)P13); int main() { Right.period_ms(20); Left.period_ms(20); while(1) { Right.pulsewidth_us(1400); Left.pulsewidth_us(1900); wait(0.5); } } |
1 2 3 4 BoeBotのP12はmbedのP12に繋がっている。 5 BoeBotのP13はmbedのP13に繋がっている。 6 7 8 9 サーボモーターの周期を20ミリ秒に設定 10 11 12 13 14 15 16 |
距離センサーを付ける | |
---|---|
#include "mbed.h" #include "IrDistance.h" #include "BoeBot.h" // Left, Right IrDistance distance((PinName)P1,(PinName)P0); Serial pc(USBTX, USBRX); // tx, rx int main() { pc.baud(115200); while(true) { pc.printf("Left:%6.2f ", distance.getLeft()*1000); pc.printf("Right:%6.2f\n",distance.getRight()*1000); wait(0.3); } } |
1 2 3 4 5 6 PinNameにキャストする 7 8 センサーが正しく動作しているかチェックする。 9 10 11 12 距離に関係する数字を表示させる。 13 14 15 16 |
BoeBotCheckIr | |
---|---|
#include "mbed.h" #include "AnalogIn.h" #include "BoeBot.h" DigitalOut ledR(LED1); DigitalOut ledL(LED2); AnalogIn Right((PinName)P2); AnalogIn Left((PinName)P3); int main() { while(true) { if(Right>0.41) ledR=true; if(Right<0.39) ledR=false; if(Left>0.41) ledL=true; if(Left<0.39) ledL=false; wait(0.1); } } |
1 2 3 4 5 6 7 PinNameのキャストが必要 8 9 10 左右の車輪を手で回すと、 11 CPUボード上のLEDがチカチカする。 12 13 14 15 16 17 18 19 20 |
番号 | 名称 | 機能 | 線の色 | CPUのPin番号 |
---|---|---|---|---|
1 | /RST | リセット | 5番に接続 | |
2 | SCL | I2Cクロック | 白 | 10 |
3 | SDA | I2Cデータ | 橙 | 9 |
4 | Vss | グランド | 黒 | 1 |
5 | Vdd | 電源(2.7~3.6V) | 赤 | 40 |
I2C LCDを付ける。 main.cpp | |
---|---|
#include "mbed.h" #include "I2CLCD.h" #include "BoeBot.h" int main() { I2CLCD lcd((PinName)P7, (PinName)P6); int i=0; while(true) { lcd.write("*** LCD Test ***"); lcd.write("M.Mizuno"); lcd.write(i++,8,0); wait(0.2); lcd.clear(); } } |
1 2 3 4 5 6 7 I2CLCD lcd(p9,p10);でも良い。 8 9 10 11 12 13 8カラム場所を取り右詰で書く 14 15 16 17 |
|