[obniz]季節の変わり目に飲み物提供マシン

##ここだけ見てくれたら閉じていいよｗ
今回はこんなものを作りました！
この動画見てくれたら、もうそれでいいですｗ
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">気温判断で飲み物提供マシンを作りました！<br>寒いと温かい飲み物を暑いと冷たいものを提供してくれます！<br><br>荒々しすぎるしコード邪魔で奇跡の一枚になりそう笑<a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://twitter.com/hashtag/obniz?src=hash&amp;ref_src=twsrc%5Etfw">#obniz</a> <a href="https://t.co/1v20lCHRRU">pic.twitter.com/1v20lCHRRU</a></p>&mdash; kkyosuke (@kkyosuke17) <a href="https://twitter.com/kkyosuke17/status/1393807811692228608?ref_src=twsrc%5Etfw">May 16, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

見てくださりありがとうございました。
以下このマシンの概要になるので気になる方はぜひご覧ください。

##暑いし寒い、1日の気温の変化が大変
この時期、朝は寒いのに昼間は暑い。。
日が暮れるころにはまた寒いなんて感じませんか？
そんなときに少し役に立つ飲み物の提供マシンをobnizでつくりました。

##マシンの中身
まず温度センサー（[LM60 | JS Parts Library | obniz](https://obniz.io/ja/sdk/parts/LM60/README.md)）とLED[WS2811 | JS Parts Library | obniz](https://obniz.io/ja/sdk/parts/WS2811/README.md)が使用されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1269684/c0e71409-454f-2dd6-961b-2676bca186ed.png)
温度センサーで気温を計測し、設定した温度より高いか低いかでLEDが変色します。

今回のマシンに欠かせないのが**サーボモータ**！！（[サーボモーターの概要](https://obniz.com/ja/doc/guides/obniz-starter-guide/parts-library/servo-motor)）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1269684/6bca5a2b-21d7-17cc-765b-64de7bad0e42.png)
回転する鍋蓋と土台のボールの間に設置しました。
これを固定してバランスとるのが難しかったｗ

あとは回転する鍋蓋の上につけられたカップに飲み物の温度を保つための保冷剤とカイロを入れて完成！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1269684/8ee50c61-1a28-4ae1-e3b4-245e8af9b945.png)

##ここも見る価値ありかも！obnizの配線とソースコード
各部品とobnizは以下のように接続しました。
使用したobnizは1Yボードになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1269684/102e9e64-50e1-c063-3b57-47efc7f4f117.png)

以下が使用したソースコードになります。

```javascript
const Obniz = require('obniz');
//IDの書き換え忘れずに！！
const obniz = new Obniz('ID');

obniz.onconnect = async () => {

    // 温度センサ
    const tempsens = obniz.wired('LM60', { gnd: 0, output: 1, vcc: 2 });
    
    // RGB LEDを利用
    const rgbled = obniz.wired('WS2811', { gnd: 4, vcc: 5, din: 6 });

    // サーボモータを利用
    const servo = obniz.wired('ServoMotor', { gnd: 9, vcc: 10, signal: 11 });
    // 角度を保持する変数
    let degrees = 90.0;

    // obnizディスプレイ（初期表示）
    obniz.display.clear();
    obniz.display.print('obniz Ready');

    // setIntervalで定期実行
    setInterval(async () => {
        // 同期的に取得
        const temp = await tempsens.getWait();
        // 温度をコンソールに表示
        console.log(temp + 'C');
        // 温度をobnizディスプレイに表示
        obniz.display.clear();
        obniz.display.print(temp + 'C');
        // 温度によって判定
        if (temp < 22.0) {
            //冷たい飲み物が置いてあるほうに回転
            degrees = 180.0;
            servo.angle(degrees);
            //水色のLEDを点灯
            rgbled.rgb(45, 140, 255);
        } else {
            //暖かい飲み物が置いてあるほうに回転
            degrees = 1.0;
            servo.angle(degrees);
            //オレンジ色のLEDを点灯
            rgbled.rgb(255, 110, 30);
        }
    }, 180000); // 180000ミリ秒 = 30分ごとに実行
};
```

##できなかったこと・・・
ここまで完成はしたのですが本来使いたかったのはこの部品！
圧力センサー([FSR-40X](https://obniz.io/ja/sdk/parts/FSR-40X/README.md))！！！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1269684/9b175a9e-bc28-61f2-2054-ec26ec1d57d2.png)
こいつを使って飲み物が減っているかを検知したかった。
もし30分以上減っていなければ音を鳴らし脱水症防止にも役立てられただろうに・・・
なぜ実装に至らなかったかというと短すぎwwwww
回転盤の素材や土台をもうすこし考えてから再挑戦したと思います！

##まとめ
今回はあったらいいなでいうと1日の水分摂取量を管理してくれるものが作りたかったのでできなかったことのほうがあったらいいなでした。
しかし今回作成したマシンを見てこれは面白いし、こちらを作りたいという気持ちが勝ったため圧力センサーは今回外しました。
作成前はこのマシンはあまり面白くないだろうなと思い圧力センサーを思いついたのですが動いているところを見たらシュールで面白かったです。
やはり作ってみるまで分からないところもあるなと思いました。