Arduino入门:新手指南

Arduino是一个开放源代码的电子原型开发平台,它是世界上最受欢迎的平台之一-可能是Raspberry Pi除外。已经售出了超过300万台(以第三方克隆设备的形式售出的更多产品):为何如此好,一个可以做什么?

什么是Arduino?

Arduino基于易于使用,灵活,硬件和软件的基础。它是为艺术家,设计师,工程师,业余爱好者以及对可编程电子产品稍有兴趣的任何人而设计的。

Arduino通过读取各种按钮,组件和传感器的数据来感知环境。它们可以通过控制LED,电机,伺服,继电器等来影响环境。

Arduino项目可以是独立的,也可以与计算机上运行的软件进行通信(处理是最受欢迎的软件)。他们可以与其他Arduino,Raspberry Pi,NodeMCU进行交谈,以全面比较这些微控制器之间的差异。

您可能会问,为什么选择Arduino? Arduino确实简化了构建可编程电子项目的过程,使其成为初学者的绝佳平台。您无需任何电子经验即可轻松开始工作。有成千上万的教程可用,而且这些教程的难度很大,因此一旦掌握了基础知识,您肯定会遇到挑战。

除了Arduino的简单性之外,它还便宜,跨平台且开放资源。 Arduino Uno(最受欢迎的型号)基于Atmel的ATMEGA 16U2微控制器。产生了许多不同的模型,它们的大小,功率和规格各不相同,因此请查看我们的购买指南以了解所有差异。

电路板的计划是根据知识共享许可发布的,因此经验丰富的爱好者和其他制造商可以自由制作自己的Arduino版本,有可能对其进行扩展和改进(或者直接复制它,从而导致我们今天发现的低成本Arduino板激增)。

Arduino可以做很多事情。它们是大多数3D打印机的大脑选择。它们的低成本和易用性意味着成千上万的制造商,设计师,黑客和创作者都做出了惊人的项目。以下是我们在PCPC.me上所做的一些Arduino项目:

  • 自定义快捷键
  • Electronic D20 Die
  • Laser Turret
  • Midi控制器
  • 带OLED显示屏的复古游戏
  • 交通灯控制器
  • Arduino内部是什么?

    尽管有提供了许多不同类型的Arduino开发板,本手册重点介绍 Arduino Uno 模型。这是周围最受欢迎的Arduino开发板。那么,是什么使这件事打勾呢?规格如下:

  • 处理器: 16 Mhz ATmega16U2
  • 闪存: 32KB
  • < strong> Ram: 2KB
  • 工作电压: 5V
  • 输入电压: 7-12V
  • 模拟输入数量: 6
  • 数字I / O数量: 14(其中6个为脉冲宽度调制- PWM
  • 与台式机相比,这些规范似乎有些混乱,但请记住,Arduino是嵌入式设备,与台式机相比,处理的信息要少得多。

    Arduino的另一个出色功能是能够使用所谓的“屏蔽"或附加板。尽管本手册中没有介绍屏蔽,但是它们是扩展Arduino特性和功能的一种非常简洁的方法。

    本指南的需要

    在您下面将找到本初学者指南所需的组件的购物清单。所有这些组件的总价应低于$ 50。此清单应足以使您对基本电子学有很好的理解,并具有足够的组件来使用此版本或任何其他Arduino指南来构建一些非常酷的项目。如果您不想选择每个组件,则可以考虑购买入门工具包。

  • 1 x Arduino Uno
  • 1 x USB AB电缆(与您的打印机需要)
  • 1 x面包板
  • 2 x LEDs
  • 1 x光电电阻
  • 1 x触觉开关
  • 1 x压电扬声器
  • 1 x 220欧姆电阻
  • 1 x 10k欧姆电阻
  • 1 x 1k欧姆电阻
  • 1 x跨接线套件
  • 如果无法获得特定的电阻值,则通常尽可能地接近即可。

    电气组件概述

    让我们来看看这些组件到底是什么,它们的功能以及它们的外观。

    面包板

    它们用于为电子电路制作原型,它们提供了一个将组件连接在一起的临时手段。面包板是带有孔的塑料块,可将电线插入其中。孔排成行,每组五个。当您想重新布置电路时,将电线或零件从孔中拉出并移动。许多面包板在板的长度上沿侧面分布有两组或四组孔,并且全部连接在一起,这些孔通常用于配电,并可能用红线和蓝线标记。

    面包板非常适合快速生产电路。对于大型电路,它们可能会变得非常凌乱,而便宜的模型可能会非常不可靠,因此值得花更多钱在一个好的电路上。

    LED

    LED代表发光二极管。它们是非常便宜的光源,并且可以非常明亮-尤其是组合在一起时。它们可以以多种颜色购买,不会变热,并且使用寿命很长。电视,汽车仪表盘或飞利浦Hue灯泡中可能有LED。

    您的Arduino微控制器在插针13上也有内置LED,通常用于指示动作或事件,或者

    光敏电阻

    光敏电阻( p hotocell Light Dependent Resistor (光敏电阻器)可让您的Arduino测量光的变化。例如,您可以使用它在白天时打开计算机。

    触觉开关

    基本上,触觉开关是一个按钮。按下它将完成电路,并且(通常)从0V变为+ 5V。 Arduino可以检测到此更改,并做出相应的响应。这些通常是瞬间-意味着只有在您按住它们时才“按下"它们。一旦放开,它们就会恢复为默认状态(“未按下"或“关闭")。

    压电扬声器是一个很小的小扬声器,可以从电信号中产生声音。它们通常很刺耳,声音很小,听起来并不像真正的扬声器。也就是说,它们非常便宜,并且易于编程。我们的Buzz Wire游戏使用一种方式播放Monty Python“ Flying Circus"主题曲。

    电阻器

    电阻器会限制电流。它们是非常便宜的组件,是业余和专业电子电路的必备组件。几乎总是需要它们来保护组件免于过载。如果Arduino + 5V直接连接到地面,它们也需要防止短路。简而言之:非常方便且绝对必要。

    跳线

    跳线用于在面包板上的组件之间建立临时连接。

    设置Arduino

    在开始任何项目之前,您需要使Arduino与计算机对话。这使您可以编写和编译Arduino代码以执行代码,并为Arduino与计算机一起工作提供一种方法。

    转到Arduino网站并下载Arduino软件版本适用于您的Windows版本。下载完成后,请按照说明安装Arduino 集成开发环境(IDE)。

    该安装包含驱动程序,因此从理论上讲,您应该直接进行安装。如果由于某种原因失败,请尝试以下步骤来手动安装驱动程序:

  • 将其插入板中,然后等待Windows开始其驱动程序安装过程。片刻之后,尽管已尽了最大努力,该过程仍将失败。
  • 单击开始菜单>控制面板
  • 端口(COM和LPT)下,您应该会看到一个名为的开放端口。 > Arduino UNO(COMxx)
  • 右键单击 Arduino UNO(COMxx)>更新驱动程序软件
  • 选择浏览我的计算机以获取驱动程序软件
  • 导航并选择位于的Uno驱动程序文件,名为 ArduinoUNO.inf 。 > Arduino软件下载的> Drivers 文件夹。
  • Windows将在此处完成驱动程序的安装。

    从Arduino网站下载Mac版的Arduino软件。提取 .zip 文件的内容并运行该应用程序。您可以将其复制到应用程序文件夹中,但可以从桌面下载文件夹中正常运行。您无需为Arduino UNO安装任何其他驱动程序。

    安装 gcc-avr avr-libc

    sudo apt-get install gcc-avr avr-libc

    If you don’t have openjdk-6-jre already, install and configure that too:

    sudo apt-get install openjdk-6-jresudo update-alternatives --config java

    如果安装了多个安装,请选择正确的 JRE

    转到Arduino网站并下载适用于Linux的Arduino软件。您可以 untar 并使用以下命令运行它:

    tar xzvf arduino-xxx-linux64.tgz
    cd arduino- 1.0.1
    ./arduino

    无论您运行的是哪种操作系统,以上说明均假定您拥有品牌的原装Arduino Uno板。如果购买了克隆,几乎可以肯定需要第三方驱动程序,然后才能通过USB识别开发板。

    运行Arduino软件

    现在,已经安装了该软件,并且您的Arduino已经设置好,让我们验证一切是否正常。最简单的方法是使用“ Blink"示例应用程序。

    通过双击Arduino应用程序(在Linux上为 ./ arduino )打开Arduino软件。确保主板连接到您的计算机,然后打开 LED闪烁示例草图:文件>示例> 1。 >闪烁。您应该会看到该应用程序的代码已打开:

    为了将此代码上传到Arduino,请在工具>面板中选择条目对应于您的模型的菜单-在这种情况下为 Arduino Uno

    工具> Serial中选择板的串行设备端口菜单。在Windows上,这可能是 COM3 或更高版本。在Mac或Linux上,应该是其中包含 /dev/tty.usbmodem 的东西。

    最后,单击左上方的上传按钮您的环境。等待几秒钟,然后您应该会在Arduino上看到 RX TX LED闪烁。如果上传成功,则状态栏中将显示“完成上传"消息。

    上传完成几秒钟后,您应该会在屏幕上看到 pin 13 LED板开始闪烁。恭喜你!您已经启动并运行了Arduino。

    入门项目

    现在您已经了解了基础知识,现在让我们来看一些初学者的项目。

    您以前使用过Arduino示例代码使板上的LED闪烁。该项目将使用面包板使外部LED闪烁。这是电路:

    将LED的长脚(正脚,称为阳极)连接到 220欧姆电阻,然后连接到数字 pin 7 。将短脚(负脚,称为阴极)直接连接到接地(您可以选择在其上具有GND的任何Arduino端口)。这是一个简单的电路。 Arduino可以数字控制该引脚。打开该引脚将点亮LED,将其关闭将关闭LED。电阻是保护LED免受过多电流所必需的电阻-它会在没有电阻的情况下烧毁。

    这是您需要的代码:

    void setup() {    // put your setup code here, to run once:    pinMode(7, OUTPUT); // configure the pin as an output}void loop() {    // put your main code here, to run repeatedly:    digitalWrite(7, HIGH); // turn LED on    delay(1000); // wait 1 second    digitalWrite(7, LOW); // turn LED off    delay(1000); // wait one second}

    此代码可完成以下工作:

    void setup(): This is run by the Arduino once every time it starts. This is where you can configure variables and anything your Arduino needs to run.
    pinMode(7, OUTPUT): This tells the Arduino to use this pin as an output, without this line, the Arduino would not know what to do with each pin. This only needs to be configured once per pin, and you only need to configure pins you’re intending to use.
    void loop(): Any code inside this loop is repeatedly run over and over again, until the the Arduino is turned off. This can make larger projects more complex, but it works amazingly well for simple projects.
    digitalWrite(7, HIGH): This is used to set the pin HIGH or LOWON or OFF. Just like a light switch, when the pin is HIGH, the LED will be on. When the pin is LOW, the LED will be off. Inside the brackets, you need to specify some additional information for this to work correctly. Additional information is known as parameters or arguments.

    第一个(7)是引脚号。例如,如果您将LED连接到其他引脚,则可以将其从7更改为另一个数字。第二个参数必须是 HIGH (高)或 LOW (低),用于指定是打开还是关闭LED。
    延迟(1000):告诉Arduino等待指定的时间(以毫秒为单位)。 1000毫秒等于一秒,因此这将使Arduino等待一秒钟。

    一旦LED点亮一秒钟,Arduino然后运行相同的代码,只有它继续转动LED熄灭,然后再等待一秒钟。此过程完成后,循环将再次开始,并且LED会再次打开。

    挑战:尝试调整打开和关闭LED之间的时间延迟。你观察到什么?如果将延迟设置为一个很小的数字(例如一两个),会发生什么情况?您可以修改代码和电路以使两个 LED闪烁吗?

    现在您的LED工作了,让我们在电路中添加一个按钮:

    连接按钮,以便桥接面包板中间的通道。将右上支腿连接到 Pin 4 。将右下支脚连接到 10k Ohm 电阻,然后连接到接地。将左下方腿连接到 5V

    您可能想知道为什么一个简单的按钮需要一个电阻。这有两个目的。它是一个下拉电阻器—将该引脚接地。这样可确保不会检测到任何虚假值,并防止未按时按下按钮的Arduino 思考。该电阻器的第二个用途是作为电流限制器。没有它,5V将会直接进入地面,魔烟将被释放,而您的Arduino将会死亡。这被称为短路,因此使用电阻器可以防止这种情况发生。

    当未按下按钮时,Arduino会检测到接地(引脚4 >< strong>电阻>接地)。当您按下按钮时,5V接地。 Arduino的第4针可以检测到这种变化,因为第4针现在已经从地变为5V;

    下面是代码:

    boolean buttonOn = false; // store the button statevoid setup() {    // put your setup code here, to run once:    pinMode(7, OUTPUT); // configure the LED as an output    pinMode(4, INPUT); // configure the button as an input}void loop() {    // put your main code here, to run repeatedly:    if(digitalRead(4)) {        delay(25);        if(digitalRead(4)) {            // if button was pressed (and was not a spurious signal)            if(buttonOn)                // toggle button state                buttonOn = false;              else                 buttonOn = true;            delay(500); // wait 0.5s -- don't run the code multiple times        }           }       if(buttonOn)         digitalWrite(7, LOW); // turn LED off    else        digitalWrite(7, HIGH); // turn LED on}

    此代码基于您在上一节中学到的内容。您使用的硬件按钮是瞬时操作。这意味着它只有在按住时才能工作。替代方法是锁定操作。就像您的电灯或插座开关一样,按一次打开,再按一次关闭。幸运的是,闩锁行为可以用代码实现。以下是其他代码的作用:

    布尔型按钮打开=否:该变量用于存储按钮的状态-开或关,高或低。它的默认值为false。
    pinMode(4,INPUT):与LED所用的代码非常相似,此行告诉Arduino您已将输入(您的按钮)连接到引脚4。
    if(digitalRead(4)): digitalWrite()类似, digitalRead()用于读取引脚的状态。您需要为其提供一个引脚号(按钮上为4)。

    按下按钮后,Arduino将等待25ms并再次检查该按钮。这称为软件反跳。这样可以确保Arduino认为是按下按钮,确实是按下按钮,而不是噪音。您不必执行此操作,并且在大多数情况下,没有它,一切都会很好地进行。最好是一种最佳做法。

    如果Arduino确定您确实确实按下了按钮,那么它将更改 buttonOn 变量的值。这将切换状态:

    ButtonOn为true:设置为false。
    ButtonOn为false:设置为true。

    最后,根据 buttonOn 中存储的状态关闭LED。

    光传感器

    让我们进入高级项目。该项目将使用光敏电阻器(LDR)来测量可用光量。然后Arduino会告诉您的计算机有关当前光照水平的有用信息。

    以下是电路:

    由于LDR是电阻器的一种,因此绕线并不重要它们被放置了-它们没有极性。将 5V 连接到LDR的一侧。通过 1k Ohm 电阻将另一端连接到接地。还将这一侧连接到模拟输入0

    此电阻器充当下拉电阻器,就像以前的项目一样。因为LDR是模拟设备,所以需要一个模拟引脚,并且这些引脚包含用于精确读取模拟硬件的特殊电路。

    以下是代码:

    int light = 0; // store the current light valuevoid setup() {    // put your setup code here, to run once:    Serial.begin(9600); //configure serial to talk to computer}void loop() {    // put your main code here, to run repeatedly:    light = analogRead(A0); // read and save value from LDR        //tell computer the light level    if(light < 100) {        Serial.println("It is quite light!");      }    else if(light > 100 && light < 400) {        Serial.println("It is average light!");     }    else {        Serial.println("It is pretty dark!");      }    delay(500); // don't spam the computer!}

    此代码做了一些新的事情:

    Serial.begin(9600):这告诉Arduino您希望以9600的速率通过串行通信。Arduino会为此做准备。速率并不重要,但是您的Arduino和计算机都需要使用相同的速率。
    analogRead(A0):用于读取LDR的值。较低的值表示有更多的可用光。
    Serial.println():用于将文本写入串行接口。

    简单的 if 语句会根据可用的指示灯向您的计算机发送不同的字符串(文本)。

    上传此代码并保持USB电缆连接(这就是Arduino的通信方式以及电源的来源) )。打开串行监视器(右上>串行监视器),您应该看到消息每0.5秒到达一次。

    您会看到什么?如果覆盖LDR或在LDR上照亮,会发生什么情况?您可以修改代码以通过串行方式打印LDR的值吗?

    发出一些噪音

    该项目使用压电扬声器发出声音。电路如下:

    注意到任何熟悉的东西吗?该电路几乎与LED项目完全相同。压电是非常简单的组件-在发出电信号时它们会发出声音。通过 220欧姆电阻将正极支路连接到数字 pin 9 。将分支连接到 ground

    这是代码,对于该项目非常简单:

    void setup() {    // put your setup code here, to run once:    pinMode(9, OUTPUT); // configure piezo as output}void loop() {    // put your main code here, to run repeatedly:    tone(9, 1000); // make piezo buzz    delay(1000); // wait 1s    noTone(9); // stop sound    delay(1000); // wait 1s}

    只有一个这里有一些新的代码功能:

    音调(9,1000):这使压电体产生声音。它有两个参数。第一个是要使用的引脚,第二个是音调的频率。
    noTone(9):这将停止在提供的引脚上产生任何声音。

    尝试更改此代码以产生不同的频率。将延迟更改为1ms-您会注意到什么?

    从这里去哪里

    如您所见,Arduino是进入电子产品和软件的简便方法。它是初学者最好的微控制器之一。希望您已经看到,使用Arduino构建简单的电子项目很容易。了解基本项目后,您可以构建更复杂的项目:

  • 创建圣诞灯饰
  • Arduino Shields来增强项目的能力
  • 构建自己的乒乓游戏使用Arduino
  • 将Arduino连接到互联网
  • 使用Arduino创建家庭自动化系统
  • 您拥有什么Arduino?您有喜欢做的有趣的项目吗?有关更多信息,请看一下如何使用VS Code和PlatformIO改进Arduino编码。

    标签: Arduino Electronics