Arduino Leonardo PWM 测试

用户可以从串口输入一个在1-255的数字,然后在D9上输出对应的占空比,PWM 频率是 62.5KHz。

需要注意:如果需要输出全低或者全高需要修改代码。

// Leonardo 测试,在 D9 上输出从串口给定的PWM 值
void setup() {
  Serial.begin(115200);

  /* Set speakers as outputs */
  DDRB   |= ((1 << 6) | (1 << 5));

  /* PWM speaker timer initialization */
  TCCR1A  = ((1 << WGM10) | (1 << COM1A1) | (1 << COM1A0)
             | (1 << COM1B1) | (1 << COM1B0)); // Set on match, clear on TOP
  TCCR1B  = ((1 << WGM12) | (1 << CS10));  // Fast 8-Bit PWM, F_CPU speed

}

void loop() {
  if (Serial.available() > 0) {
    //读取一个整数
    int Value = Serial.parseInt();
    Serial.print("Get:");
    Serial.println(Value);
    if (Value > 255)||(Value==0) {
      Serial.println("Please input a 0<number<256");
    } else {
      OCR1A = Value;
    }
  }
}