2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ラズパイのフロントエンドでマイコン制御するライブラリのラッパーを書いてみた

Last updated at Posted at 2018-10-20

Chirimen for raspberry Pi とは

ライブラリを読み込むことで、navigator にrequestI2CAccessやrequestGPIOAccessを拡張する、ラズパイのIoT支援ライブラリとでも言いましょうか?

本題であるラッパー

chirimeneckと言います。
それほど難しいことはしていません。
chirimen上でのrequest...Accessは二重の呼び出しができないので、別の定数に返却されるオブジェクトを閉じ込めただけです。
chirimenenck上の関数呼び出しだけで、chirimen上の構文をそのまま使えます。

  <script src="../../polyfill/polyfill.js"></script>
  <!-- load driver  as you like -->
    <script src="../../drivers/i2c-ADT7410.js"></script>
  <!-- load driver  as you like -->
  <script src="../../chirimeneck/gpio.js"></script>
  <script src="../../chirimeneck/i2c.js"></script>

//GPIO

(async function () {
  const gpio5 = await GPIO(5, "in");
  const gpio26 = await GPIO(26, "out");
  let v = 0
  gpio5.onchange = function (e) {
    v ^= v
    await gpio26.write(v);
  };
})();

///I2C

(async function () {
  const adt7410 = await i2cLoadDriver(ADT7410, 0x48);
  while (true) {
    let value = await adt7410.read();
    // do somthing
    await sleep(1000);
  }
})();

(async function () {
  const groveLight = await i2cLoadDriver(GROVELIGHT, 0x29);
  while (true) {
    try {
      var value = await groveLight.read();
      // console.log('value:', value);
      head.innerHTML = value ? value : head.innerHTML;
      await sleep(200);
    } catch (error) {
      console.log(" Error : ", error);
    }
  }
})();

ネジのような部品

プログラミングで最も必要なものは、大きな大枠の問題を解決するための、小さな部品です。しかし、絆創膏的なコードを書くという意味ではありません。
問題となる具象を包み込んで、いかなる抽象化を施すかで、ソースコードの質は抜群に上がります。
今回は、自分の勉強のためにも書いてみたようなものですが、皆様のためにもなればと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?