パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

4曲ジョイスティックモジュール

2018-12-18 | Arduinoなの
Arduinoの開発環境にはサンプルがたくさん入っています。
その中のtoneMelodyを参考に作っています。pitches.hは同じです。

手持ちのアナログスティックをつないで何かしてみたいと考えたのが上下左右で演奏曲が変わるというもの

曲とは少し大げさです。


接続
電子ブザー(圧電ブザーでも圧電スピーカーでも同じです)
 プラス ー D8
 マイナス ー GND

ジョイスティック aitendoのジョイスティックモジュール [JOY10K-5P]を使っています。
 VCC ー 5V
 V ー A0
 H ー A1
 SEL 未使用
 GND ー GND

実はこの中にきよしこの夜2小節だけ入っているのだけど(音符の長さは違う)これが赤鼻のトナカイに聞こえる。


ソースリスト
開発環境 Arduino IDE 1.8.8
 スケッチ例 02.Digital のtoneMelodyを主に参考にして作成しています。
 それを開いた時にある pitches.hが必要です。
#include "pitches.h"

int melOn=0;

int melody[] = {
  NOTE_F4, NOTE_G4, NOTE_F4, NOTE_D4, NOTE_C5, 0, NOTE_C5, NOTE_A4,
  NOTE_C4, NOTE_G3, NOTE_D4, NOTE_E4, NOTE_G4, 0, NOTE_A4, NOTE_C5,
  NOTE_C4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_C4, 0, NOTE_G4, NOTE_G4,
  NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_E4, 0, NOTE_D4, NOTE_C4
};

int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};

void mel(int num){
  if (melOn==1){
    return;
  }
  // iterate over the notes of the melody:
  melOn=1;
  for (int thisNote = 0; thisNote < 8; thisNote++) {
    
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(8, melody[thisNote+num*8], noteDuration);
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    noTone(8);
  }
  melOn=0;
}

void setup() {
  mel(0);
}

void loop() {
  int sensorV = analogRead(A0);
  int sensorH = analogRead(A1);
  if (sensorV>700){
    mel(0);
  }
  if (sensorH>700){
    mel(1);
  }
  if (sensorV<300){
    mel(2);
  }
  if (sensorH<300){
    mel(3);
  }
}



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。