arduino小课堂(11)矩阵电子琴与蜂鸣器和数组与海大机械电子设计课作业讲解2
主要内容:
1、矩阵电子琴制作
2、蜂鸣器使用
3、tone函数使用
4、数组基本使用
一、矩阵电子琴
矩阵电子琴发出低音la到高音xi的矩阵电子琴
电路图:
程序代码:
int num;int yindiao[17] = {0, 220, 247, 262, 294, 330, 349, 392, 440, 494, 523, 587, 659, 698, 784, 880, 988};void setup() { pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); Serial.begin(9600);}
void loop() { num = 0;for (int i = 9; i >= 6; i--) { digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); digitalWrite(i, LOW);if (i == 9) {if (!digitalRead(2)) { num = 4; }else if (!digitalRead(3)) { num = 3; }else if (!digitalRead(4)) { num = 2; }else if (!digitalRead(5)) { num = 1; } }else if (i == 8) {if (!digitalRead(2)) { num = 8; }else if (!digitalRead(3)) { num = 7; }else if (!digitalRead(4)) { num = 6; }else if (!digitalRead(5)) { num = 5; } }else if (i == 7) {if (!digitalRead(2)) { num = 12; }else if (!digitalRead(3)) { num = 11; }else if (!digitalRead(4)) { num = 10; }else if (!digitalRead(5)) { num = 9; } }else if (i == 6) {if (!digitalRead(2)) { num = 16; }else if (!digitalRead(3)) { num = 15; }else if (!digitalRead(4)) { num = 14; }else if (!digitalRead(5)) { num = 13; } } }if (num == 0) { noTone(10); }else { tone(10, yindiao[num]); }
Serial.println(num);}
二、蜂鸣器
蜂鸣器是一种常见的发生装置,按照工作原理分为电磁和压电两种,不过一般我们常见的是按照驱动原理区分的两种:有源和无源。
有源蜂鸣器是指有信号源,我们都知道声音的产生是通过物体的震动产生,有源蜂鸣器有信号源,我们通电即可发出特定频率的声音。
无源蜂鸣器是指没有信号源,所以我们通电并不能发出声音,需要给它一个脉冲信号(一般是方波)让它震动起来。发出不同频率的声音。
当然无源蜂鸣器只能改变声音的高低(音调),大小(响度)可以用电位器控制电流大小,音色的话其实可以通过一些芯片改变波形,比如三角波等。
三、tone函数
用于产生占空比为50%的方波,使用时第一个参数为引脚,第二个为频率Hz。结束方波可用noTone函数进行结束,参数为结束引脚。
对于Arduino UNO来说最小Hz是31,最大为65535。
四、数组
所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。
数组元素从0开始
数组使用格式为:
数据类型 数组名[长度]={元素0.元素1,元素2};
读取第一个数组:
数组名[1]
数据写入数组第三个元素:
数组名[3]=数据;
感觉有用的可以点一下再看和点击屏幕最上方创客薛源关注我的公众号哦~
有问题或者有意见尽请回复,有可能您的问题将会是下一节的内容
往期内容
Arduino小课堂(1)什么是Arduino
Arduino小课堂(2)数字输出与LED
Arduino小课堂(3)数字输入与按钮
Arduino小课堂(4)模拟输入与光控灯
Arduino小课堂(5)模拟输出与呼吸灯
Arduino小课堂(6)模拟温度传感器使用
Arduino小课堂(7)数码管使用与自定义函数
Arduino小课堂(8)气体传感器与逻辑运算符
Arduino小课堂(9)超声波与串口通信基础
arduino小课堂(10)矩阵按钮与海大机械电子设计课作业讲解1
领取专属 10元无门槛券
私享最新 技术干货