【Follow me第二季第4期】通过响指开/关板载 LED
[复制链接]
功能介绍
利用麦克风传感器,实现打响指来控制板载 LED 绿灯的开或关。
此任务参考了 Arduino 官方教程示例 Reading Microphone Data on Nano RP2040 Connect。
流程图
演示视频
示例代码
- #include <WiFiNINA.h>
- #include <PDM.h>
-
-
- static const char channels = 1;
-
-
- static const int frequency = 20000;
-
-
- short sampleBuffer[512];
-
-
- volatile int samplesRead;
-
-
- bool LED_SWITCH = false;
-
-
- const int THRESHOLD = 10000;
-
- void setup() {
-
- Serial.begin(9600);
-
-
- pinMode(LEDG, OUTPUT);
-
-
- while (!Serial);
-
-
- PDM.onReceive(onPDMdata);
-
-
- if (!PDM.begin(channels, frequency)) {
- Serial.println("PDM 初始化失败!");
- while (1);
- }
- }
-
- void loop() {
-
- if (samplesRead) {
-
- for (int i = 0; i < samplesRead; i++) {
-
- Serial.println(sampleBuffer[i]);
-
-
- if (abs(sampleBuffer[i]) > THRESHOLD) {
- LED_SWITCH = !LED_SWITCH;
- if (LED_SWITCH) {
- digitalWrite(LEDG, HIGH);
- Serial.println("绿灯已开启!");
- } else {
- digitalWrite(LEDG, LOW);
- Serial.println("绿灯已关闭!");
- }
- delay(1000);
- }
- }
-
-
- samplesRead = 0;
- }
- }
-
-
- void onPDMdata() {
-
- int bytesAvailable = PDM.available();
-
-
- PDM.read(sampleBuffer, bytesAvailable);
-
-
- samplesRead = bytesAvailable / 2;
- }
-
|