【BPI:bit入门系列】蜂鸣器不同频率的发音状况

这其实就是一个检测蜂鸣器,在不同的频率下发出声音的检测代码,十分简单

  • 代码如下:

      #include <Arduino.h>
      #include <NeoPixelBus.h>
    
      #define LEDC_CHANNEL_0 0
      #define LEDC_TIMER_13_BIT 13
      #define Buzzer 25
      #define brightness 128
      int BuzzerTestFreq = 0;
      int LEDC_BASE_FREQ = 200;
    
    
      void ledcAnalogWrite(uint8_t channel, uint32_t value)
      {
          // calculate duty, 8191 from 2 ^ 13 - 1 (2 ^ LEDC_TIMER_13_BIT - 1)
          //value_MAX = 255
          uint32_t duty = (8191 / 255) * value;
          // write duty to LEDC
          ledcWrite(channel, duty);
      }
    
      void setup()
      { 
          Serial.begin(115200);
      }
    
      void loop()
      {
    
          ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
          ledcAttachPin(Buzzer, LEDC_CHANNEL_0);
          LEDC_BASE_FREQ = LEDC_BASE_FREQ + 10;
          // set the brightness on LEDC channel 0
          ledcAnalogWrite(LEDC_CHANNEL_0, brightness);
          delay(1000);
          Serial.print("Freq:");
          Serial.print(LEDC_BASE_FREQ);
          Serial.print("           Duty:");
          Serial.print(brightness/2.55);
          Serial.println();
          ledcAnalogWrite(LEDC_CHANNEL_0, 0);
      }
    

使用串口工具,连接bit板,串口配置为115200-8-N-1,就会接收到bit板返回的数据,主要包括当前频率(Freq)还有当前占空比(Duty)代码里面是占空比不变,频率递加,并且没有设置上限。github地址