#include <Arduino.h>
#include <TM1637.h>
#define ANALOG_REG_PIN A0 // アナログ入力
#define TACT_SW_PIN 2 // タクトスイッチ
#define SLIDE_SW_PIN 3 // スライドスイッチ
#define BUZZER_PIN 5 // ブザー
#define TM1637_CLK_PIN 6 // TM1637(4桁7セグ) CLK
#define TM1637_DIO_PIN 7 // TM1637(4桁7セグ) DIO
void CallbackTactSw();
void CallbackSlideSw();
void DispSegment(uint16_t num);
TM1637 tm(TM1637_CLK_PIN, TM1637_DIO_PIN);
volatile boolean toneFlg = HIGH;
void setup() {
Serial.begin(115200);
pinMode(ANALOG_REG_PIN, INPUT);
pinMode(TACT_SW_PIN, INPUT);
pinMode(SLIDE_SW_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(TM1637_CLK_PIN, OUTPUT);
pinMode(TM1637_DIO_PIN, OUTPUT);
tm.init();
tm.set(BRIGHT_TYPICAL);
tm.clearDisplay();
attachInterrupt(digitalPinToInterrupt(TACT_SW_PIN), CallbackTactSw, CHANGE);
attachInterrupt(digitalPinToInterrupt(SLIDE_SW_PIN), CallbackSlideSw, CHANGE);
}
void loop() {
uint16_t regVal = analogRead(ANALOG_REG_PIN);
DispSegment(regVal);
//Serial.println(toneFlg);
if (toneFlg) {
noTone(BUZZER_PIN);
} else {
tone(BUZZER_PIN, regVal);
}
delay(100);
}
void CallbackTactSw() {
//toneFlg = !toneFlg;
if (digitalRead(SLIDE_SW_PIN)) {
toneFlg = digitalRead(TACT_SW_PIN);
} else {
toneFlg = !digitalRead(TACT_SW_PIN);
}
}
void CallbackSlideSw() {
toneFlg = digitalRead(SLIDE_SW_PIN);
}
void DispSegment(uint16_t num) {
//tm.clearDisplay();
tm.display(0, (num / 1000) % 10);
tm.display(1, (num / 100) % 10);
tm.display(2, (num / 10) % 10);
tm.display(3, num % 10);
}