美文网首页
[4]Arduino制作二进制按键小琴

[4]Arduino制作二进制按键小琴

作者: 蝌蚪少儿创客 | 来源:发表于2017-12-07 03:59 被阅读0次

这次我们将结合之前的几个课程,利用Arduino做一个简单的综合项目:按键电子小琴。


需要的材料:

  • Arduino 编程软件
  • Arduino UNO卡
  • 面包板 和 一个Mini面包版
  • 10 x 不同颜色的连接线
  • 3 x LED灯
  • 3 x 220 - 1000欧的电阻
  • 1 x 蜂鸣器

模拟电路

电路原理

我们将利用三个按钮来实现对6个不同的音调的控制:do,re,mi,fa,sol,la。下面这个表格展现了不同按键的组合所发出的声音,1表示按键按下的状态,0表示按键松开的状态。

\ 按键3 按键2 按键1
do 1 0 0
re 0 1 0
mi 1 1 0
fa 0 0 1
sol 1 0 1
la 0 1 1

完整代码

#include "pitches.h"
 
// notes in the melody:
int melody[] = {
  0, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5};
int duration = 500;  // 500 miliseconds
int pin8 = 8;
int pin11 = 11;
int pin12 = 12;
int pin13 = 13;
 
void setup() {
  Serial.begin(9600);
  pinMode(pin8, OUTPUT);
  pinMode(pin11, INPUT);
  pinMode(pin12, INPUT);
  pinMode(pin13, INPUT);
}

int noteNum = 0;
void loop() {  
  int valPin13 = getDigitalValue(pin13);
  int valPin12 = getDigitalValue(pin12);
  int valPin11 = getDigitalValue(pin11);
  noteNum = getNoteNum(valPin13, valPin12, valPin11);
  Serial.println("音符号码 :");
  Serial.println(noteNum);
  if(noteNum != 0 && noteNum < 7) {
    int note = melody[noteNum];
    tone(pin8, note);
  }
  else {
    noTone(pin8);
  }
  // restart after 100 ms 
  delay(100);
}

int getDigitalValue(int pinNum) {
  return (digitalRead(pinNum) == HIGH) ? 1 : 0;
}
int getNoteNum(int valPin1, int valPin2, int valPin3){
  return valPin3*4 + valPin2*2 + valPin1;
}

实图展示

相关文章

  • [4]Arduino制作二进制按键小琴

    这次我们将结合之前的几个课程,利用Arduino做一个简单的综合项目:按键电子小琴。 需要的材料: Arduino...

  • arduino——简易电子琴(笔记)

    我们根据上一篇的例子制作一个简易电子琴。 材料准备 arduino板,按键(由于小道只有4个就用了4个),220欧...

  • arduino——按键灯(笔记)

    实际上一接线顿时就明白了,这根本就是两趟电路,一趟接的5V的电连接一个比较大的电阻,另一个数字信号发出接上一个小电...

  • arduino --004

    第四课 二进制arduino的实现 1. 二进制的介绍 * 二进制的由来发明二进制的德国数学家哲学家莱布尼茨(16...

  • 不用时钟芯片的 Arduino 时钟

    我做了一个Arduino时钟,功能就像普通的电子表。有两个按键。按键1可用来显示日期、秒,在显示日期三秒后,自动返...

  • 带按键显示的gif制作教程

    如何制作一个带按键提示的gif图呢? 需要两个工具,一个录制gif工具,一个显示按键工具。 显示按键工具 显示按键...

  • Arduino 按键控制LED(IO)

    实验一 按下点亮/松开熄灭 代码 演示 由于板子上电之后此时的IO口处于悬空状态如果没有上拉电阻digitalRe...

  • 命题-第十一章-填空

    如图所示为4×4的矩阵式按键,其中绿色表示按键被按下,黑色表示按键未被按下。它的键值是______。 【答案】5【...

  • [3] 通过按键对Arduino输入信号

    这一次,我们将学习怎样用按键对Arduino输入信号从而控制LED灯的亮灭。我们将设置两个按钮,按第一个按钮会点亮...

  • Jquery绑定按键事件

    1、全局判断按键 2、给某个元素 3、组合按键的应用 4、按键的分类按键可以分为“实键”和“虚键” 实键可以理解为...

网友评论

      本文标题:[4]Arduino制作二进制按键小琴

      本文链接:https://www.haomeiwen.com/subject/hfvrixtx.html