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 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
发布评论请先 登录
相关推荐
评论