前提・実現したいこと
人感センサーで人を検知したときにLEDと圧電ブザーを同時に知らせるようにしたいが、
このプログラムだとLEDが0.5秒点滅したらブザーが鳴るといった順番になってしまうのですが、
上から順番ではなくLEDとブザー同時になるようにするにはどうしたらいいのでしょうか?
該当のソースコード
#define LED_OUT 14 #define PIR_IN 13 #define BUZ_OUT 25 #define BEAT 200 #define LEDC_CHANNEL 0 // チャンネル #define LEDC_TIMER_BIT 13 #define LEDC_BASE_FREQ 5000 void setup() { pinMode(LED_OUT, OUTPUT); pinMode(PIR_IN, INPUT); //音を鳴らす準備 ledcSetup(LEDC_CHANNEL, LEDC_BASE_FREQ, LEDC_TIMER_BIT); ledcAttachPin(BUZ_OUT, LEDC_CHANNEL); } void loop() { digitalWrite(LED_OUT, HIGH); if (digitalRead(PIR_IN) == HIGH) { delay(100); } else { delay(1000); } digitalWrite(LED_OUT, LOW); if (digitalRead(PIR_IN) == HIGH) { delay(100); } else { delay(1000); } if (digitalRead(PIR_IN) == HIGH) { ledcWriteTone(LEDC_CHANNEL, 3136); // ソ delay(BEAT); ledcWriteTone(LEDC_CHANNEL, 2960); // ♯ファ delay(BEAT); ledcWriteTone(LEDC_CHANNEL, 2489); // ♯レ delay(BEAT); ledcWriteTone(LEDC_CHANNEL, 1760); // ラ delay(BEAT); ledcWriteTone(LEDC_CHANNEL, 1661); // ♯ソ delay(BEAT); ledcWriteTone(LEDC_CHANNEL, 2637); // ミ delay(BEAT); ledcWriteTone(LEDC_CHANNEL, 3322); // ♯ソ delay(BEAT); ledcWriteTone(LEDC_CHANNEL, 4186); // ド delay(BEAT); ledcWriteTone(LEDC_CHANNEL, 0); // 音を止める } }
補足情報(FW/ツールのバージョンなど)
ESP-WROOM-32D
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/28 00:03
2020/09/28 15:51
2020/10/07 02:47
2020/10/07 04:16
2020/10/07 04:50
2020/10/07 05:55