零基础入门学用Arduino 第一部分(一)

news2024/11/25 21:02:35

重要的内容写在前面:

  1. 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。
  2. 个人把这个教程学完之后,整体感觉是很好的,如果有条件的可以先学习一些相关课程,学起来会更加轻松,相关课程有数字电路(强烈推荐先学数电,不然可能会有一些地方理解起来很困难)、模拟电路等,然后就是C++(注意C++是必学的)
  3. 文章中的代码都是跟着老师边学边敲的,不过比起老师的版本我还把注释写得详细了些,并且个人认为重要的地方都有详细的分析。
  4. 一些函数的介绍有参考太极创客官网给出的中文翻译,为了便于现查现用,把个人认为重要的部分粘贴了过来并做了一些修改。
  5. 如有错漏欢迎指正。

视频链接:1-0 教程介绍_哔哩哔哩_bilibili

太极创客官网:太极创客 – Arduino, ESP8266物联网的应用、开发和学习资料

一、Arduino IDE界面和设置

1、选择开发板型号和端口

(1)首先将开发板通过USB线连接到电脑上。需要注意的是,USB线需要插牢,有时候USB线未插牢,开发板上的灯也会亮。

(2)选择开发板型号

①可以通过上方的“工具”→“开发板”中选择相应的开发板型号。

②可以在下图所示的红框内选择相应的开发板型号。

(3)选择端口

①可以通过上方的“工具”→“端口”中选择相应的端口。

②可以在下图所示的红框内选择相应的端口。

2、保存程序

3、了解软件界面

(1)快捷键区:除界面上提供的快捷按钮外,还有一些结合Ctrl键的快捷键。

①验证:检查代码区中所写的程序有没有错误(逻辑错误不会被检测出,比如死循环),并将程序翻译成计算机能够读懂的格式(即编译)。

②上传:程序编译后要上传(或者说下载、烧录)到开发板上运行。

③Ctrl+S:保存当前的项目进度。

④Ctrl+N:新建项目。

(2)代码区:编辑代码文件的区域。

(3)输出区:显示一些工作信息,比如编译程序时,可通过输出区的内容判断编译是否成功。

二、Arduino开发板基本介绍

(1)Arduino Uno R3官方板上的微控制器如下图红框所示,其上下(前后)有两排金属片引脚。

(2)将外接元器件通过导线插入板子上下两排端口,上下两排端口和微控制器的引脚是相连的,上图所示的端口分为三组,分别为数字输入/输出端口、模拟输入端口和电源端口(输入和输出是相对开发板而言的)。

(3)在数字输入/输出端口中有两个较为特殊的端口,这两个端口用于Arduino与电脑之间的数据传输,到目前为止,只要还有其它数字端口空闲,都不应该使用这两个端口。

(4)开发板通电后,标有“5V”的端口会提供5V的电压(当然这需要配合GND端口),标有“3.3V”的端口会提供3.3V的电压(当然这也需要配合GND端口)。

三、Arduino程序概述

1、初步认识Arduino程序

(1)Arduino程序使用C++进行编写,在学习Arduino之前建议先学习C++(最好是体系地学习),下面虽然会包含关于C++的一些知识,但不会介绍得很详细。

(2)程序注释:

①“//”后面跟着的是单行注释,单行注释可以跟在一行代码之后,也可以另起一行在开头进行注释;用“/* */”括起来的是多行注释。

②所有注释在编译时都会被去掉,不会影响程序本身的功能。

(3)在新建项目时,第一个代码文件总是会提供两个函数,其函数名分别为setup和loop,它们作为函数,其代码的特点是函数名右侧总有两个小括号,且后面会跟着一对大括号(或者说花括号),大括号内部则是一些函数代码(其它函数的定义代码亦是如此)。

2、变量

(1)一个变量分为变量名和变量值两部分,变量名用于访问变量,它对一个变量来说是不可变的,而一个变量的变量值在一般情况下都是可变的(但比如常变量,其变量值不可变)。

(2)每个变量都会占用计算机的一部分内存,具体占用多少空间取决于变量的类型,常用的变量类型有整型、浮点型、字符型、布尔类型等。需要注意的是,Arduino开发板中的内存空间并不是很大,在定义变量时需要合理利用内存空间,尽可能地减少内存浪费。

(3)变量的命名规则:

①只能由字母(区分大小写)、数字和下划线组成。

②开头可以是字母或下划线,不可以是数字或者其它字符。

③不能与关键字同名。(值得一提的是,在Arduino IDE中,HIGH代表1、LOW代表0,即代表高电平与低电平,它们也算是关键字,给变量命名时不能命名为HIGH和LOW)

(4)为了增加程序的可读性,变量的命名最好有实际意义,比如一个变量用来记录当前温度,则可将其命名为“current_Temperature”。

(5)在定义变量时可同时对其进行初始化,格式如下:

<变量类型> <变量名> = <变量值>;   //无需初始化则省略“ = <变量值>”即可

3、程序结构

(1)根据“文件”→“示例”→“01.Basics”→“Blink”打开示例程序,该程序的功能是让开发板上的一个LED灯闪烁,闪烁周期为两秒。

//给开发板通电后或者按下复位按钮后,setup函数马上运行且仅运行一次,适合做一些初始化操作
void setup() 
{
  //初始化LED_BUILTIN数字引脚为输出模式
  pinMode(LED_BUILTIN, OUTPUT);
}
 
//在开发板通电后,loop函数会反复地运行,适合做一些带有循环性质或监测性质的操作
void loop() 
{
  digitalWrite(LED_BUILTIN, HIGH);  // 点亮LED(将引脚设置为高电平-HIGH)
  delay(1000);                       // 等待1秒
  digitalWrite(LED_BUILTIN, LOW);   // 熄灭LED(将引脚设置为低电平-LOW)
  delay(1000);                       // 等待1秒
}

(2)setup函数会在给开发板通电后或者按下复位按钮后立刻执行一次,且仅执行一次,适合做一些初始化操作,比如对引脚进行控制或读取其电平前都需要对引脚进行初始化,这个操作就可以在setup函数内进行;loop函数会在给开发板通电后反复执行,适合做一些带有循环性质或监测性质的操作,比如控制电机旋转或者测量当前温度等。

4、变量操作

(1)修改上面打开的Blink程序,将其下载到板子上后,板子上的LED灯会进行闪烁,但每闪烁一次,闪烁周期就会增加(不考虑delayTime超出整型变量取值范围的情况)。

int delayTime;   //创建一个全局变量(默认初始化为0)

void setup() 
{
  // 初始化LED_BUILTIN数字引脚为输出模式
  int delayTime = 10000;   //创建一个局部变量
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() 
{
  //这里的delayTime与steup函数中的delayTime无关,它访问的是全局变量
  delayTime = delayTime + 1000;     //赋值表达式,将delayTime + 1000的计算结果赋给delayTime
  digitalWrite(LED_BUILTIN, HIGH);  //点亮LED(将引脚设置为高电平)
  delay(delayTime);                 //等待delayTime毫秒
  digitalWrite(LED_BUILTIN, LOW);   //熄灭LED(将引脚设置为低电平)
  delay(delayTime);                 //等待delayTime毫秒
}

(2)对于每个变量都有其对应的作用域:

①不在函数内定义的变量是全局变量,其作用域是整个程序,在任何地方都能访问该全局变量。

②在函数内(或者说代码块,也就是一对花括号内的代码)定义的变量是局部变量,其作用域由离它最近的外层花括号指示,比如在loop函数内定义的变量,它最多只能在loop函数内使用。

③作用域没有交集的两个变量可以同名,当然,作用域有交集的两个变量也可以同名,但这种情况有点复杂,应尽量避免这种代码的产出。

5、程序函数

(1)Arduino IDE已经写好了一些函数供程序员调用,这些函数可以在Arduino的官网上查看使用说明

(2)上面的示例程序中用到的函数:

①pinMode():通过pinMode()函数可以将Arduino的引脚配置为三种模式,分别是输出(OUTPUT)模式、输入(INPUT)模式和输入上拉(INPUT_PULLUP)模式,值得一提的是,对引脚进行控制或读取其电平前都需要对引脚的模式进行配置

[1]程序中的“LED_BUILTIN”是指开发板上LED灯的引脚,不同开发板的LED灯对应的引脚号可能不同,程序编译时会根据开发板的型号判断“LED_BUILTIN”应为多少。

[2]pinMode有两个参数,第一个是引脚号,第二个引脚的模式,其中输入/输出是相对微处理机而言的,上面的示例中将引脚配置为输出模式,即微处理机可以控制引脚的电平

[3]若配置引脚为输入上拉模式,在引脚没有任何输入时,认为引脚输入高电平若配置引脚为输入模式(浮空输入模式),在引脚没有任何输入时,引脚为高阻态

②delay():有且仅有一个参数,用于暂停程序运行,暂停时间可以由delay函数的参数进行控制,单位是毫秒。

③digitalWrite():有两个参数,第一个参数用于指示数字引脚,第二个参数用于指示高电平/低电平,其作用是将数字引脚写HIGH(高电平)或LOW(低电平),前提是该引脚需要通过pinMode()设置为输出模式(OUTPUT)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1798130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编程规范-代码检测-格式化-规范化提交

适用于vue项目的编程规范 – 在多人开发时统一编程规范至关重要 1、代码检测 --Eslint Eslint&#xff1a;一个插件化的 javascript 代码检测工具 在 .eslintrc.js 文件中进行配置 // ESLint 配置文件遵循 commonJS 的导出规则&#xff0c;所导出的对象就是 ESLint 的配置对…

SG3225EEN贴片差分晶振可实现高频高精度的要求

在高速通信和高性能电子设备的发展中&#xff0c;高频高精度时钟源的需求日益增加。SG3225EEN贴片差分晶振以其出色的性能&#xff0c;满足了这一需求&#xff0c;成为这些应用领域的理想选择。SG3225EEN贴片差分晶振采用先进的制造工艺&#xff0c;提供高精度和低抖动的时钟信…

005.FashionMNIST数据集简介

一、FashionMNIST数据集简介 FashionMNIST数据集&#xff0c;作为经典的MNIST数据集的现代替代品的数据集&#xff0c;是衣物分类数据集&#xff0c;由Zalando&#xff08;一家德国的在线时尚零售商&#xff09;发布。 FashionMNIST数据集和MNIST相比。图片尺寸相同&#xff0c…

超声波风速仪—快速捕捉气象变化

TH-WQX2超声波风速仪&#xff0c;特别是在风力发电中作为风速风向仪的应用&#xff0c;是一种基于超声波原理测量风速和风向的设备。以下是对其特点、技术参数和应用的详细介绍&#xff1a; 特点 高精度测量&#xff1a;超声波风速风向仪利用超声波在空气中的传播速度随风速变化…

2024下《系统集成项目管理工程师》50个高频考点汇总!值得收藏

宝子们&#xff01;5月软考考完了&#xff0c;终于可以考系统集成了&#xff01; 整理了50个高频考点&#xff0c;涵盖全书90%考点&#xff0c;先把这个存下&#xff01;再慢慢看书&#xff0c;边看书边背这个 1、信息安全的基本要素有&#xff1a; &#xff08;1&#xff09…

爬取股票数据python

最近在搜集数据要做分析&#xff0c;一般的数据来源是一手数据&#xff08;生产的&#xff09;和二手数据&#xff08;来自其他地方的&#xff09;。 今天我们爬取同花顺这个网站的数据。url为&#xff1a;https://data.10jqka.com.cn/ipo/xgsgyzq/ 话不多说直接上代码。有帮…

前端框架前置知识之Node.js:fs模块、path模块、http模块、端口号介绍

什么是模块&#xff1f; 类似插件&#xff0c;封装了方法 / 属性 fs 模块- 读写文件 代码示例 // 1. 加载 fs 模块对象 const fs require(fs) // 2. 写入文件内容 fs.writeFile(./test.txt, hello, Node.js, (err) > {if (err) console.log(err) //若 err不为空&#xf…

26-LINUX--I/O复用-select

一.I/O复用概述 /O复用使得多个程序能够同时监听多个文件描述符&#xff0c;对提高程序的性能有很大帮助。以下情况适用于I/O复用技术&#xff1a; ◼ TCP 服务器同时要处理监听套接字和连接套接字。 ◼ 服务器要同时处理 TCP 请求和 UDP 请求。 ◼ 程序要同时处理多个套接…

工业无线通信解决方案,企业在进行智能化升级改造

某大型制造企业在进行智能化升级改造,需要将分布在各个车间的数控机床、自动化生产线、AGV小车等设备连接到云端,实现设备的远程监控、数据采集分析等功能。之前工厂内部是用工业以太网连接,存在布线难、成本高、灵活性差等问题。 在了解客户需求后,我司星创易联的工程师建议客…

png怎么变成jpg?教你3种方法一键批量转换

png怎么变成jpg&#xff1f;PNG转JPG在图像处理中扮演着重要的角色。除了能够显著减小文件大小&#xff0c;使图像更易于分享和传输外&#xff0c;这种转换还能确保图像在各种平台和设备上都能得到良好的展示效果。无论是网站加载速度的优化&#xff0c;还是移动设备上的流畅浏…

教师常用小程序分享

和大家分享几款超级实用的教学小程序&#xff0c;不仅能够提高我们的办公效率&#xff0c;还能让我们的教学生活变得更加轻松有趣。 腾讯文档&#xff1a;云端协作的利器 教学协作是必不可少的。腾讯文档小程序&#xff0c;就是云端协作的利器。支持多人在线编辑文档&#xff…

在Obsidian中插入目录的解决方案

常见的方案有floating toc插件。但是这个插件与另一个用于给导出pdf添加书签的插件Better Export PDF不兼容。 因此推荐另一个解决方案&#xff1a;Dynamic Table of Contents 此插件没有上架到社区插件市场&#xff0c;需要手动去github下载安装 GitHub - Aidurber/obsidia…

Stable diffusion采样器详解

在我们使用SD web UI的过程中&#xff0c;有很多采样器可以选择&#xff0c;那么什么是采样器&#xff1f;它们是如何工作的&#xff1f;它们之间有什么区别&#xff1f;你应该使用哪一个&#xff1f;这篇文章将会给你想要的答案。 什么是采样&#xff1f; Stable Diffusion模…

加密软件好用的是哪个?为什么这么多人说迅软DSE加密软件好用?

加密软件顾名思义就是用来对机密文件进行加密保护的&#xff0c;防止未经授权的人查看和篡改&#xff0c;保护公司的重要信息&#xff0c;预防泄露的事件发生&#xff0c;由此可见运用加密软件是有用的。那么&#xff0c;问题又来了哪款加密软件好呢&#xff1f;请看一下介绍。…

MySQL学习十:常用函数与常见题型总结(持续更新中)

目录 一、常用函数1.1 left 和 right 函数1.2 first_value 函数1.3 timestampdiff 函数1.4 datediff 函数1.4 date_sub 和 date_add 函数 二、常见题型2.1 查询新登录用户总体的次日留存率&#xff08;第一天新登录的总体用户&#xff0c;第二天再次登录的总体用户&#xff09;…

Docker部署深度学习模型

基础概念 Docker Docker是一个打包、分发和运行应用程序的平台&#xff0c;允许将你的应用程序和应用程序所依赖的整个环境打包在一起。比如我有一个目标检测的项目&#xff0c;我想分享给朋友&#xff0c;那么他首先需要在自己的电脑上配置好显卡驱动、CUDA、CuDNN&#xff…

NC56 入库失败提示负库存解决方法

前言 公司的 NC ERP 接入了第三方系统进行出入库单据管理。用户反馈提交入库单据时、NC ERP 报错【负库存或辅数量方向不一致】。于是进行排查和解决。 操作环境 NC ERP V56 。操作系统 Windows 11 &#xff0c;数据库 Oracle DB 。 操作步骤 1、查询 NC “收发存汇总表”…

前端 | 燃尽图绘制

文章目录 &#x1f4da;实现效果&#x1f4da;模块实现解析&#x1f407;html&#x1f407;css&#x1f407;javascript &#x1f4da;实现效果 &#x1f4da;模块实现解析 &#x1f407;html 搭框架<div id"LINE2"><div id"cloudtitle">TED…

抖音电商课程(持续更新...)

01 客户成交方式 1 直播间载体 冲动消费&#xff08;感性&#xff09; 团队配合好&#xff0c;主攻直播间。 客单价越高&#xff0c;对直播间的依赖性越强。进直播间建立强依赖关系。 2 短视频 / 图文载体 用户处于理性和感性之间。 擅长拍摄、擅长内容输出&#xff0c;…

搭建电商项目||购物商城||APP|小程序|电商独立站系统如何接入JD商品

京东商品采集的步骤和应用场景可以归纳如下&#xff1a; 一、采集步骤 注册账号&#xff1a;首先&#xff0c;需要在京东开放平台注册一个开发者账号。创建应用&#xff1a;登录开放平台后&#xff0c;创建一个应用以获取API密钥和应用凭据。获取权限&#xff1a;根据所需的服…