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等资源可以直接调用函数使用,无需配置 需要配置外设工作方式,甚至时钟
使用特点 关于常用的一些模块器件通过引入库文件后直接调用函数使用 需要写时序和控制方式,读写命令数据函数
开发板特点 引脚数量较少 根据不同型号选择不同引脚功数量的器件
相关推荐
小幽余生不加糖1 分钟前
2025机器人细分应用领域全景分析:炒菜、送餐、洗餐、扫地机器人的技术突围战
学习·机器人
今天背单词了吗98042 分钟前
算法学习笔记:29.拓扑排序——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·笔记·算法·拓扑排序·排序
Se_ren_di_pity1 小时前
CS231n-2017 Lecture3线性分类器、最优化笔记
笔记·算法·机器学习
明早你自己说1 小时前
根据ARM手册,分析ARM架构中,原子操作的软硬件实现的底层原理
单片机·嵌入式硬件
2301_793121041 小时前
基于单片机电机转速检测测速报警设计
单片机·嵌入式硬件
DKPT1 小时前
Java设计模式之行为型模式(备忘录模式)应用场景分析
java·笔记·学习·设计模式·备忘录模式
呼叫冰河谷1 小时前
Unity学习笔记(五)——3DRPG游戏(2)
笔记·学习·unity
会编程的小孩6 小时前
stm32继电器使用方法
stm32·单片机·嵌入式硬件
岩中竹9 小时前
广东省省考备考(第四十八天7.17)——言语理解,资料分析(知识点回顾与题目训练)
笔记
gjf05_059 小时前
人该怎样活着呢?55
学习