【嵌入式系统与入门】Day01 Arduino开发板

news2024/11/13 11:47:21

文章目录

  • 1. Arduino概述
    • 1.1 是什么?
    • 1.2 分类
    • 1.3 组成
    • 1.4 电源
  • 2. Arduino软件开发流程
    • 2.1 明确接口函数
    • 2.2 连接板子
    • 2.3 打开项目【或者自己编程序】
    • 2.4 选择板子类型
    • 2.5 选择通讯端口
    • 2.6 下载程序
    • 2.7. 编写程序代码——程序架构
  • 3. 较常用的封装函数
    • 3.1 `pinMode(pin, mode)` 函数
    • 3.2 `digitalWrite(pin, value)` 函数
    • 3.3 `digitalRead(pin)` 函数
    • 3.4 `analogWrite(pin, value)`函数
    • 3.5 `analogRead(pin)`函数
    • 3.6 `delay(ms)` 函数
    • 3.7 `delayMicroseconds(us)` 函数
  • 4. 嵌入式技术基础实验平台
  • 5. 注意事项
  • 6. 点亮三色灯arduino代码示例

1. Arduino概述

1.1 是什么?

  • Arduino是一个简单易用的开源电子平台
  • Arduion作用:
    • 【输入方面】可读取开关或传感器的数据(比如说读取盲盒的感应数据)
    • 【输出方面】控制电机转动、LED灯的开关(经典的就是小车比赛中小车的驱动)
  • 实现:借助软件编程来控制Arduino满足所需要的功能
  • 开发环境:基于Arduino IDE
  • 优势:
    • 所有的Arduino板是完全开源的,准许用户独立使用来满足他们不同需求
    • 简化了微控制器的工作过程,将微控制器编程的细节进行封装,封装成易使用的包
    • 在不需要全部了解微处理器底层工作原理和过程的基础上,完成设计

1.2 分类

开发板分为入门级、高级类、物联网类、教育类、可穿戴类等五大类

  • 入门级:UNO(较常用)、MICRO、NANO、MINI等
  • 高级类:MEGA(较常用)、ZERO、DUE等
  • 物联网类:YUN、ETHERNET、TIAN等
  • 教育类:CTC 101、ENGINEERING KIT等
  • 可穿戴类:GEMMA、LILYPAD ARDUIUNO USB、LILYPAD ARDUINO MAIN BOARD等

Arduino开发板种类很多,我们主要学习Arduino UNO Arduino Mega 2560

在这里插入图片描述

1.3 组成

  1. 硬件(包括微控制器、电路板等)
  2. 软件(编程接口和语言)
    在这里插入图片描述
    在这里插入图片描述
  • 小板 UNO组成:
    在这里插入图片描述
  • 大板 2560组成:
    在这里插入图片描述

1.4 电源

  1. 三种供电方式
  • USB供电 5VDC
  • 电源插座 7-12VDC
  • Vin引脚 7-12VDC
  1. 输入输出、开发板引脚序号
    在这里插入图片描述
    在这里插入图片描述

2. Arduino软件开发流程

准备开发套件:

  • 开源电路板Arduino
  • USB下载开发Cable A to B
  • 一台计算机
  • 软件开发工具Arduino IDE

2.1 明确接口函数

  • Arduino IDE对数据类型和main()函数进行封装,在该函数中形成了两个接口函数setup()loop()
    • 首先执行setup(),多用于设置引脚和初始化
    • setup()执行后,loop()不断地循环执行该函数体内的语句

2.2 连接板子

  • 用USB数据线【USB数据线兼有供电和数据通讯的功能】将Mega2560板与电脑的USB口相连接,连线后电源指示灯点亮(绿色)

2.3 打开项目【或者自己编程序】

  • Arduino IDE中封装大量示例代码,在软件库中选择所需要的代码,在下拉菜单中点击文件(File)示例(Examples)0.1BasicsBlink,打开LED闪烁样例。也可以点击文件(File)打开(Open),选择好编辑好的后缀为.ino的源文件

2.4 选择板子类型

  • 点击工具(Tools)开发板(Board),在开发板列表中单击选中Mega2560
    在这里插入图片描述

2.5 选择通讯端口

  • 点击工具(Tools)端口(Serial Port)菜单,选择开发板的通讯端口(COM1 和 COM2 通常是硬件串口的保留端口)。
  • 断开连接后消失的那个串口即是Arduino板的映射串口。
    在这里插入图片描述

2.6 下载程序

  • 点击程序中右箭头(下图所示)的按钮,等待几秒,看到板子RXTX指示灯在闪烁。
  • 若下载成功,状态栏会出现Done uploading的提示
  • 若编译错误,则需要修改程序
    在这里插入图片描述

在这里插入图片描述

2.7. 编写程序代码——程序架构

  • 根前面所讲,setup()首先执行,且仅执行一次,来设置引脚和初始化等准备工作,接着loop()不断执行该函数体的语句,执行完后又回到第2.2继续循环

3. 较常用的封装函数

在C/C++的基础上,封装库提供了丰富的函数,可以直接对数字或者模拟引脚进行操作

3.1 pinMode(pin, mode) 函数

  • pinMode为引脚模式,设置数字引脚方向为输入或输出
  • 参数1pin为引脚号0 ~ 13(大板的话为0 ~ 53) 【用为对哪个引脚进行定义】
  • 参数2mode 为INPUT、INPUT PULLUP 或 OUTPUT 三者之一

    eg:
    - pinMode(13, OUTPUT); //数字13口定义为输出
    - pinMode(8, INPUT); //数字8口定义为输入
    - pinMode(9, INPUT_PULLUP); //数字9口定义成输入,内部上拉电阻

3.2 digitalWrite(pin, value) 函数

  • digitalWrite 为开关输出操作,设置数字引脚的输出值,将某引脚中赋成高电平或低电平
  • 参数1pin依旧为引脚号0 ~ 13(大板的话为0 ~ 53) 【用为对哪个引脚进行定义】
  • 参数2value为HIGH或LOW【若输出连接为灯的话,value决定于灯的亮灭】

eg:
digitalWrite(13, HIGH); //数字13口输出为高电平

3.3 digitalRead(pin) 函数

  • digitalRead为开关量输入操作,读取数字引脚的输入值
  • 参数pin为引脚号
  • value为HIGH或LOW

eg:
digitalRead(8); //从数字8读取信号,返回值为HIGH或LOW

3.4 analogWrite(pin, value)函数

  • analogWrite 为模拟量输出操作,当某些特定的数字引脚作为PWM(模拟量输出)时,设置PWM的输出值
  • UNO pin为3,5,6,9,10,11【6路】
  • 2560 pin为2 ~ 13【15路】
  • value 为0 ~ 255,输出的模拟电压与value成正比【8位DA,0 ~ 5V表示为0 ~ 255】

eg: analogWrite(3, 127); // 从模拟口3引脚输出127

3.5 analogRead(pin)函数

  • analogRead 为读取操作,读取模拟引脚的输入值
  • pin为A0 ~ A5(A15),返回值为0 ~ 1023(10位AD,0 ~ 5V表示为0 ~ 1023)

eg: analogRead(A0); //从模拟口A0读取数据

3.6 delay(ms) 函数

  • delay(ms) 为延时函数【单位ms】

eg: delay(1000); // 延时1000毫秒【即为1s】

3.7 delayMicroseconds(us) 函数

  • deayMicroseconds(us) 为更加精确的延时函数【单位us】

eg: delayMicroseconds(500); // 延迟500微秒【即为0.5ms】

4. 嵌入式技术基础实验平台

在这里插入图片描述
在这里插入图片描述
最上排的引脚,右侧写GGND的简写】,指0V,中间一排的引脚,最右侧写着VVCC的简写】,指5V;最下排是数字引脚,最右侧为Ssignal简写】,靠编号进行区分。

在这里插入图片描述

5. 注意事项

在这里插入图片描述

6. 点亮三色灯arduino代码示例

在这里插入图片描述

核心:通过高低电平控制灯的亮灭

int ledPin = 13; //定义一个名为ledPin的引脚,方便可读
void setup(){
	pinMode(ledPin, OUTPUT); //定义引脚ledPIn为输出
}
void loop(){
	digitalWrite(ledPin, HIGH); //将ledPin变为高电平--->灯发亮
	delay(1000); //延迟1s,保持发亮状态
	digitalWrite(ledPin, LOW); //将ledPin变为低电平--->灯熄灭
	delay(1000); //延迟1s,保持熄灭状态
	//以此循环,灯处在亮暗交替的 状态
}

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

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

相关文章

技术报告:Efficient and Effective Text Encoding for Chinese LLaMA AND Alpaca

技术报告:Efficient and Effective Text Encoding for Chinese LLaMA AND Alpaca IntroductionChinese LLaMAChinese AlpacaLora-Fine-tuning实验7Bpre- trainingInstruction-Tuning 13BPre-TrainingInstruct-Tuning Introduction 首先作者说了最近ChatGPT等模型在…

【SpringCloud】2、使用Nacos作为服务注册中心

1、项目搭建 首先&#xff0c;我们需要搭建一个 SpringCloud 微服务项目&#xff0c;后续的文章将基于此项目作为学习演示使用 1、创建 cloud-learn 目录&#xff0c;pom.xml 文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> &…

【数据统计】— 峰度、偏度、点估计、区间估计、矩估计、最小二乘估计

【数据统计】— 峰度、偏度、点估计、区间估计、矩估计、最小二乘估计 四分位差异众比率变异系数利用数据指标指导建模思路 形状变化数据分布形态峰度: 度量数据在中心聚集程度偏度 利用数据指标指导建模思路 参数估计点估计区间估计矩估计举例&#xff1a;黑白球&#xff08;矩…

修改键盘映射(注册表)Scancode Map

1.win R 打开 cmd命令框&#xff0c;输入regedit 2.赋值这个地址到蓝色框里&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 3.右键 ->新建->二进制值&#xff0c;命名为 Scancode Map 4.现在来讲解怎么使用这个二进制表修…

LC串联谐振回路

理想LC串联谐振回路 下图是理想的LC串联谐振回路&#xff0c;不考虑L C的等效电阻。理想的LC回路没有任何损耗。 理想LC串联谐振的回路阻抗为&#xff1a; 令虚部为0&#xff0c;就可求出谐振角频率W0 可得谐振角频率&#xff1a; 可得谐振频率&#xff1a; 因为 所以电…

计算机网络之运输层

协议 协议就是计算机与计算机之间通信的“约定”&#xff0c;既为规则&#xff0c;只有遵循这个约定&#xff0c;双方就可以进行通信。 进程之间的通信 从通信和信息处理的角度来看&#xff0c;运输层向上面的应用层提供通信的服务&#xff0c;属于面向通信的最高层&#xf…

Redis哨兵(非集群 Rrdis 的高可用性 )

Redis哨兵(非集群 Rrdis 的高可用性 ) 1. 什么是哨兵 吹哨人巡查监控后台 master 主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务 Redis哨兵在不使用Redis集群时为Redis提供高可用性 2. 作用 无人值守运维 3. 哨兵作为分布式系统 Redis S…

console.log(obj)不一定能的到obj当前的值

1.Log (anObject)的输出具有误导性; 只有在控制台中展开 > 时才能解析显示的对象的状态。它不是您在 console.log 对象时对象的状态。 相反&#xff0c;尝试 console.log (Object.keys ()) &#xff0c;或者甚至console.log(JSON.parse(JSON.stringify(obj))) &#xff0c;…

黑盒(功能)测试基本方法

1、黑盒测试的概念 1、什么是黑盒测试 &#xff08;1&#xff09;黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试&#xff0c;是一种从用户观点出发的测试。 &#xff08;2&#xff09;测试人员把被测程序当作一个黑盒子。 2、黑盒测试主要测试的错误类型有 &…

JVisualVM、Visual GC

JVisualVM JVisualVM Java VisualVM 是一款 JDK 自带免费的性能分析工具 public class JVisualVM {public static void main(String[] args) {Thread t1 new Thread(() -> {while (!Thread.currentThread().isInterrupted()) {}}, "JVisualVM测试子线程");t1.…

flinkcdc 动态的增加新的同步表到同一个作业中

背景 flinkcdc 2.0版本上线了一个新功能–支持动态加表这个是很有用的feature&#xff0c;本文介绍在开发中如何使用。 设想下假如你一个 CDC pipeline 监控了 4 张表&#xff0c;突然有天业务需求需要再加几张表&#xff0c;你肯定不想另起作业 (浪费资源)&#xff0c;那么这…

大数据——HDFS(分布式文件系统)

一&#xff0c;分布式系统概述 Hadoop的两大核心组件 HDFS&#xff08;Hadoop Distributed Filesystem&#xff09;&#xff1a;是一个易于扩展的分布式文件系统&#xff0c;运行在成百上千台低成本的机器上。HDFS具有高度容错能力&#xff0c;旨在部署在低成本机器上。HDFS主…

日撸 Java 三百行day34

文章目录 说明Day34 图的深度优先遍历1.思路2.代码3.总结1.在广度遍历中借助了队列2.在深度优先遍历借助了栈。 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a…

Android 开发之核心技术点——性能优化篇(带面试题)~

性能优化对于Android开发的重要性非常大。随着Android设备的不断升级&#xff0c;用户对应用的要求也越来越高&#xff0c;包括应用的运行速度、响应速度、流畅度等方面。如果应用的性能不能满足用户的需求&#xff0c;很可能会导致用户流失、差评以及应用被卸载等情况。 另外…

boot-admin整合flowable官方editor-app进行BPMN2.0建模

boot-admin整合flowable官方editor-app源码进行BPMN2.0建模 正所谓百家争鸣、见仁见智、众说纷纭、各有千秋&#xff01;在工作流bpmn2.0可视化建模工具实现的细分领域&#xff0c;网上扑面而来的是 bpmn.js 这个渲染工具包和web建模器&#xff0c;而笔者却认为使用flowable官…

2023零基础快速跟上人工智能第一梯队

写在前面&#xff1a;有关人工智能学什么&#xff0c;怎么学&#xff0c;什么路线等一系列问题。我决定整理一套可行的规划路线&#xff0c;希望帮助准备入门的朋友们少走些弯路。 下面我会推荐一个比较快速可行的学习模板&#xff0c;并附上我认为比较好的学习资料。 新手不建…

git使用规范文档

git使用规范文档 Git使用规范流程图 开发人员操作步骤&#xff1a; 第一步&#xff1a;clone代码 在你的本地代码库进行从远程仓库clone代码操作&#xff08;100%表示clone完成&#xff09; 进入项目文件&#xff0c;右键Git Bash Here 切换到你所进行开发的分支上 拉取该分…

JavaSE学习进阶day05_02 常见的数据结构和List接口

第三章 数据结构&#xff08;掌握&#xff09; 3.1 数据结构介绍 数据结构 : 数据用什么样的方式组合在一起。 科班出身的同学我想你对数据结构一点也不陌生&#xff0c;不知道你记不记得&#xff0c;当时学习数据结构的逻辑结构中的集合时&#xff0c;只是简单了解它&#…

hackathon 复盘:niche 海外软件工具正确的方法 6 个步骤

上周末&#xff0c;去参加了北京思否 hackathon&#xff0c;两天时间内从脑暴 & 挖掘软件 IDEA -> Demo 研发路演&#xff0c;这次经历让我难忘。这里我的看法是每个开发者圈友&#xff0c;都应该去参加一次 hackathon ~ 做 niche 软件正确的方法 这边先说结论&#xf…

vmware下Ubuntu系统中安装vscode

文章目录 前言&#xff1a;在线下载&#xff1a;离线下载包&#xff1a;配置C/C环境 前言&#xff1a; 这篇博客是为后面交叉编译程序放到树莓派上运行做的准备。同时也是自己在装过程中的一个记录。 在线与离线安装的唯一不同就是获取安装包是在线下载还是别的地方拷贝过来以…