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

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

3天内不再提示

怎样用Arduino编程

454398 来源:工程师吴畏 2019-07-26 08:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

您是否拥有产品或项目请注意,您可能会发现自己需要使用PC以外的硬件或本地硬件商店中可以找到的某些组件。适合初学者的一件硬件,Arduino,可能只是你的胡同。但是您可以从这样的设备中得到什么,它是否适合您的需求?

一个独特的硬件控制器

PC,平板电脑手机是大多数人都可以访问的常用平台。正因为如此,许多个人和公司已经利用了对软件的需求并生产了应用程序,该行业每年的收入超过770亿美元。但是这些设备面临的一个主要问题是它们有限的I/O能力,控制像继电器这样简单的事情可能是一项艰巨的任务。这是需要不同计算设备的地方,对于大多数新手来说,我想到了两个主要设备:Raspberry Pi和Arduino。 Raspberry Pi是一款非常强大的单板计算机,具有多个IO连接,包括允许连接电路的通用I/O(GPIO)连接器。但Raspberry Pi也有一些缺点。首先,它需要大量的电力才能运行(2A @ 5V),其次,它不是最简单的工作和程序。这就是Arduino的用武之地!

与Raspberry Pi不同,Arduino是一个小得多的计算设备,强调硬件而不是软件。因此,虽然Raspberry Pi有4个64位内核和1GB内存,但Arduino有一个运行在16MHz的单核,2KB的RAM和32KB的存储。但与Pi不同,Arduino有许多IO引脚,可以比Raspberry Pi做更多的工作,包括模拟 - 数字转换和PWM(脉冲宽度调制)。 Arduino也专注于用户的程序,并且是唯一运行的,与Pi不同,它需要操作系统来运行用户程序(这意味着在程序运行时,许多其他进程也是如此)。

Arduino是如何编程的?

Arduino是围绕微控制器系列构建的使用Atmega328P将Arduino Uno板称为ATMega。这些微控制器与市场上数百万的微控制器非常相似,包括微控制器生产的PIC器件。这些设备的问题在于它们通常需要专用的编程器设备来将用户程序放入其闪存(例如PICKIT 3)中。这使得它们使用起来很复杂,特别是那些没有微控制器经验的人。但这就是Arduino的不同之处! Arduino的设计人员意识到专用编程器存在问题,因此他们在Arduino中设计了一个引导加载程序,允许USB端口加载用户程序。因此,当您将Arduino连接到USB端口时,它将被识别为通用串行端口,并且连接的PC甚至可能将其识别为Arduino。

将Arduino连接到USB端口,我们距离我们的第一个项目更近了一步。但是我们使用什么语言以及我们需要下载什么应用来制作Arduino程序?嗯,Arduino的设计人员不仅可以轻松地将Arduino连接到PC,而且他们还决定制作一个免费的IDE(集成开发环境),它可以让你在安装后不到五分钟的时间内闪烁LED。可以通过以下链接从Arduino网站下载IDE:

Arduino IDE下载页面

下载后,安装IDE。完成后,通过启动Arduino程序运行IDE。在Windows 10中,您可以打开开始菜单并键入“Arduino”(这应该会启动IDE)。

如果没有,请查看桌面上的Arduino图标。

如果一切都去了计划,你应该看到Arduino IDE加载一个空白程序,如下所示。

您的第一个程序

Arduino IDE用于制作Arduino程序的语言是C ++,它是一种面向对象的语言。 C ++本身不会深入讨论或教授,因为本教程的目的是演示使用Arduino是多么容易。

在你的空白项目中,你应该看到两个不同的功能:setup()和环()。当Arduino首次打开并开始运行时,它将执行setup中的代码。此功能用于配置硬件和变量,以便您的程序以已知状态运行,并且所有需要的硬件都已正确配置供您使用(例如打开ADC端口)。在setup()之后执行的下一个main函数是loop(),它无限运行并用于运行程序(在执行循环中找到的最后一条指令后,Arduino将跳转到循环中找到的第一条指令)。在我们的项目中,我们将使用Arduino Uno,我们的目标是制作板载LED闪光灯。

值得庆幸的是,IDE的设计者已经包含了许多示例,我们将加载闪烁示例,这可以通过单击文件》示例》 01.Basics》 Blink来完成。如果一切顺利,你应该看到以下代码(你上面可能有一些灰色的注释,但这没关系):

在我们继续前进之前,我们必须告诉我们的IDE是我们正在使用的Arduino板。在我的情况下,我有一个Arduino Uno,所以我需要通过工具》 Board》 Arduino Uno/Genuino Uno来选择它。

现在我们打开了blink示例并选择了正确的板,现在是时候使用这段代码对Arduino进行编程了。执行此操作的第一项任务是编译代码,单击验证图标(如下所示):

编译代码后,您应该会在底部控制台窗口中看到以下消息:

最后一步是将程序加载到Arduino中。第一项任务是确保IDE知道要使用哪个串口,因此,为此,我们导航到工具》端口,然后选择串口。值得庆幸的是,大多数现代设备没有串行端口,因此应该有两种选择之一:COM1和其他一些COM。 COM1通常不是可访问的串行端口,并且由OS内部使用,因此请选择备用COM端口。例如,我的是COM8。被警告!计算机可能决定在将来更改COM端口,因此如果IDE在连接时找不到Arduino,请转到端口列表并查找备用端口。例如,我的Arduino曾经是COM7,但由于某种原因改为COM8。

现在可以通过点击上传按钮对Arduino进行编程!

结果?

IDE成功上传后闪烁程序,您应该看到板载LED亮一秒钟,关闭一秒钟,然后重复。但是我们的计划如何运作? Arduino如何打开和关闭LED?

我们之前讨论过,Arduino Uno的核心是Atmel Atmega328微控制器,它有许多金属引脚连接到集成电路(我假设你在这里有一定程度的电路知识)。其中一些引脚用于供电,一些用于外部振荡器,其余用于输入和输出(如开关,LED,数据端口等)。 Uno上的LED连接到引脚13,因此为了使用LED,我们必须将该引脚配置为输出(可以控制外部设备的输出)。

为此,我们使用一个名为pinMode()的简单函数。该函数有两个参数:我们正在配置的引脚,以及引脚的类型,无论是输出还是输入。因此,在我们的代码中,我们将LED引脚配置为输出。您可能想知道为什么该功能使用LED_BUILTIN而不是13.这是因为不同的Arduino板可能使用不同的引脚用于内置LED,因此Arduino IDE的设计者巧妙地创建了一个名为LED_BUILTIN的变量。当您选择电路板类型(Uno,Nano等)时,此变量将更改为内置LED连接的正确引脚,因此您的闪烁项目仍然有效!

设置Arduino后,执行主循环功能。我们遇到的第一条指令是digitalWrite(),它用于打开或关闭输出(HIGH或LOW)。这个函数有两个参数:我们写的引脚和值。第一条指令通过将HIGH(1)写入LED引脚来打开LED。

打开LED后执行的下一条指令是延迟(1000)。此函数使Arduino延迟n毫秒,其中n是传递给延迟函数的参数。换句话说,延迟(1000)将等待1000ms,等于一秒。如果调用delay(1),Arduino将延迟1ms。

最后两条指令类似于之前执行的两条指令,除了不打开LED,我们通过写入LOW将其关闭LED引脚使用digitalWrite()函数。一旦关闭,Arduino会在无限期重复整个循环之前执行最后一秒钟的延迟。

结论

虽然这个例子看似简单,但它证明了编写和编写Arduino是多么容易。存在其他微控制器,例如PIC系列,但它们需要定制电路和专用编程器,而Arduino只需要USB端口和USB B电缆。当然,在需要精确控制的某些情况下,Arduino是不实用的,例如高级传感器,中断控制,DMA数字信号处理。因此,如果您的产品是简单的物联网设备或机器人控制器,那么Arduino可能只适合您!

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

    关注

    90

    文章

    3708

    浏览量

    96777
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195994
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Arduino plc和termux esp

    Arduino plc和termux esp
    的头像 发表于 12-06 06:41 1437次阅读

    大神们,想知道你们都用什么ide编程调试器? Arduino IDE?还是 e2studio ?还有其他吗?哪个好用呢

    大神们,想知道你们都用什么ide编程调试器? Arduino IDE? 还是 e2studio ? 还有其他吗? 哪个IDE好用呢? 求指点呀
    发表于 11-30 12:05

    WEMOS D1 R32 Arduino IDE 点灯程序 及搭建

    https://v.kuaishou.com/J43p6seX D1 R32 "Arduino IDE "闪烁 该作品在快手被播放过1次,点击链接,打开【快手】直接观看!
    的头像 发表于 10-27 14:51 243次阅读

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录
    的头像 发表于 08-08 20:16 3075次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另一个<b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导程序bootlaoder

    【Milk-V Duo S 开发板免费体验】Milk-V DuoS之使用Arduino开发小核

    Milk-V DuoS之使用Arduino开发 Arduino 是一个很流行的开源硬件平台,具有简洁性、易用性和开放性等优点。它提供了丰富的库函数和示例代码,使得即使对于没有编程经验的人来说,也能够
    发表于 07-17 21:01

    Arduino与LabVIEW联合编程指南

    Arduino编程并与LabVIEW上位机结合实现设备的远程控制与数据采集。
    发表于 06-19 15:54 1次下载

    免费分享Arduino入门+进阶(全套例程+书籍)

    Arduino是一款开源电子原型平台,由硬件(单片机开发板)和软件(编程环境)组成,旨在让非专业用户也能轻松入门电子制作和编程。它的核心思想是简化硬件开发,通过直观的编程和模块化设计,
    的头像 发表于 05-22 11:40 799次阅读
    免费分享<b class='flag-5'>Arduino</b>入门+进阶(全套例程+书籍)

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    的发展,在Arduino出现以前,虽然也有很多公司在推广一些简单易用的可编程控制器,但是由于开发平台种类繁多,而且使用这些控制器基本上都需要对电子技术、数字逻辑、寄存器等内容进行多方面的了解和学习,才能
    发表于 05-13 09:28

    STM32开发板一般都会配置arduino接口,是不是基本上也都会支持arduino

    STM32开发板一般都会配置arduino接口,是不是基本上也都会支持arduino?这个在哪里可以查询开发板是否支持
    发表于 03-07 06:33

    AI人脸识别开发板BW21-CBV-Kit驱动墨水屏

    试着BW21-CBV-Kit点亮2.9寸墨水屏,开发板例程非常丰富,在arduino上开发的话上手超级容易。
    的头像 发表于 03-04 18:24 1545次阅读
    <b class='flag-5'>用</b>AI人脸识别开发板BW21-CBV-Kit驱动墨水屏

    请问DLP6540怎样编程

    请问DLP6540怎样编程怎样通过那个DLP composer来新建工程,配置各项参数,有参考资料教程之类的么,谢谢
    发表于 02-21 06:49

    使用ADS1281的SPI采集数据,各个引脚应该怎么连接?

    我想使用ADS1281的SPI采集数据,各个引脚应该怎么连接?那些是必须用I/O口,那些可以直接上拉或下啦,如果想预留PIN模式,怎样用最少的I/O口接线,还有同步输入引脚的作用是什么?应该怎么接线?谢谢
    发表于 02-10 06:52

    EE-33:C语言对ADSP-21xx定时器进行编程

    电子发烧友网站提供《EE-33:C语言对ADSP-21xx定时器进行编程.pdf》资料免费下载
    发表于 01-15 15:46 0次下载
    EE-33:<b class='flag-5'>用</b>C语言对ADSP-21xx定时器进行<b class='flag-5'>编程</b>

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

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2827次阅读

    Arduino采集雷达模块数据与串口绘图

    Arduino采集雷达模块数据与串口绘图
    的头像 发表于 12-14 11:44 1215次阅读
    <b class='flag-5'>Arduino</b>采集雷达模块数据与串口绘图