企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
Arduinos! 我要讲讲他们是什么 他们可以做什么,以及如何设置它们 来实现一些简单的功能 比如做一个LED调光电路,控制电机速度, 甚至做一个简单的示波器。 什么是Arduino? 我相信你听说过无数次了,你可能会对他的意思感到困惑 因为Arduino指的是很多不同的东西。 继续观看,我会解释所有这些。 微控制器是集成电路,基本上都是小型电脑。 他们可以运行小而简单的软件程序。 他们的功耗很低,用电池可以运行好几天 但是他们运行速度很快,可以用常人难以想象的速度处理数据 Arduino是一家在意大利设计的公司 制造并销售易于使用的微控制器电路板 他们把这些电路板称为Arduinos 有很多不同类型的Arduinos 例如,你也可以买到Arduino Uno这种简单的Arduino 他很便宜却也能完成大部分任务 您可以使用Arduino Uno来控制电机,照明,相机,甚至制作一个简单的机器人。 然后还有有更强大的Arduinos 他拥有更强大的处理器,有wifi模块,以太网模块等等。 Arduino公司开源他们所有的硬件设计 这意味着你不用从他们那里购买 已经有无数家第三方公司 根据Arduinos硬件设计制造了Arduinos电路板 他们不能称他们为Arduinos,但在功能上他们是一样的 还有一些东西叫做Arduino“扩展板” 他们可以插入主Arduino电路板,并让你做更多的事情。 例如,Adafruit制作的扩展板,让你可以控制电机和伺服电机 而不用自己设计电机控制电路。 而Sparkfun的扩展板可以把你的Arduino变成一部简单的手机 或者一个MP3播放器! 好的,以上便是对Arduino公司和Arduino硬件的快速概述 但还有更多! 还有Arduino软件开发环境 这就是Arduino因适合初学者的原因。 在以前,如果你想编程微控制器,你必须使用二进制文件 然后记住很多难以记住的寄存器和说明。 然后你必须使用定制的编程器 将你的程序写入微控制器。 该公司的Arduino摆脱了所有这一切。 他们创建了适用于Windows、Mac和Linux的软件 使用这个软件 烧写代码就像连接USB电缆然后单击按钮一样简单 他们创建了一种编程语言,这样一来, 所有的Arduino硬件都可以以同样的方式进行编程。 虽然它并不像学习Python那么简单 Arduino编程也是最简单的编程之一 好的,希望你能弄清楚在不同的背景下Arduino意思是什么 现在当人们说他们使用“Arduino项目”时 他们说的可能是Arduino Uno。 你不太可能会很快发挥到它的极限 所以对于初学者来说这是完美的Arduino 你可以在淘宝上以便宜的价格购买Arduino 如果你有钱,我建议买一个Uno扩展包 这样你就有很多不同的硬件可以用。 好的,当你有了你的Arduino Uno 我想做的第一件事是让你熟悉硬件。 你会经常听到Arduinos被叫做微控制器,这是不正确的。 Arduinos是具有微控制器的电路板 但他们也有许多其他元件。 我们来快速讲一遍吧。 这是微控制器。 Arduino UNO使用一系列微控制器,称为ATMEGA AVR。 它们由名为Atmel的公司制造。 你可以自己购买裸芯片,约一美元 但你必须自己焊接。 连接到微控制器是一个晶振。 它可以控制微控制器运行的速度 我发布过一个关于谐振器的独立教程,可能对你有帮助 现在,为了将你的程序写入到微控制器中 实际上要用到另一个微控制器 这个芯片可以让你连接你的电脑 并通过USB进行通信。 它允许您将程序写入到主微控制器 一旦有程序在运行 这个芯片是会负责在电脑和Arduino之间传输数据 这对调试非常重要! 使用Arduino的一个好处就是你可以完全通过USB为它们供电。 但是如果你不希望始终和电脑相连接 你可以只使用外部DC插孔的9伏直流电源 Uno有一个内置电压调节器,可将电压降至5伏。 如果你想“重新启动”你的Arduino程序,这有一个复位按钮。 如果你有时间,值得研究一下Arduino Uno原理图。 不要担心,虽然它看起来很复杂, 但是你不需要了解其中的大部分内容 我只是要让你了解Arduino的设计师做了什么。 他们采用现成的微控制器, 但还需要很多额外的部分才能正常工作 他们把所有的东西以易于理解的方式连接在一起。 如果您想解更多有关电子产品的信息,你也可以像这样制作电路板。 好的,这就是盖子下的东西。 接下来我们来谈谈排针。 这里是电源引脚。 如果有需要,可以为其他电路提供5V或3.3V的供电。 但是要确保负载电流不超过几毫安 少量LED是可以的,但是大型电机会GG 然后变成了一个Ardui-nono。 (WC!搞砸了!) TX和RX用于发送和接收串行数据。 您可以使用此端口 发送和接收来自GPS模块、蓝牙模块、wifi模块等等的数据。 引脚2至13用于数字输入和输出。 通常当人们想到二进制时你会想到0和1。 但是! 实际上,对于大多数微控制器引脚你可以激活第三个状态 并将它们用作数字输入。 所以你可以使用这个引脚作为输出 它为数字1输出5V,或者为0输出0V。 或者,你可以使用程序控制Arduino 控制引脚输出你想要的电压 这也可以解释输出0或1 这是一个叫做三态逻辑的系统,值得仔细阅读, 但Arduino可以使用程序轻松地控制输入和输出之间的变化 这里有6个模拟输入引脚 这些引脚用于测量从0到5V的连续电压 我稍后会在视频中详细讨论这个问题。 最后,一些针脚在前面有一个波浪号 这意味着你可以使用它们输出脉宽调制方波,我将在后面的视频中展示。 硬件部分就到这里 实际上,你在软件中就可以完成Arduino的大部分工作。 首先下载来自arduino.cc的Arduino软件。 在安装过程中,会出现很多这样的提示 系统会询问您是否要安装各种驱动程序。 安装就行了 安装完成后,用USB线将Arduino连接到你的电脑。 接下来,启动Arduino开发环境。 你要做的第一件事是确保软件连接到 正确的Arduino类型。 点击 工具-开发板,选择我们用的Arduino Uno。 接下来我们必须确保软件可以连接到你的Arduino。 转到“工具”-“端口”,然后选择“COM”或“你的Arduino连接的串口。 如果这里没有显示你的Arduino,那么你的驱动可能有问题 也可以尝试将Arduino插入另一个USB口。 Arduino有很多很棒的易于学习的程序 学习这些是开始编码的最佳起点。 Arduino称他们为“草稿” 这里会显示你所编写的程序 让我们从测量输入Arduino的电压开始。 点击 文件-示例-Basics-AnalogReadSerial 所有Arduino示例都会告诉你关于如何设置硬件。 这里告诉我们将电位器的中间引脚连接到A0 剩下两个引脚连接到+ 5V和接地。 好的......让我们试试 1k或10k电位器就可以很好的完成这个工作 我们将它用作分压器,产生0到5伏特的电压。 如果你不明白是什么意思,可以看我之前的分压器教程 每个Arduino程序都有两个主要函数,setup和loop函数 在setup中,你可以为Arduino配置程序执行的任务。 它可以是关于哪些引脚是输入,哪些是输出 但在这种情况下 我们告诉Arduino以每秒9600位的速度将串行数据发送到我们的计算机 在这种情况下,这是一个常用的数据传输速率 loop是代码循环区域 只要Arduino有电,它就会重复执行 这一行是为了测量A0引脚上的电压 并将它的值存储在我们调用sensorValue的内存中的临时位置。 sensorValue是一个int或叫做整数,意思是这是一个整数。 一旦我们把模拟电压读数复制到sensorValue中, Serial.println就会将我们的Arduino值通过USB线传输到我们的电脑中 然后我们就可以查看它。 单击 上传,软件将编译你的程序和然后将其上传到Arduino 按下重置按钮 现在点击 工具-串口监视器 你应该看到一堆数字飞过。 当电压从0V变到5V时 你应该在屏幕上数字从0变到1023 这是因为在Arduino内部,使用10位二进制表示模拟电压 所以是从0到1023 数字与电压呈线性关系,所以,2.5V时数字会变成512 你可以使用这些公式将示数转化为实际电压 反之亦然。 现在关闭串行监视器,然后点击 工具-串行绘图器。 现在,你就可以得到电压随时间产生的电压图。 它基本上就是一个非常简单的低带宽示波器! 让我们尝试另一个实验,制作一个简单的LED调光器。 点击 文件-示例-Analog-AnalogInOutSerial。 关于电位器的说明和以前一样。 它还说要把LED连接到digital pin 9和 接地之间。 注意,这里要给你的LED串联一个电阻 因为Arduino的引脚不能提供太大的电流 任何超过20mA的电流都会烧毁那个针脚。 我有一个关于LED和电阻的详细教程 这里我们使用1k电阻连接到地。 另一侧进入LED的负极,并且将LED的正极连接到引脚9。 前面我已经讲过了int的意思, 但这里的const int意思是将“analogOut”引脚 在之后的程序中定义为常数9 例如这里,analogWrite(9,outputvalue) 这里的9到底指什么? 而在这里,我们定义”analogOut“Pin为常数9,并将其写入Arduion的内存中 所以当我们写其他的代码时 我们不用记住不同用途的的引脚名字 虽然现在不太重要,但是当你的程序使用了很多不同的引脚时 就显得尤为重要 sensorValue和outputValue是非常量的整数 这意味着在程序运行期间,他们的数值可以改变 编程术语称其为“变量”。 在Arduino平台上,一个int变量 可以表示在-32,768~+32767之间的一个整数 用法与之前相同,我们再次使用analogRead函数 用于测量某个引脚上的电压(之前是A0) 我们将该值存储在sensorValue中。 现在我们知道Arduino内部模拟电压用数字0-1023表示 但analogWrite函数只接受从0到255的值 所以我们在这里使用map函数 线性地将scale sensorValue降至0-255之间的值 然后analogWrite函数获取储存在outputValue中的数据 并使用它控制“analogOut”Pin上的电压也就是pin9上的电压。 Serial.print类似于我之前讲过的东西 在每次循环结束之后,延时函数会使Arduino暂停执行程序几毫秒 我们再次点击上传,按下复位按钮 现在我们就有一个能用电位器控制LED的亮度的程序! 现在你可能在想......那又怎么样? 没有Arduino也能做到! 好吧,让我们用示波器探测引脚9的输出,看看到底发生了什么 我们有一个脉宽调制方波! 我们可以用电位器控制它,而且非常精确。 现在,让我们试试控制其他东西 让我们把这部分电路从555方波发生电路中拿出来 现在我们能够以数字方式控制电机,而不是用有时出现故障的555电路。 所以你可能会认为analogWrite函数能控制脉宽调制方波很奇怪 这个东西使用RC低通滤波器将方波转换成连续的模拟电压, 我写过一个单独教程 如果你了解这些代码是如何工作的 你可以删除其中一部分代码,并加入自己想要的功能 在这里,删除了有关电位器和串行的代码,重新写了一段代码 我写了一个循环程序,它可以关闭电机1秒 然后以50%的速度打开电机一秒钟,然后再全速运转1秒钟。 所以你可以看到,通过读取传感器的电压,编写控制电机和伺服系统的代码, 一个Arduino如何能轻易地成为一个简单机器人的大脑。 你只需花74美元买到Arduino的机器人扩展包 这就是你可以用Arduino做到的两个简单的例子 但是你能实现更多功能,并且网上有大量教程 感谢的收看,如果你认为这个视频对你有帮助,你可以点个关注哦! 翻译:Erlla 时间轴:Erlla 校对:Erlla (以下均为PY时间)