私は初心者のArduinoプログラミングを試しています。ピン割り込みが矛盾しています
私は(ESP8266)の音楽を演奏して、そのボタンを押すと音楽を止めてから、もう一度押すと再開するという作業です。ここで
は私のコードは、問題がボタンが矛盾しているされていること、である、
#include "pitches.h" // contains frequencies for notes
#define PIN_BUTTON 0 // the button
#define PIN_BUZZER 13 // the digital pin the Buzzer is attached to
bool stop = false; // button pressed
void play_note(int freq){
if (freq > 0 && !stop){
analogWrite(PIN_BUZZER, 512);
analogWriteFreq(freq);
} else {
analogWrite(PIN_BUZZER, 0);
}
}
void stopMusic(){
stop = !stop;
play_note(0);
}
void setup() {
pinMode(PIN_BUZZER, OUTPUT);
pinMode(PIN_BUTTON, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(PIN_BUTTON), stopMusic, RISING);
}
void loop() {
// intro
play_note(NOTE_E7);
delay(110);
play_note(NOTE_E7);
delay(220);
play_note(NOTE_E7);
delay(220);
play_note(NOTE_C7);
delay(110);
play_note(NOTE_E7);
delay(220);
play_note(NOTE_G7);
delay(440);
play_note(NOTE_G6);
delay(440);
}
です。時々、それを押すと、音楽はすぐに止まるでしょう。それ以外の場合は、それが再生され続けるだろうと私はそれをもう一度押す必要があります。同様に、音楽を再開するには、ボタンを押すとすぐに音楽が始まることがありますが、音楽を元に戻すには2回以上押す必要があります。私はこれを引き起こして何がわからない。提案?
ArduinoはCではありません。 – Olaf