[英]How to make function for save and replay tones on Arduino buzzer?
我对我在 Arduino 中的项目有疑问,我有这个频率数组作为注释:
int note[] = {261, 293, 329, 349, 392, 440, 494, 523};
如果按下其中一个按钮,则此 function 用于播放音符:
void play(float U_ADC0){
if(U_ADC0 >= 4.80) { // ADC conversion (Voltage value) PB1
BUZZ (0.1 , note[0]) ; _delay_ms (100) ; // buzz
lcd_clear();
lcd_write("C4"); // lcd display
}
if(U_ADC0 < 4.80 && U_ADC0 >= 4.70){ //PB2
BUZZ (0.1 , note[1]) ; _delay_ms (100) ;
lcd_clear();
lcd_write("D4");
}
if(U_ADC0 < 4.72 && U_ADC0 >= 4.65){ //PB3
BUZZ (0.1 , note[2]) ; _delay_ms (100) ;
lcd_clear();
lcd_write("E4");
}
if(U_ADC0 < 4.60 && U_ADC0 >= 4.50){ //PB4
BUZZ (0.1 , note[3]) ; _delay_ms (100) ;
lcd_clear();
lcd_write("F4");
}
if(U_ADC0 < 4.20 && U_ADC0 >= 4.05){ //PB5
BUZZ (0.1 , note[4]) ; _delay_ms (100) ;
lcd_clear();
lcd_write("G4");
}
if(U_ADC0 < 3.80 && U_ADC0 >= 3.70){ //PB6
BUZZ (0.1 , note[5]) ; _delay_ms (100) ;
lcd_clear();
lcd_write("A4");
}
if(U_ADC0 < 3.55 && U_ADC0 >= 3.30){ //PB7
BUZZ (0.1 , note[6]) ; _delay_ms (100) ;
lcd_clear();
lcd_write("B4");
}
if(U_ADC0 < 2.55 && U_ADC0 >= 2.45){ //PB8
BUZZ (0.1 , note[7]) ; _delay_ms (100) ;
lcd_clear();
lcd_write("C5");
}
}
那么,我怎样才能通过按下按钮按顺序制作新的频率场,以便我可以保存并在蜂鸣器上重播我的旋律? 我使用了我所有的想法,但没有奏效,我也没有新的想法。 所以如果有人有想法,你能帮帮我吗?
我会使用一个按钮(我们称之为录制按钮)在播放和录制之间切换,并且只播放。 这样,每当你按下按钮,得到那些蜂鸣器频率不会保存,但当你喜欢旋律并想保存时,你可以点击录制按钮开始保存。 为了实现这一点,请遵循以下算法:
在您的第一个 function 之后,创建一个 function 用于录制按钮。 在这个 function 中,您需要调用您已经编写的第一个 function(无效播放)并添加一个代码片段,用于将按下按钮的值分配到您将在代码开头创建的int 数组中(我们称之为int记录[] )。
还剩下一步,即检查(如果按下录制按钮)开关按钮,因此它将在录制和播放和播放之间切换,并调用相应的 function。 最后,您可以再添加一个按钮来播放int Recorded[]中的旋律。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.