#include <Adafruit_SSD1306.h>
#include "Model.h"
#include "View.h"
#define BUZZER_POS_PIN 8
#define TACT_SW_A_PIN 4
#define TACT_SW_B_PIN 5
#define TACT_SW_C_PIN 6
#define TACT_SW_D_PIN 7
#define TACT_SW_DETECT_PIN 2
volatile uint8_t swNum = 0;
View view;
Model model;
void callbackTactSw() {
if(swNum == 0) {
if (digitalRead(TACT_SW_A_PIN) == HIGH) {
swNum += 1;
}
if (digitalRead(TACT_SW_B_PIN) == HIGH) {
swNum += 2;
}
if (digitalRead(TACT_SW_C_PIN) == HIGH) {
swNum += 4;
}
if (digitalRead(TACT_SW_D_PIN) == HIGH) {
swNum += 8;
}
}
}
void setup() {
Serial.begin(115200);
// 入力ピン
pinMode(TACT_SW_A_PIN, INPUT);
pinMode(TACT_SW_B_PIN, INPUT);
pinMode(TACT_SW_C_PIN, INPUT);
pinMode(TACT_SW_D_PIN, INPUT);
pinMode(TACT_SW_DETECT_PIN, INPUT);
// 外部割込み
attachInterrupt(digitalPinToInterrupt(TACT_SW_DETECT_PIN), callbackTactSw, RISING);
view.Begin(&model);
model.Begin(&view);
}
void loop() {
if (swNum) {
view.Show();
Serial.println(swNum);
swNum = 0;
}
}