カラーセンサーとカラーLEDを連動させてみよう

 カラーセンサーで色を入力し、その色を7色に分類し、カラーLEDに出力させてみます。
個々については下記を参考にしてください
カラーセンサー
カラーLED

クラスを作る

ColorCopy.h
#ifndef COLORCOPY_H
#define COLORCOPY_H

#include "mbed.h"
#include "ColorLED.h"
#include "ColorSensor.h"

class ColorCopy : public ColorLED, public ColorSensor
{
  public:
    ColorCopy();
    ColorCopy(PinName r, PinName g, PinName b);
    ColorCopy(PinName dout, PinName range, PinName ck, PinName gate, int tm);
    ColorCopy(PinName r, PinName g, PinName b, PinName dout, 
              PinName range, PinName ck, PinName gate, int tm);
};

#endif // COLORCOPY_H
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 ColorLEDクラスとColorSensorクラスから継承させる
 9 
10 
11 色々な場合におけるコンストラクタ
12 
13 
14 
15 
16 
17 
18 


クラスファイル

ColorCopy.cpp
#include "ColorCopy.h"

ColorCopy::ColorCopy()
: ColorLED(),
ColorSensor(p5, p6, p7, p8, 20)
{
}

ColorCopy::ColorCopy(PinName r, PinName g, PinName b)
 : ColorLED(r, g, b),
ColorSensor(p5, p6, p7, p8, 20)
{
}

ColorCopy::ColorCopy(PinName dout, PinName range, PinName ck, PinName gate, int tm)
:ColorSensor(dout, range, ck, gate, tm),
ColorLED()
{
}

ColorCopy::ColorCopy(PinName r, PinName g, PinName b, PinName dout, 
                     PinName range, PinName ck, PinName gate, int tm)
: ColorLED(r, g, b),
ColorSensor(dout, range, ck, gate, tm)
{

}
 1 
 2 
 3 
 4 ColorLEDのデフォールトコンストラクタを使用する
 5 ColorSensorにピン設定する。
 6 他にすることが無いから空
 7 
 8 
 9 ColorLEDのピンの設定のみする
10 ColorLEDの引数付コンストラクタを使用する
11 ColorSensorにピン設定する。
12 他にすることが無いから空
13 
14 
15 ColorSensor全てのピンを設定する
16 
17 ColorLEDはデフォールトを用いる
18 
19 
20 
21 ColorSensor及びColorLEDは
22 全てのピンを設定する
23 
24 
25 
26 
27 


メインプログラム

main.cpp
int main()
{
  int red, green, blue;
  int I;
  pc.baud(115200);
  pc.printf("color sensor テスト\n");
  while(1)
  {
    switch(I=ColLED.fJudge()){
      case RED: ColLED.setColor(1.0f,0.0f,0.0f);
            pc.printf("red\n");
            break;
      case GREEN: ColLED.setColor(0.0f,1.0f,0.0f);
            pc.printf("green\n");
            break;
      case BLUE: ColLED.setColor(0.0f,0.0f,1.0f);
            pc.printf("blue\n");
            break;
      case SILVER: ColLED.setColor(1.0f,1.0f,1.0f);
            pc.printf("silver\n");
            break;
      case BLACK: ColLED.setColor(0,0,0);
            break;
      default:
            ColLED.setColor(0,0,0);
      break;
    }
    wait(0.1);
  }
}
 1 上の方は省略
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 色を判定するメソッドを呼ぶ。
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27