カラーセンサ



  • 初めて投稿いたします。
    よろしくお願いいたします。
    現在、obnizを使用してカラーセンサ(ローム製BH1749NUC)を動作させようとしているのですが、動作できておりません。
    プログラム内容を下記に示しますので、アドバイスをお願いいたします。
    プログラムは各色の値を読み取る内容になります。
    プルアップ抵抗には4.7kΩを使用しています。
    現状動作は各色の値は0のみとなります。
    ご回答をよろしくお願いいたします。

    <!-- HTML Example -->
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
    <script src="https://unpkg.com/obniz@2.0.3/obniz.js"></script>
    </head>
    <body>

    <script>
      var obniz = new Obniz("********");
    
      class SS {
        constructor() {
          this.keys = ['vcc', 'sda', 'scl', 'i2c', 'gnd'];
          this.requiredKeys = [];
    
          this.address = 0x38;
          this.regAdrs = {};
          this.regAdrs.ctrl = 0x40;
          this.regAdrs.modectrl1 = 0x41;
          this.regAdrs.modectrl2 = 0x42;
          this.regAdrs.interrupt = 0x60;
          this.regAdrs.persistence = 0x61;
          this.regAdrs.sensorRed = 0x50;
          this.regAdrs.sensorGreen = 0x52;
          this.regAdrs.sensorBlue = 0x54;
          this.regAdrs.sensorClear = 0x58;
        }
    
        static info() {
          return {
            name: 'SS',
          };
        }
    
        async wired(obniz) {
          this.obniz = obniz;
          obniz.setVccGnd(this.params.vcc, this.params.gnd, '3v');
          await this.obniz.wait(100);
          this.params.clock = 100000;
          this.params.pull = '3v';
          this.params.mode = 'master';
          this.i2c = obniz.getI2CWithConfig(this.params);
          await this.obniz.wait(100);
        }
    
        async init() {
          obniz.i2c0.start({mode:"master", sda:1, scl:2, clock:100000, pull:"3v"}); 
          obniz.i2c0.write(this.address, [this.regAdrs.ctrl, 0x8D]);
          obniz.i2c0.write(this.address, [this.regAdrs.modectrl1, 0x2D]);
          obniz.i2c0.write(this.address, [this.regAdrs.modectrl2, 0x10]);
        }
    
        async getVal() {
          obniz.i2c0.start({mode:"master", sda:1, scl:2, clock:100000, pull:"3v"}); 
          obniz.i2c0.write(this.address, [this.regAdrs.sensorRed]);
          let ret = await obniz.i2c0.readWait(this.address, 12);
          let level = [0, 0, 0, 0];
          level[0] = (ret[1] << 8) | ret[0];
          level[1] = (ret[3] << 8) | ret[2];
          level[2] = (ret[5] << 8) | ret[4];
          level[3] = (ret[9] << 8) | ret[8];
          return level;
        }
      }
    
      if (typeof module === 'object') {
        module.exports = SS;
      }
    
    
      obniz.onconnect = async function() {
          Obniz.PartsRegistrate(SS);
          var colorSens = obniz.wired("SS", {vcc:0, sda:1, scl:2, gnd:3});
          colorSens.init();
          var ret = await colorSens.getVal(); 
          console.log("getVal:"+ ret); 
          var red = ret[0]; 
          var green = ret[1]; 
          var blue = ret[2]; 
          var ir = ret[3]; 
        
          console.log("Red:"+ red);
          console.log("Green:"+ green);
          console.log("Blue:"+ blue);
          console.log("IR:"+ ir);
      }
    </script>
    

    </body>
    </html>


 

Recent Projects

  • @nak435 かしこまりました。よろしくお願いします。

    read more
  • @Yuki-Sato さん、

    外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    今週末に確認しますので、お待ちください。

    read more
  • @nak435 時間がかかってすいません、

    なんとか3.3vをgndにつないでFlick Largeを動かしたかったのですが、うまく動かすことができなかったです。
    3.3vをgndを繋がずに接続するというのはライブラリで推奨して伝えることは難しいと思ってます。

    Flick LargeでなくFlick Hatの方で、外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    よろしくお願い致します。

    read more
  • @nak435 ありがとうございます。
    接続は3.3vのgnd以外同じでした。
    エラーはそのせいかもしれませんが、しかし電気的にはgndを繋がない場合3.3vとしてうまく供給できないはずなのでそこが不思議です。

    教えていただいたプログラムの部分を修正して試してみたいと思います。
    また少し時間がかかりそうなのですが、早めに試したいと思います。

    引き続きよろしくお願い致します。

    read more