热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

《Arduino实战》——1.6Arduino程序的结构

本节书摘来自异步社区《Arduino实战》一书中的第1章,第1.6节,作者【美】MartinEvans,JoshuaNoble,JordanHochen

本节书摘来自异步社区《Arduino实战》一书中的第1章,第1.6节,作者 【美】Martin Evans , Joshua Noble , Jordan Hochenbaum ,译者 况琪,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.6 Arduino程序的结构

一个典型的Arduino程序由两个子程序组成:第一个是初始化子程序,称为setup,第二个子程序通常包括程序的主体,称为loop。下面我们来详细了解一下这两个子程序。

1.6.1 setup子程序

如果你打算出去跑步,在出门之前你得先做一些准备工作:穿上你的运动鞋,拿一瓶水,做一下伸展运动,……。对于Arduino,也是一样的道理。在正式开始工作之前,你需要先做一些准备工作。

这些准备工作在一个叫做setup的初始化子程序或者说是函数中完成(详见代码清单)。通常在setup函数中完成的工作是初始化数字引脚——将它们设置成输入或者输出——还有设置串口通信的波特率。

代码清单1-2 setup函数


screenshot

代码清单1-2中的这段初始化代码将13号引脚设置为输出,并将串口通信的波特率设置为9 600。在setup前的void表示这个函数不会返回一个值。

即使你没有任何东西需要设置,你仍然需要输入这个函数,否则在程序校验或者烧写时就会报错。只要写一个这样包含注释的空函数就可以了:


screenshot

下面我们来了解另外一个必须的函数,loop。

1.6.2 无限循环

当你去跑步的时候,你会不停地跑,直到完成为止(无论你如何定义完成)。Arduino跟这个过程是一样的,它也会不停地循环执行一个叫做loop的函数,直到满足一些条件,或者Arduino被断电时停止。下列代码清单展示了代码清单1-1实现的闪烁的LED应用中的loop函数。

代码清单1-3 一个闪烁的LED的示例程序


screenshot

在这个程序中,Arduino反复执行这段程序,点亮LED一秒钟然后关闭一秒钟,不停地循环直到Arduino断电。

既然你已经了解写一个Arduino程序的基本知识,下面我们以一项重要的编程技巧来结束这一章。



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 如何查找和管理计算机中的C盘临时文件
    本文详细介绍了如何在计算机中找到和管理C盘的临时文件,包括其具体路径、环境变量设置方法以及清理这些文件对系统性能的影响。对于希望优化系统性能和释放磁盘空间的用户来说,这是一篇非常有价值的参考。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 深入探讨双臂机器人运动学与D-H建模在ROS系统MoveIt中的应用
    本文详细介绍了如何利用ROS系统MoveIt进行双臂机器人的运动学分析和D-H建模,涵盖刚体位姿描述、正逆运动学求解以及具体的D-H参数计算方法。 ... [详细]
author-avatar
mobiledu2502883317
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有