SIK Experiment Guide for the Arduino 101/Genuino 101 Board (Chinese)

This Tutorial is Retired!

This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.

Pages
Contributors: D___Run___
Favorited Favorite 1

实验 15:使用声音探测器板

简介

您在前面的实验中已使用了一些不同的模拟输入。在本实验中,您会将声音作为输入,并使用 SparkFun 声音探测器板。您将使用该板上的“封包”输出来测量声音在房间中的响度,然后使用一些称为 switch case 语句的精致代码来相应地更改颜色和 RGB。

我们将此称为娱乐仪表!如果局面失控,您会看到红色!

所需部件

您需要以下部件:

  • 1x 实验电路板
  • 1x Arduino 101 或 Genuino 101 开发板
  • 3x 100Ω 电阻
  • 1x 共阴极 RGB LED
  • 1x SparkFun 声音探测器板
  • 9x 跳线

没有 SIK?

如果您要执行本实验,但又没有 SIK,那么我们建议您使用这些部件:

SparkFun Sound Detector

SparkFun Sound Detector

SEN-12642
$11.95
20
Breadboard - Self-Adhesive (White)

Breadboard - Self-Adhesive (White)

PRT-12002
$5.50
48
Jumper Wires - Connected 6" (M/M, 20 pack)

Jumper Wires - Connected 6" (M/M, 20 pack)

PRT-12795
$2.10
2
LED - RGB Clear Common Cathode

LED - RGB Clear Common Cathode

COM-00105
$2.25
3

Resistor 100 Ohm 1/4th Watt PTH - 20 pack

COM-13761
Retired

您还需要一个 Arduino 101 Genuino 101 开发板。

Arduino 101

DEV-13787
9 Retired

Genuino 101

DEV-13984
Retired

推荐阅读

继续进行本实验之前,我们建议您熟悉以下教程中的概念:

声音探测器板指南

替换文本

声音探测器板是精致的小型传感器!它是可使您省下大量接线的麦克风电路。将该板通过 VCC 针脚连接到电源 (3.3V),并通过 GND 针脚接地之后,您可通过三个选项将不同信号用作 101 板的输入。

第一个信号 GATE 是数字信号,会在环境声音越过特定阈值时打开。GATE 还在声音探测器上接线到一个 LED。对它正确加电并发出声音之后,您会看到红色 LED 在声音“响亮”时亮起,在声音“安静”时熄灭。

第二个信号 ENVELOPE 将幅度(声音的响度)按比例调整为 0-1023 的 10 位值。在安静的起居室中,此级别大约登记为 10。

最后一个信号是原始 AUDIO 信号。在安静的房间中,信号级别大约为 512,并将基于环境声音的频率生成波形曲线。如果您希望进行一些超出此指南范围的音频处理,则需要使用原始 AUDIO 信号。如需了解有关声音探测器板的细节的更多信息,请查看我们的接线指南

硬件接线

是否准备好开始对每个部件进行接线?请查看下面的接线图以了解如何连接每个部件。

请特别注意组件用于指示如何在实验电路板上放置它的标记。极化组件只能按一个方向连接到电路。

实验的接线图

替换文本

难以看清电路?单击接线图可放大查看。

打开草图

在计算机上打开 Arduino IDE 软件。采用 Arduino 语言进行编码可控制电路。通过访问您先前下载并置于“示例”文件夹中的“101 SIK 指南代码”,来打开用于电路 15 的代码。

要打开该代码,请转到:文件 > 示例 > 101 SIK 指南代码 > Circuit_15

还可以将以下代码复制并粘贴到 Arduino IDE 中。点击“上传”,然后查看发生的情况!

language:cpp
/*
SparkFun Inventor's Kit
Example sketch 15

SOUND DETECTOR

Use the sound detector to measure the volume of the surrounding area and change the
color of an RGB based on that volume.

 //pin variables
const int redPin = 5;
const int greenPin = 6;
const int bluePin = 9;
const int soundPin = 0;

//variables for storing raw sound and scaled value
int sound;
int scale;

void setup()
{
 //start the serial port a@ 9600bps
 Serial.begin(9600);
 //set RGB pins to OUTPUT
 pinMode(redPin, OUTPUT);
 pinMode(greenPin, OUTPUT);
 pinMode(bluePin, OUTPUT);
}

void loop()
{
 //read and store the audio from Envelope pin
 sound = analogRead(soundPin);
 //map sound which in a quiet room a clap is 300
 //from 0 to 3 to be used with switch case
 scale = map(sound, 0, 300, 0, 3);

 //print values over the serial port for debugging
 Serial.print(sound);
 Serial.print("   ");
 Serial.println(scale);

 //switch case on scaled value
switch (scale)
{
//if 0 RGB = Blue
case 0:
  digitalWrite(redPin, LOW);
  digitalWrite(greenPin, LOW);
  digitalWrite(bluePin, HIGH);
  break;
//if 1 RGB = Green  
case 1:
  digitalWrite(redPin, LOW);
  digitalWrite(greenPin, HIGH);
  digitalWrite(bluePin, LOW);
  break;
//if 2 RGB = Yellow  
case 2:
  digitalWrite(redPin, HIGH);
  digitalWrite(greenPin, HIGH);
  digitalWrite(bluePin, LOW);
  break;
//if 3 RGB = Red
case 3:
  digitalWrite(redPin, HIGH);
  digitalWrite(greenPin, LOW);
  digitalWrite(bluePin, LOW);
  break;
//default off
default:
  digitalWrite(redPin, LOW);
  digitalWrite(greenPin, LOW);
  digitalWrite(bluePin, LOW);
  break;
 }
}

要注意的代码

scale = map(sound,0,300,0,3

这可能类似于值的奇怪映射。这是针对使用 switch case 语句的设置,我们需要将大型值集合映射到三到四个选择。映射函数采用两种方式运行,但是它在构建与 switch case 语句配对的值的范围时是最方便的。

switch(value)
{
 case(0):
 //do something
 break;
 case(1):
 //do something else
 break;
 default:
 //do another thing
 break;
}

当您在尝试基于一系列值执行操作,并认为自己需要很长一串 if else() 语句时,switch case 语句会非常方便。Switch() 会查看一个变量,然后在情况列表中查找其匹配项。如果不存在匹配项,则它使用默认设置。每种情况还具有自己的中断命令,这使 Arduino 可以从 switch case 语句中退出并继续执行。

应看到的情况

代码上传并且草图启动之后,RGB 应变为蓝色。发出大量声音,RGB 应从蓝色变为绿色,然后变为黄色... 如果声音确实很大,它可能会变为红色!不要担心;我们并不会报警!

替换文本

故障诊断

没有变为黄色或红色

打开串行监视器以进行一些调试。检查安静值,然后发出一连串声音。调整映射函数以确保范围相同。

声音探测器传出奇怪的值

确保将声音探测器板接线到 3.3V,并且您在读取“封包”针脚。

仍未运行

Arduino 101 开发板有时会与计算机断开连接。尝试拔下它,然后重新插入 USB 端口。