雪だるま作ろう〜obnizで〜【ちかちかしながらジングルベルが流れる】初心者向け

### はじめに
クリスマスツリーとあわせて飾る雪だるまが作りたくて、どうせなら光る方が、どうせなら音楽流れる方が、と思ってobnizで作りました。
https://twitter.com/ped_yi/status/1601755032390889472

### 準備する物
obnizスターターキット（obniz Board、USB micro B cable、LED　Keyestudio_TrafficLight
ブザー　Keyestudio_Buzzer、ボタンKeyestudio_Button）
発泡スチロール（雪だるま胴体）、装飾品（私は鼻用に人参の先をつけ、毛糸の帽子をかぶせました。）


### 実装
obnizの開発者コンソールはとても便利ですがブラウザを開いておかないといけないため、今回はNode.jsを使って動かしました。

↓参考になります。
[obniz.comに掲載されているnode.jsの記事](https://obniz.com/ja/doc/guides/nodejs/how-to-run)

パーツをつないで、後は好きな音楽の楽譜と[周波数表](https://tomari.org/main/java/oto.html)を見ながらひたすら音を打ち込むのみです！
```javascript
speaker.play(195.998);
await obniz.wait(400);
```
↑この部分の数字をそれぞれ変更します。
同じ音がずっと続くと長い1音みたいになっちゃうので適宜途切れ目を入れました。

## 全体像

```javascript
"use strict";

const Obniz = require("obniz");

const obniz = new Obniz("obnizの番号");
obniz.onconnect = async function () {
  let light = obniz.wired("Keyestudio_TrafficLight", {
    gnd: 0,
    green: 1,
    yellow: 2,
    red: 3,
  });
　　　　let button = obniz.wired("Keyestudio_Button", {
    signal: 4,
    vcc: 5,
    gnd: 6,
  });
  let speaker = obniz.wired("Keyestudio_Buzzer", {
    signal: 9,
    vcc: 10,
    gnd: 11,
  });
  
  obniz.repeat(async () => {
    await button.stateWait(false);
    console.log("pressed");
    light.green.on();
    light.yellow.on();
    light.red.on();
    await obniz.wait(1000);
    light.green.off();
    light.yellow.off();
    light.red.off();
    await obniz.wait(100);
　　　　　　　　// 点滅させる
    light.yellow.blink();
    light.green.blink();
    light.red.blink();


    // そみれどそ
    speaker.play(195.998);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(261.626);
    await obniz.wait(400);
    speaker.play(195.998);
    await obniz.wait(1000);

    // そそみれどら
    speaker.play(195.998);
    await obniz.wait(400);
    speaker.play(195.998);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(261.626);
    await obniz.wait(400);
    speaker.play(220.0);
    await obniz.wait(1000);

    // ららふぁみれし
    speaker.play(220.0);
    await obniz.wait(400);
    speaker.play(220.0);
    await obniz.wait(400);
    speaker.play(349.228);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(246.942);
    await obniz.wait(1000);

    // ふぁそそふぁれみ
    speaker.play(349.228);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(349.228);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(1000);

    // そそみれどそ
    speaker.play(195.998);
    await obniz.wait(400);
    speaker.play(195.998);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(261.626);
    await obniz.wait(400);
    speaker.play(195.998);
    await obniz.wait(1000);

    // そそみれどら
    speaker.play(195.998);
    await obniz.wait(400);
    speaker.play(195.998);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(261.626);
    await obniz.wait(400);
    speaker.play(220.0);
    await obniz.wait(1000);

    // ららふぁみれそそそそらそふぁれど
    speaker.play(220.0);
    await obniz.wait(400);
    speaker.play(220.0);
    await obniz.wait(400);
    speaker.play(349.228);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(440.0);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(349.228);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(261.626);
    await obniz.wait(800);

    speaker.play(391.995);
    await obniz.wait(800);

    // みみみーみみみーみそどれみ
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(790);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    await obniz.wait(790);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(261.626);
    await obniz.wait(600);
    speaker.play(293.665);
    await obniz.wait(200);
    speaker.play(329.628);
    await obniz.wait(1150);
    speaker.stop();
    await obniz.wait(50);

    // ふぁふぁふぁーふぁふぁみみみみれれみれ、そー
    speaker.play(349.228);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(349.228);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(349.228);
    await obniz.wait(590);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(349.228);
    await obniz.wait(200);
    speaker.play(349.228);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(800);
    speaker.play(391.995);
    await obniz.wait(800);

    // みみみーみみみーみそどれみ
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    await obniz.wait(790);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    speaker.play(329.628);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(790);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(261.626);
    await obniz.wait(600);
    speaker.play(293.665);
    await obniz.wait(200);
    speaker.play(329.628);
    await obniz.wait(1150);
    speaker.stop();
    await obniz.wait(50);

    // ふぁふぁふぁーふぁふぁみみみそそふぁれど
    speaker.play(349.228);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(349.228);
    await obniz.wait(390);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(349.228);
    await obniz.wait(590);
    speaker.stop();
    await obniz.wait(10);
    speaker.play(349.228);
    await obniz.wait(200);
    speaker.play(349.228);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(329.628);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(391.995);
    await obniz.wait(400);
    speaker.play(349.228);
    await obniz.wait(400);
    speaker.play(293.665);
    await obniz.wait(400);
    speaker.play(261.626);
    await obniz.wait(800);

    speaker.stop();
    light.green.off();
    light.yellow.off();
    light.red.off();
  }, 0);
};
```

### おわりに
是非みなさんも作ってクリスマスを楽しんでください♪
Happy Birthday to youのコードは[こちら](https://qiita.com/ped-yui123/items/c07f4b6c86bbacac6e7f)