#include "sound.h"
//按鍵個代表一音符,拉桿可控制音域
#define SPEAKER_PIN 8
#define PULL_PIN 0
const uint8_t buttonPins[] = { 12, 11, 10, 9, 7, 6, 5, 4 };
const int buttonTones[3][8] = {
{NOTE_C3, NOTE_D3, NOTE_E3, NOTE_F3,
NOTE_G3, NOTE_A3, NOTE_B3, NOTE_C4},
{NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5},
{NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5,
NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6}
};
const int numTones = sizeof(buttonPins) / sizeof(buttonPins[0]);
void setup() {
Serial.begin(115200);
for (uint8_t i = 0; i < numTones; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
pinMode(SPEAKER_PIN, OUTPUT);
pinMode(PULL_PIN, INPUT);
}
void loop() {
int pitch = 0;
int highlow=0;
int val=analogRead(PULL_PIN);
//Serial.println(val);
if(val<=341){
highlow=0;
}else if(val>341&&val<=682){
highlow=1;
}else{highlow=2;}
for (uint8_t i = 0; i < numTones; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
pitch = buttonTones[highlow][i];
}
}
if (pitch) {
tone(SPEAKER_PIN, pitch);
} else {
noTone(SPEAKER_PIN);
}
}