#include <Arduino.h> volatile float speed; volatile long updown; float tonelist[]={1046.5,1174.7,1318.5,1396.9,1568,1760,1975.5}; int longmusiclist[]={1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,5,6,5,4,3,1,2,5,1,2,5,1}; int longhighlist[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,-1,0}; int updownlist[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; float rhythmlist[]={1,1,1,1,1,1,1,1,1,1,2,1,1,2,0.5,0.5,0.5,0.5,1,1,0.5,0.5,0.5,0.5,1,1,1,1,2,1,1,2}; void setup(){ speed = 120.0; updown = 0; pinMode(9, OUTPUT); analogWrite(9, 440); } void loop(){ for (int i = 1; i <=32; i = i + (1)){ tone(9, (tonelist[(int)(longmusiclist[(int)(i - 1)] - 1)] * pow(2, longhighlist[(int)(i - 1)])) * pow(2, (updownlist[(int)(i - 1)] + updown) / 12.0)); delay(((1000 * (60 /speed)) * rhythmlist[(int)(i - 1)])); noTone(9); digitalWrite(9,LOW); delay(10); } }根据这个代码给我一个程序流程图
时间: 2023-08-26 11:05:25 浏览: 122
库:#include <ESP32Tone.h> tone库 ESP32 for Arduino IDE
抱歉,我无法绘制程序流程图。但是我可以为您解释代码的执行流程:
1. 定义变量speed和updown为浮点型和长整型,并初始化为120.0和0。
2. 声明一个名为tonelist的浮点型数组,其中存储了7个音调的频率。
3. 声明一个名为longmusiclist的整型数组,其中存储了32个音符的音高。
4. 声明一个名为longhighlist的整型数组,其中存储了32个音符的高低音。
5. 声明一个名为updownlist的整型数组,其中存储了32个音符的升降调。
6. 声明一个名为rhythmlist的浮点型数组,其中存储了32个音符的节奏。
7. 在setup()函数中,设置数字引脚9为输出模式,并将其输出电压设置为440Hz的正弦波信号,即A4音符。
8. 在loop()函数中,使用for循环遍历32个音符。
9. 在每个音符的迭代中,使用tone()函数生成下一个音符的正弦波信号,并将其输出到数字引脚9。该音符的频率由tonelist数组、longmusiclist数组、longhighlist数组和updownlist数组中的值计算得出。
10. 使用delay()函数等待该音符的节奏时间。
11. 使用noTone()函数停止数字引脚9的正弦波信号输出。
12. 将数字引脚9的输出电压设置为低电平。
13. 使用delay()函数等待10毫秒,以防止音符之间的干扰。
14. 循环回到下一个音符,直到所有32个音符都被演奏完毕。
阅读全文