저는 초보자 인 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);
}
문제입니다. 때로는 그것을 누르면 음악이 즉시 중단됩니다. 다른 시간에, 그것은 계속 연주 할 것이고, 나는 그것을 한두번 더 눌러야 할 것입니다. 마찬가지로 음악을 다시 시작하려면 버튼을 누르 자마자 시작되지만, 음악을 다시 저장하려면 두 번 이상 눌러야합니다. 나는이 원인을 모릅니다. 제안?
Arduino가 C가 아닙니다. – Olaf