1. johnny-shaman

    Posted

    johnny-shaman
Changes in title
+ラズパイのフロントエンドでマイコン制御するライブラリのラッパーを書いてみた
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,60 @@
+#Chirimen for raspberry Pi とは
+ライブラリを読み込むことで、navigator にrequestI2CAccessやrequestGPIOAccessを拡張する、ラズパイのIoT支援ライブラリとでも言いましょうか?
+#本題であるラッパー
+[chirimeneck](https://github.com/johnny-shaman/chirimeneck)と言います。
+それほど難しいことはしていません。
+chirimen上でのrequest...Accessは二重の呼び出しができないので、staticプロパティを作って返却されるオブジェクトを閉じ込めただけです。
+chirimenenck上のクラスをnewすれば、後はchirimen上の構文をそのまま使えます。
+
+~~~html
+ <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>
+~~~
+~~~javascript
+
+//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);
+ }
+ }
+})();
+~~~
+
+#ネジのような部品
+プログラミングで最も必要なものは、大きな大枠の問題を解決するための、小さな部品です。しかし、絆創膏的なコードを書くという意味ではありません。
+問題となる具象を包み込んで、いかなる抽象化を施すかで、ソースコードの質は抜群に上がります。
+今回は、自分の勉強のためにも書いてみたようなものですが、皆様のためにもなればと思います。