0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino的入门

454398 来源:网络整理 作者:网络整理 2019-11-28 11:47 次阅读

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

什么是Arduino?

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

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

Arduino项目可以是独立的,也可以与计算机上运行的软件进行通信(处理是最受欢迎的软件)。他们可以与其他Arduino,Raspberry Pi,NodeMCU或几乎其他任何设备交谈。请务必阅读我们对5美元微控制器的比较,以全面比较这些微控制器之间的差异。

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

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

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

您可以使用Arduino做什么?

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

自定义快捷按钮

电子D20模具

激光转塔

Midi控制器

带有OLED显示屏的复古游戏

交通灯控制器

Arduino的内部是什么?

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

处理器: 16 Mhz ATmega16U2

闪存: 32KB

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微控制器的引脚上也有内置LED。 13,通常用于指示操作或事件,或仅用于测试。

光电电阻器

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

触觉开关

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

压电扬声器

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

电阻器

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

跳线

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

设置Arduino

在开始任何项目之前,您需要获取自己的Arduino与您的计算机对话。这样一来,您就可以编写和编译Arduino的代码以执行,并为Arduino的计算机提供一种工作方式。

在Windows上安装Arduino软件包

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

该安装包括驱动程序,因此从理论上讲,您应该马上就走。如果由于某种原因失败,请尝试以下步骤以手动安装驱动程序:

将其插入板中,然后等待Windows开始其驱动程序安装过程。片刻之后,尽管已尽了最大努力,该过程仍将失败。

单击开始菜单》 控制面板。

导航至系统和安全性》 系统。打开“系统”窗口后,打开设备管理器。

端口(COM和LPT)下,您应该会看到一个名为的开放端口。 》 Arduino UNO(COMxx)。

右键单击 Arduino UNO(COMxx)》 更新驱动程序软件。

选择浏览我的计算机以获取驱动程序软件。

导航并选择位于的Uno驱动程序文件,名为 ArduinoUNO.inf 。 Arduino软件下载的》 Drivers 文件夹。

Windows将在此处完成驱动程序的安装。

在Mac OS上安装Arduino软件包

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

在Ubuntu/Linux软件包上安装Arduino软件

安装 gcc-avr 和 avr-libc :

sudo apt-get install gcc-avr avr-libc

如果您没有openjdk-6-已经安装了jre,则也要进行安装和配置:

sudo apt-get install openjdk-6-jre

sudo update-alternatives --config java

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

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

tar xzvf arduino-x.x.x-linux64.tgz

cd arduino-1.0.1

。/arduino

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

运行Arduino软件

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

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

为了将此代码上传到Arduino,请在 Tools 》与您的模型相对应的 Board 菜单-在这种情况下为 Arduino Uno 。

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

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

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

入门项目

现在您已经了解了基础知识,下面让我们来看一些入门项目。

闪烁LED

您之前曾使用Arduino示例代码来闪烁板载LED。该项目将使用面包板使外部LED闪烁。这是电路:

将LED的长脚(正极,称为阳极)连接到 220欧姆电阻,然后连接到数字引脚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():每次启动时,它都会由Arduino运行一次。在这里您可以配置变量以及Arduino需要运行的任何东西。

pinMode(7,OUTPUT)::这告诉Arduino将这个引脚用作输出,没有此行,则是Arduino不知道该如何处理每个引脚。每个针只需配置一次,您只需要配置要使用的针即可。

void loop():此循环中的所有代码都会反复运行再次,直到Arduino关闭。这可以使较大的项目变得更复杂,但对于简单项目则效果非常好。

digitalWrite(7,HIGH):用于设置引脚 HIGH 或低-打开或关闭。就像电灯开关一样,当引脚为高电平时,LED点亮。当引脚为低电平时,LED将熄灭。在方括号内,您需要指定一些其他信息才能使其正常工作。其他信息称为参数或参数。

第一个(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 》 电阻器》 接地)。当您按下按钮时,5V接地。 Arduino的第4针可以检测到这种变化,因为第4针现在已经从接地变为5V;

下面是代码:

boolean buttonOn = false; // store the button state

void 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 value

void 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和计算机都需要使用相同的速率。

analogRead(A0):用于读取LDR的值。较低的值表示有更多的可用光。

Serial.println():用于将文本写入串行接口

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

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

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

发出一些噪音

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

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

下面是代码,对于这个项目非常简单:

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创建家庭自动化系统

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186570
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino实现CAN总线通信

    CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化等领域。它以其高可靠性、实时性和灵活性而受到青睐。Arduino作为一个
    的头像 发表于 11-12 10:09 218次阅读

    怎样用Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码。
    的头像 发表于 07-30 09:14 691次阅读
    怎样用<b class='flag-5'>Arduino</b>测试锂电池容量

    idf-arduino component组件怎么设置 ?

    idf -arduino component组件该怎么设置 ,。 CMake Warning at E:/COMPILE/Othert/IDF4.4/esp-idf-v4.4/tools
    发表于 06-12 07:27

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用?
    发表于 06-12 07:21

    新手入门如何选择Arduino与树莓派?

    树莓派2的主频速度和内存量两个主要方面都远高于Arduino。树莓派可以被看作一台完全独立的计算机,可以直接运行Linux和Windows 10操作系统,支持WIFI链接和多任务运行。
    发表于 04-28 14:56 573次阅读
    新手<b class='flag-5'>入门</b>如何选择<b class='flag-5'>Arduino</b>与树莓派?

    arduino如何停止loop循环

    Arduino的loop循环是其主要的程序执行部分,该循环将在Arduino开发板上持续运行,并且只有在程序被重新上传或开发板断电重启时才会停止。然而,在某些情况下,你可能需要在程序执行过程中停止或
    的头像 发表于 02-14 16:24 4147次阅读

    arduino中while循环怎么跳出

    Arduino 是一款开源的硬件平台,广泛应用于各种物联网和嵌入式系统项目。在 Arduino 上编写代码时,循环结构起到了至关重要的作用。而其中的 while 循环更是常用于需要根据特定条件重复
    的头像 发表于 02-14 16:22 2344次阅读

    如何将LED连接到Arduino板并使其闪烁

     在本快速入门指南中,您将学习如何将 LED 连接到 Arduino 板并使其闪烁。
    的头像 发表于 02-11 10:53 2030次阅读
    如何将LED连接到<b class='flag-5'>Arduino</b>板并使其闪烁

    如何将按钮连接到Arduino

    在本快速入门指南中,您将学习如何将按钮连接到Arduino板,并根据按钮是否被按下来读取HIGH或LOW。您将使用电路板上随附的发光二极管 (LED)通过按钮打开和关闭,以便验证按钮按下代码是否正常工作。
    的头像 发表于 02-11 10:52 3369次阅读
    如何将按钮连接到<b class='flag-5'>Arduino</b>板

    如何将光敏电阻连接到Arduino板并读取电压

    在本快速入门指南中,您将学习如何将光敏电阻连接到Arduino板并读取电压。您将首先使用串行监视器来了解光传感器的行为方式,然后构建一个电路,在天黑时自动打开灯。
    的头像 发表于 02-11 10:45 3503次阅读
    如何将光敏电阻连接到<b class='flag-5'>Arduino</b>板并读取电压

    如何使用Arduino控制RGB LED

    在本指南中,您将学习如何使用Arduino控制RGB LED。RGB(红-绿-蓝)LED可以通过混合不同强度的红、绿、蓝光来产生多种颜色。您将学习创建一个基本Arduino RGB LED电路,并以一些基本颜色为例循环。
    的头像 发表于 02-11 10:28 4481次阅读
    如何使用<b class='flag-5'>Arduino</b>控制RGB LED

    2023年Arduino开放原码报告:持续茁壮的Arduino生态系!

    所谓出钱就是买一片Arduino开发板或是付费订阅Arduino Cloud云端服务,或单纯资金赞助;出力就是撰写Arduino相关的程序并无私的分享程序代码或回报错误或投入翻译等,笔者即有若干翻译新版
    的头像 发表于 01-25 16:45 1309次阅读
    2023年<b class='flag-5'>Arduino</b>开放原码报告:持续茁壮的<b class='flag-5'>Arduino</b>生态系!

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 4次下载

    Arduino的功能及其限制

    Arduino是一种开源电子原型平台,它基于易于使用的硬件和软件,可以用于制作各种嵌入式系统。然而,尽管Arduino非常强大,但它也有一些功能上的限制。本文将详细介绍Arduino的功能,并探讨
    的头像 发表于 12-21 14:15 1128次阅读

    用了ESP32后,我的Arduino都积灰了,专为零基础新手准备的ESP32入门指南,为什么我不再使用Arduino

    Arduino 或许你已经熟悉Arduino,这是许多零基础者接触的首个开发板。然而,随着ESP32的崭露头角,它
    的头像 发表于 11-20 11:20 1.7w次阅读
    用了ESP32后,我的<b class='flag-5'>Arduino</b>都积灰了,专为零基础新手准备的ESP32<b class='flag-5'>入门</b>指南,为什么我不再使用<b class='flag-5'>Arduino</b>