Arduino 数据记录器





添加一些组件







您将需要一些基本组件。这些包括:
- Arduino 板
- 面包板
通过搜索它们并单击并拖动到中间区域来添加它们。
将试验板放在 Arduino 上。这样可以更轻松地在以后查看连接。
关于面包板的说明

面包板是快速原型制作的超级有用的设备。我们用它来连接组件。一些需要注意的事情。
- 这些点是垂直连接的,但中间的线将此连接与顶部和底部列分开。
- 列不是从左到右连接的,就像跨行连接一样。这意味着所有组件都应该跨列连接,而不是垂直连接。
- 如果您需要使用按钮或开关,请将它们连接在中间的中断处。我们将在后面的教程中介绍这一点。
添加两个传感器

我们使用的两个传感器是光敏传感器和温度传感器。
这些传感器评估光线和温度。我们使用 Arduino 读取该值并将其显示在 Arduino 上的串行监视器中。
搜索并添加两个传感器。确保它们位于试验板上的列上。在它们之间留出足够的空间,以便于查看它们。
光敏传感器






- 对于光敏传感器,从 Arduino 上的 5V 引脚添加一根电线,与试验板中部件的右腿位于同一列。将电线颜色更改为红色。
- 通过同一列中的引脚将左腿连接到 Arduino 上的 A0 (A-zero) 引脚。这是模拟引脚,我们将使用它来从传感器读取值。将此电线涂成黄色或红色或黑色以外的颜色。
- 在电路板上放置一个电阻器 (搜索并单击并拖动)。这样完成了电路并保护了传感器和引脚。
- 把它转过来,让它穿过柱子。
- 将一条腿连接到面包板上的右腿柱
- 将一根电线从电阻器的另一端接地
- 将电线颜色更改为黑色。
- 仔细检查所有连接。如果某些内容不在正确的位置,则无法正常工作。
启动代码





让我们看看这个组件的代码。
首先,查看此步骤中的第三个图像。它包含一些代码和两个函数:
在 C++ 中,所有函数都提供其返回类型,然后是名称,然后是可用于传入参数的两个圆括号,通常作为变量。在这种情况下,返回类型为 void 或 nothing。名称为 setup,函数不带任何参数。
设置功能在 Arduino 启动时运行一次(当您插入或连接电池时)。
loop 函数从 setup 函数完成的毫秒开始在恒定循环中运行。
您放入 loop 函数的所有内容都将在 Arduino 运行时运行。超出此范围的所有内容仅在调用时运行。就像我们在循环外定义并调用另一个函数一样。
任务
在 Tinkercad 中使用 按钮打开 Code 面板。将 Blocks 下拉列表更改为 Text。同意弹出的警告框。现在,删除此步骤中除第三张图像中的文本之外的所有内容。
变量
首先,我们需要分配一些变量,以便使我们的代码真正高效。
变量就像桶,只能容纳一个对象(C++ 就是我们所说的面向对象)。是的,我们有数组,但这些是特殊变量,我们稍后会讨论它们。当我们分配一个变量时,我们需要告诉它是什么类型,然后给它一个值。它看起来像这样:
所以,我们分配了一个变量并给它指定了 int 类型。 int 是整数或整数。
"但你没有用整数!“,我听到你说。这是真的。
Arduino 为我们做了一些特殊的事情,因此我们可以将 A0 用作整数,因为在另一个文件中它将 A0 定义为整数,因此我们可以使用 A0 常量来引用这个整数,而无需知道它是什么。如果我们只键入 0,我们将引用位置 0 的数字引脚,这是行不通的。
因此,对于我们的代码,我们将为我们附加的传感器编写一个变量。虽然我建议给它起个简单的名字,但这取决于你。
您的代码应如下所示:
现在,我们告诉 Arduino 如何处理该引脚上的传感器。我们将在 setup 中运行一个函数来设置引脚模式并告诉 Arduino 在哪里查找它。
pinMode 函数告诉 Arduino 引脚 (A0) 将用作 INPUT 引脚。注意 camelCaseUsed(注意每个第一个字母都是大写的,因为它有驼峰,因此......骆驼...!对于变量和函数名称。这是一个惯例,最好习惯。
最后,我们使用 analogRead 函数来获取一些数据。
你会看到 we 将读数存储在一个变量中。这很重要,因为我们需要打印它。让我们使用 Serial 库(库是我们可以添加到代码中的代码,只需通过其定义调用它即可使我们的编写速度更快)将其打印到串行监视器。
一些新东西!首先,您将看到以下内容:
我们使用注释来告诉其他人我们的代码在做什么。您应该经常使用这些。编译器不会读取这些并将其转换为代码。
现在,我们还添加了 Serial 库,其中包含
这是一个采用参数的函数示例。您调用了库 Serial,然后运行了一个函数(我们知道它是一个函数,因为有圆括号)并传入一个整数作为参数,将 Serial 函数设置为以 9600 波特运行。不要担心为什么 - 现在只知道它有效。
我们接下来做的是打印到串行监视器。我们使用了两个函数:
重要的是要看到每个都有不同的目的。确保字符串使用双引号,并在冒号后保留空格。这有助于用户的可读性。
最后,我们使用了 delay 函数来减慢我们的循环速度,使其每 3 秒只读取一次。这是以数千秒为单位编写的。将其更改为每 5 秒只读一次。
伟大!我们开始吧!
模拟





始终通过运行模拟来检查一切是否正常。对于此电路,您还需要打开模拟器以检查它是否正常工作并检查您的值。
开始模拟并检查串行监视器。通过单击光传感器并使用滑块更改值来更改光传感器的值。您也应该在串行监视器中看到值更改。如果没有,或者当您按下 Start Simulation 按钮时出现错误,请仔细返回并检查您的所有代码。
- 将焦点放在将显示给您的红色调试窗口中指示的行上。
- 如果您的代码正确,但模拟仍然无法正常工作,请检查您的接线。
- 重新加载页面 - 您可能遇到了不相关的系统/服务器错误。
- 对着电脑握拳,然后再次检查。所有程序员都这样做。都。这。时间。
连接温度传感器

我假设你现在走在正确的轨道上。如图所示,将温度传感器连接起来。请注意 5V 和 GND 线与灯线放置在相同的空间中。这没关系。它就像一个并联电路,不会在模拟器中引起问题。在实际电路中,您应该使用分线板或扩展板来提供更好的电源管理和连接。
现在,让我们更新代码。
温度传感器代码
这有点棘手,但这只是因为我们必须做一些数学运算来转换读数。还不错。
我对代码进行了一些更新。让我们单独介绍一下它们。
首先,我添加了一行
就像 lightSensor 一样,我需要将值存储在变量中,以便以后更容易。如果我必须更改此传感器的位置(例如重新布线),那么我只需更改一行代码,而无需搜索整个代码库以更改 A0 或 A1 等。
然后,我们添加了一行来将读数和温度存储在浮点数中。请注意一行中的两个变量。
这真的很有帮助,因为它减少了我必须编写的行数并加快了代码速度。但是,查找错误可能更难。
现在,我们将进行读取并存储它,然后将其转换为我们的输出值。
这两条线看起来很困难,但在第一行中,我们将读数乘以 0.004......因为它将 1023(模拟读数返回此值)转换为 5 个读数。
第二行将该读数乘以 100 以移动小数点。这给了我们温度。整洁!
测试和检查





所有事情都按计划进行,您应该有一个有效的电路。通过运行模拟并使用串行监视器进行测试。如果你有错误,请检查。











