Arduino学习笔记2023年11月30日

目录

1 编程软件下载

官网链接:https://www.arduino.cc/

下载链接:https://www.arduino.cc/en/software

软件下载过程中,仅需要登陆Arduino的官网即可,并不需要注册账号。根据自己电脑情况按下图所示去选择下载文件。下载过程中选择仅下载或者捐款。

安装包下载完成后,无需激活等操作,可以直接打开使用,第一次打开时,启动时间较长,耐心等待即可。

软件打开后,可以在首选项中更改系统语言为中文简体(软件界面过于简单,此处不在详细描述,自行探索。)

2 代码结构

Arduino的编程时,必然会存在以下两个函数。具体详细功能详见下述代码。

c 复制代码
void setup() {
  // put your setup code here, to run once:
  // 该函数的代码只在上电后运行一次,这里一般写初始化代码。
}

void loop() {
  // put your main code here, to run repeatedly:
  // 这个函数相当于大循环,里面的代码会循环执行。
}

3 IO引脚控制

3.1 引脚初始化

函数原型:

c 复制代码
pinMode(uint8_t pin, uint8_t mode);

使用示例:

c 复制代码
pinMode(2 , OUTPUT);
参数 说明 示例
uint8_t pin 引脚号 0、1、2......
uint8_t mode 引脚模式 <见下表3.2>

表3.2

模式参数 说明
OUTPUT 输出模式
INPUT 输入模式
INPUT_PULLUP 上拉输入

当IO模式设置为模拟量/数字量输入模式,模拟量/数字量输出时,均可分别设置为OUTPUT INPUT,并无其它代码区分。

3.2 引脚使用

数字量输出

函数原型 :

c 复制代码
void digitalWrite(uint8_t pin, uint8_t val);

使用示例:

c 复制代码
digitalWrite(1,HIGH);
digitalWrite(1,LOW); 

数字量输入

函数原型 :

c 复制代码
int digitalRead(uint8_t pin); // 返回值:HIGH,LOW

使用示例:

c 复制代码
int a;
a = digitalRead(5);

模拟量输出

函数原型 :

参数val设定范围:0-255

c 复制代码
void analogWrite(uint8_t pin, int val);

使用示例:

c 复制代码
analogeWrite(2,125); // 设定值:0-255

模拟量输入

函数原型 :

返回值范围:0-1023

c 复制代码
int analogRead(uint8_t pin);

使用示例:

c 复制代码
int val;
val = analogRead(3); // 设定值:0-255

注: 带~ 标识的引脚才可以做模拟输出

4 串口

串口初始化

c 复制代码
Serial.begin(9600); // 串口初始化,参数为波特率

串口输出

c 复制代码
Serial.println("123"); //自带回车效果
Serial.print("456464");
Serial.print(55,BIN); // 	二进制输出55这个数值 参数还可以是DEC十进制,HEX十六进制

串口输入

读取一个字节,没有数据时,返回的是-1;

c 复制代码
  a = Serial.read();

检测串口数据

c 复制代码
int a;
a = Serial.available(); // 检测控制器是否接收到数据,返回值为等待读取的数据字节数。没有数据就返回0

5 外部中断

函数原型

c 复制代码
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);

参数说明:

1、uint8_t interruptNum:中断号。

UNO 版本只有两个外部中断。

型号 中断0 中断1
UNO pin 2 pin 3

2、userFunc:中断处理函数,该函数属于自定义函数,定义时,不能有返回值和参数。

3、mode :中断模式。

参数 模式
LOW 低电平触发
CHANGE 电平变化触发
RISING 上升沿触发
FALLING 下降沿触发

函数示例:

c 复制代码
void setup() {
  Serial.begin(9600);
  attachInterrupt(0,set,LOW); // 写在初始化函数中
}
// 中断处理函数
void set()
{
  Serial.print("564");  
}

6 函数

下面介绍一些可以直接调用的内部函数,不用加头文件。

6.1 映射区间函数

函数原型:

c 复制代码
long map(long x, long in_min, long in_max, long out_min, long out_max);

参数:映射值,映射的旧区间,映射的新区间

返回值:为映射到新区间的值。

c 复制代码
// 映射值,映射的旧区间,映射的区间。返回值为新映射值。
y = map(val,0,1023,0,255);

6.2 延时函数

c 复制代码
delay(1000); // 单位:ms
delayMicroseconds(10); // 单位:us

待续......

总结

本人在学习过51单片机和STM32后,偶尔想到接触一下Arduino开发板,学习时间并不长,仅两天。现根据学习感受对51/32和Arduino做一些比较。

类别 Arduino 51/32单片机
开发软件 官网直接下载,无需激活,安装可用 官网下载,需要激活
编程语言 C/C++语言 C语言
编程特点 大量的可用开源库文件,基础库无需包含可直接使用 需要自己添加使用的库文件,并且需要自己include
使用特点 关于引脚,串口,PWM,AD/DA等资源可以直接调用函数使用,无需配置 需要配置外设工作方式,甚至时钟
使用特点 关于常用的一些模块器件通过引入库文件后直接调用函数使用 需要写时序和控制方式,读写命令数据函数
开发板特点 引脚数量较少 根据不同型号选择不同引脚功数量的器件
相关推荐
_落纸2 天前
三大基础无源电子元件——电阻(R)、电感(L)、电容(C)
笔记
Alice-YUE2 天前
【CSS学习笔记3】css特性
前端·css·笔记·html
2303_Alpha2 天前
SpringBoot
笔记·学习
萘柰奈2 天前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽2 天前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat
好奇龙猫2 天前
日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
学习
晶振厂家-晶发电子2 天前
晶振在5G时代的角色:高精度时钟的核心支撑
单片机·嵌入式硬件·5g·晶振·电子元器件·晶振知识
F137298015572 天前
WD5030A 芯片,12V降5V,输出电流12A,电路设计
stm32·单片机·嵌入式硬件·汽车·51单片机
向阳花开_miemie2 天前
Android音频学习(十八)——混音流程
学习·音视频
小莞尔2 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机