【嵌入式系统与入门】Day01 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,保持熄灭状态
	//以此循环,灯处在亮暗交替的 状态
}

猜你喜欢

转载自blog.csdn.net/m0_73612212/article/details/130266695