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 分钟前
Spring Boot3零基础教程,Actuator 导入,笔记82
java·spring boot·笔记
WarPigs14 分钟前
Blender动画笔记
笔记·blender
Every exam must be1 小时前
10.27 JS学习12
开发语言·javascript·学习
崎岖Qiu1 小时前
【设计模式笔记11】:简单工厂模式优缺分析
java·笔记·设计模式·简单工厂模式
2501_938176881 小时前
远期合约和期权合约的区别是什么?
笔记
能工智人小辰1 小时前
VMamba: Visual State Space Model学习笔记
笔记·学习
woodykissme1 小时前
渐开线花键参数一般是怎么确定的?
学习·机械·齿轮·渐开线花键
Ligocious2 小时前
操作系统---第一章:2.操作系统的发展和分类
笔记
兆龙电子单片机设计2 小时前
【STM32项目开源】STM32单片机智能台灯系统
stm32·单片机·物联网·开源·毕业设计
sheepwjl2 小时前
《嵌入式硬件(十七):基于IMX6ULL的温度传感器LM75a操作》
单片机·嵌入式硬件·imx6ull·lm75a