電子工作初心者が1日目にArduinoでLemon (米津玄師)を演奏させてみた。

2020年5月5日

スポンサーリンク

こんにちわ、そにたん@sonitan_etologです。
最近新しい、趣味を始めたいと思って電子工作を始めてみました。
今日がその初日となっています。
先ほどまで、作業をしていて米津玄師さんのLemonをスピーカで演奏しつつLEDを連動させて光らせる様にしてみたので
記録がてら、ご報告。
ちなみに、私は大学生活中と新人研修等で少しだけ電子回路を触れたことがある人間ですが
ほぼほぼ、内容は覚えていない様な人間です….

スポンサーリンク

Arduinoとは

Arduinoは以下の様なものです。

Arduino(アルドゥイーノ もしくは アルデュイーノまたはアルディーノ)とは、(ハードウェアの)「Arduinoボード」、および(ソフトウェアの)「Arduino IDE」から構成されるシステムである。Arduinoボードは、AVRマイコン、入出力ポートを備えた基板であり、Arduino IDEはC言語風の「Arduino言語」によってプログラムを制作・コンパイル・デバッグ等し、それをArduinoボードに転送 等々するための「統合開発環境」と呼ばれる、PC上で作動させる一種のソフトウェアである。
出典元:https://ja.wikipedia.org/wiki/Arduino

わたしも、よく分かってませんが電子工作をするときに使う基盤ぐらいに、思っています。

ちなみに、今回私が買ったのは以下のものです。

いろいろ基本的なパーツ等も揃っていて、マニュアルも日本語対応なので初心者には良さそうです!
ちなみに、2020/5/5現在は売り切れになっているみたいなので、以下の様なパーツが少ないもので妥協するのも一つの手かもしれません。

作ったもの

まあ、そのうち初心者セットを使った感想は別途記事にしますね。
では実際に、作ったものをみてもらいましょう。

はい、とてもシンプルですねLemon(もどき)を演奏しつつLEDがピカピカ順番に点滅しているだけです。
全くの初心者が、1日目で作ったものとしては十分ではないでしょうか?
では、最後に回路図とソースコードを載せて終わります。

#include "pitches.h"

// MEL0_PINn LED点灯
#define MELO_PIN1 11
#define MELO_PIN2 10
#define MELO_PIN3 9
#define MELO_PIN4 6
#define MELO_PIN5 5
//スイッチ用PIN
#define SWITCH_PIN 3
//スピーカーPIN
#define SPIC_MUSIC 8

void setup() {
  // put your setup code here, to run once:
  pinMode(MELO_PIN1, OUTPUT);
  pinMode(MELO_PIN2, OUTPUT);
  pinMode(MELO_PIN3, OUTPUT);
  pinMode(MELO_PIN4, OUTPUT);
  pinMode(MELO_PIN5, OUTPUT);
  pinMode(SWITCH_PIN, INPUT_PULLUP); 

}

//レモン演奏関数
void lemon_start() {
  tone(SPIC_MUSIC, 247, 500);
  digitalWrite(MELO_PIN1, HIGH);
  delay(250);
  
  digitalWrite(MELO_PIN1, LOW);
  digitalWrite(MELO_PIN2, HIGH);
  tone(SPIC_MUSIC, 277, 500);
  delay(350);
  
  digitalWrite(MELO_PIN2, LOW);
  digitalWrite(MELO_PIN3, HIGH);
  tone(SPIC_MUSIC, 311, 750);
  delay(500);

  digitalWrite(MELO_PIN3, LOW);
  digitalWrite(MELO_PIN4, HIGH);
  tone(SPIC_MUSIC, 247, 500);
  delay(250);

  digitalWrite(MELO_PIN4, LOW);
  digitalWrite(MELO_PIN5, HIGH);
  tone(SPIC_MUSIC, 208, 1000);
  delay(500);

  digitalWrite(MELO_PIN5, LOW);
  digitalWrite(MELO_PIN1, HIGH);
  tone(SPIC_MUSIC, 554, 500);
  delay(500);

  digitalWrite(MELO_PIN1, LOW);
  digitalWrite(MELO_PIN2, HIGH);
  tone(SPIC_MUSIC, 233, 500);
  delay(500);

  digitalWrite(MELO_PIN2, LOW);
  digitalWrite(MELO_PIN3, HIGH);
  tone(SPIC_MUSIC, 370, 500);
  delay(250);

  digitalWrite(MELO_PIN3, LOW);
  digitalWrite(MELO_PIN4, HIGH);
  tone(SPIC_MUSIC, 311, 1000);
  delay(750);

  digitalWrite(MELO_PIN4, LOW);
  digitalWrite(MELO_PIN5, HIGH);
  tone(SPIC_MUSIC, 233, 500);
  delay(500);

  digitalWrite(MELO_PIN5, LOW);
  digitalWrite(MELO_PIN1, HIGH);
  tone(SPIC_MUSIC, 208, 500);
  delay(500);

  digitalWrite(MELO_PIN1, LOW);
  digitalWrite(MELO_PIN2, HIGH);
  tone(SPIC_MUSIC, 370, 500);
  delay(300);

  digitalWrite(MELO_PIN2, LOW);
  digitalWrite(MELO_PIN3, HIGH);
  tone(SPIC_MUSIC, 247, 1000);
  delay(500);

  digitalWrite(MELO_PIN3, LOW);
  digitalWrite(MELO_PIN4, HIGH);
  tone(SPIC_MUSIC, 370, 500);
  delay(250);

  digitalWrite(MELO_PIN4, LOW);
  digitalWrite(MELO_PIN5, HIGH);
  delay(250);
  digitalWrite(MELO_PIN5, LOW);
  tone(SPIC_MUSIC, 311, 500);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (digitalRead(SWITCH_PIN) == LOW) {
    // レモンを演奏する。
    lemon_start();
  }
  
}

音程は以下のサイトを参考にしました。

おわりに

これから、電子工作を楽しんでいきたいと思っていますが
なにか、あったらその都度記事にしたいかな。

スポンサーリンク