arduino ide esp32无源蜂鸣器弹小星星(带休止符)

之前学习esp32时发现很多人都在说无源蜂鸣器无法关闭,于是我想出了一个好方法,即没有关闭无源蜂鸣器,又让他一点声音都没有,众所周知,声音是由一个物品的震动发出,物品震动的频率就是声音的频率,所以我们让蜂鸣器发出0赫兹的声音,等于真正的让他不发出声音。无源蜂鸣器接gpio22

#define bp 22
#define chanel 0
typedef struct data {
  note_t note; //音符
  uint8_t level; //音阶 4 为我们平常时所听到的那个8度
  uint16_t interval; //持续时间
  int x; //音符播放后的空时间
} note;

note tones[]={
  {NOTE_C,4,500,0},
  {NOTE_C,4,500,0},
  {NOTE_G,4,500,0},
  {NOTE_G,4,500,0},
  {NOTE_A,4,500,0},
  {NOTE_A,4,500,0},
  {NOTE_G,4,725,250},
  {NOTE_F,4,500,0},
  {NOTE_F,4,500,0},
  {NOTE_E,4,500,0},
  {NOTE_E,4,500,0},
  {NOTE_D,4,500,0},
  {NOTE_D,4,500,0},
  {NOTE_C,4,725,250},
  {NOTE_G,4,500,0},
  {NOTE_G,4,500,0},
  {NOTE_F,4,500,0},
  {NOTE_F,4,500,0},
  {NOTE_E,4,500,0},
  {NOTE_E,4,500,0},
  {NOTE_D,4,725,250},
  {NOTE_G,4,500,0},
  {NOTE_G,4,500,0},
  {NOTE_F,4,500,0},
  {NOTE_F,4,500,0},
  {NOTE_E,4,500,0},
  {NOTE_E,4,500,0},
  {NOTE_D,4,725,250},
  {NOTE_C,4,500,0},
  {NOTE_C,4,500,0},
  {NOTE_G,4,500,0},
  {NOTE_G,4,500,0},
  {NOTE_A,4,500,0},
  {NOTE_A,4,500,0},
  {NOTE_G,4,725,250},
  {NOTE_F,4,500,0},
  {NOTE_F,4,500,0},
  {NOTE_E,4,500,0},
  {NOTE_E,4,500,0},
  {NOTE_D,4,500,0},
  {NOTE_D,4,500,0},
  {NOTE_C,4,725,250},
}; //曲子包含所有的音符
//NOTE_C do
//NOTE_Cs 升do
//NOTE_D re
//NOTE_Eb 降mi 
//NOTE_E mi
//NOTE_F fa
//NOTE_Fs 升fa
//NOTE_G sol
//NOTE_Gs 升sol
//NOTE_A la
//NOTE_Bb 降ti
//NOTE_B ti

byte tonesSize=sizeof(tones)/sizeof(note);

void xiuzhi(uint8_t channel,unsigned long long deley)
{
  ledcWriteTone(channel,0);
  delay(deley);
}

void setup()
{
  // put your setup code here, to run once:
  ledcSetup(chanel,20000,10);
  ledcAttachPin(bp,0);
}
void loop()
{
  // put your main code here, to run repeatedly:
  // ledcWriteTone(0,200);
  // delay(200);
  // ledcWriteTone(0,500);
  // delay(200);
  // ledcWriteNote(0,NOTE_C,4);
  // delay(500);
  for(int i=0;i<tonesSize;i++)
  {
    ledcWriteNote(chanel,tones[i].note,tones[i].level);
    delay(tones[i].interval);
    xiuzhi(chanel,tones[i].x);
  }
}

#define bp 22

#define chanel 0

typedef struct data {

  note_t note; //音符

  uint8_t level; //音阶 4 为我们平常时所听到的那个8度

  uint16_t interval; //持续时间

  int x; //音符播放后的空时间

} note;

note tones[]={

  {NOTE_C,4,500,0},

  {NOTE_C,4,500,0},

  {NOTE_G,4,500,0},

  {NOTE_G,4,500,0},

  {NOTE_A,4,500,0},

  {NOTE_A,4,500,0},

  {NOTE_G,4,725,250},

  {NOTE_F,4,500,0},

  {NOTE_F,4,500,0},

  {NOTE_E,4,500,0},

  {NOTE_E,4,500,0},

  {NOTE_D,4,500,0},

  {NOTE_D,4,500,0},

  {NOTE_C,4,725,250},

  {NOTE_G,4,500,0},

  {NOTE_G,4,500,0},

  {NOTE_F,4,500,0},

  {NOTE_F,4,500,0},

  {NOTE_E,4,500,0},

  {NOTE_E,4,500,0},

  {NOTE_D,4,725,250},

  {NOTE_G,4,500,0},

  {NOTE_G,4,500,0},

  {NOTE_F,4,500,0},

  {NOTE_F,4,500,0},

  {NOTE_E,4,500,0},

  {NOTE_E,4,500,0},

  {NOTE_D,4,725,250},

  {NOTE_C,4,500,0},

  {NOTE_C,4,500,0},

  {NOTE_G,4,500,0},

  {NOTE_G,4,500,0},

  {NOTE_A,4,500,0},

  {NOTE_A,4,500,0},

  {NOTE_G,4,725,250},

  {NOTE_F,4,500,0},

  {NOTE_F,4,500,0},

  {NOTE_E,4,500,0},

  {NOTE_E,4,500,0},

  {NOTE_D,4,500,0},

  {NOTE_D,4,500,0},

  {NOTE_C,4,725,250},

}; //曲子包含所有的音符

//NOTE_C do

//NOTE_Cs 升do

//NOTE_D re

//NOTE_Eb 降mi

//NOTE_E mi

//NOTE_F fa

//NOTE_Fs 升fa

//NOTE_G sol

//NOTE_Gs 升sol

//NOTE_A la

//NOTE_Bb 降ti

//NOTE_B ti

byte tonesSize=sizeof(tones)/sizeof(note);

void xiuzhi(uint8_t channel,unsigned long long deley)

{

  ledcWriteTone(channel,0);

  delay(deley);

}

void setup()

{

  // put your setup code here, to run once:

  ledcSetup(chanel,20000,10);

  ledcAttachPin(bp,0);

}

void loop()

{

  // put your main code here, to run repeatedly:

  // ledcWriteTone(0,200);

  // delay(200);

  // ledcWriteTone(0,500);

  // delay(200);

  // ledcWriteNote(0,NOTE_C,4);

  // delay(500);

  for(int i=0;i<tonesSize;i++)

  {

    ledcWriteNote(chanel,tones[i].note,tones[i].level);

    delay(tones[i].interval);

    xiuzhi(chanel,tones[i].x);

  }

}

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ESP32是一种功能强大的微控制器,具有丰富的硬件接口和灵活的软件开发环境。无蜂鸣器是一种常用的声音输出设备,通过振动产生声音。那么如何在ESP32中使用无蜂鸣器呢? 首先,将无蜂鸣器连接到ESP32的GPIO引脚上。在连接之前,需要确保使用适当的电阻来限制电流。 接下来,在ESP32的开发环境中,编写代码来控制蜂鸣器的开关。可以使用Arduino IDE或其他支持ESP32的开发工具。 首先,需要定义用于连接蜂鸣器的引脚。例如,将无蜂鸣器连接到ESP32的GPIO2引脚,可以这样定义引脚: const int buzzerPin = 2; 然后,在代码中通过设置引脚的输出状态来控制蜂鸣器的开关。例如,设置引脚的输出为高电平可以打开蜂鸣器,设置引脚的输出为低电平可以关闭蜂鸣器。 下面是一个简单的示例代码,用于控制无蜂鸣器的开关: void setup() { pinMode(buzzerPin, OUTPUT); // 将引脚设置为输出模式 } void loop() { digitalWrite(buzzerPin, HIGH); // 打开蜂鸣器 delay(1000); // 延时1秒 digitalWrite(buzzerPin, LOW); // 关闭蜂鸣器 delay(1000); // 延时1秒 } 通过这段代码,蜂鸣器将每隔1秒反复发出声音。如果需要控制蜂鸣器发出不同的声音,可以通过调整引脚输出的时间间隔和频率来实现。 总结起来,ESP32可以通过连接无蜂鸣器并编写相应的代码来控制蜂鸣器的开关。根据需要,可以实现不同的声音效果。以上是关于ESP32无蜂鸣器的简要介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值