![]() | ![]() |
![]() |
![]() 右側の長細いセンサーがPSDで、左側の小さいのが赤外線の発光ダイオードになっています。 |
IrDistance.h | |
---|---|
#ifndef _IRDISTANCE #define _IRDISTANCE #include <mbed.h> #include "AnalogIn.h" class IrDistance { private: AnalogIn *left, *right; public: IrDistance(); IrDistance(PinName left, PinName right); float getLeft(); float getRight(); }; #endif |
1 ヘッダーの再定義禁止用 2 3 mbed用ヘッダー 4 アナログ入力用へっだー 5 6 7 8 9 左右のアナログオブジェクトへの参照 10 11 12 コンストラクタ 13 引数付きコンストラクタ 14 左の距離を得る 15 右の距離を得る 16 17 18 1行目に対応する |
IrDistance.cpp | |
---|---|
#include "IrDistance.h" IrDistance::IrDistance() { left = new AnalogIn(p19); right = new AnalogIn(p20); } IrDistance::IrDistance(PinName L, PinName R) { left = new AnalogIn(L); right = new AnalogIn(R); } float IrDistance::getLeft() { return *left; } float IrDistance::getRight() { return *right; } |
1 赤外線距離センサー用のヘッダー 2 3 コンストラクタ 4 左のセンサーはp19につなげる 5 右のセンサーはp20につなげる 6 7 8 9 ピンを指定してのコンストラクタ 10 11 12 13 14 左の距離データを求める 15 16 17 18 19 右の距離データを求める 20 21 22 |
main.cpp | |
---|---|
#include "mbed.h" #include "IrDistance.h" #include "I2CLCD.h" IrDistance distance(p19,p20); I2CLCD lcd; int main() { lcd.clear(); while(true) { lcd.write((int)(distance.getLeft()*1000),6,0); lcd.write((int)(distance.getRight()*1000),6,0); wait(0.3); lcd.clear(); } } |
1 mbed用ヘッダー 2 赤外線距離センサー用のヘッダー 3 I2CLCDディスプレー用ヘッダー 4 左のセンサーをp19、右のセンサーをp20に繋げる 5 I2CLCDディスプレーのオブジェクト 6 7 8 LCDをクリアする 9 10 左側の距離データをLCDに表示する 11 右側の距離データをLCDに表示する 12 300ミリ秒待つ 13 LCDをクリアする 14 |