0%

Arduino学习记录

学习动机

最近对esp32接触一段时间后发现esp32兼容Arduino的开发模式,鉴于Arduino容易上手,对于一般的项目来说够用,且在国际间比较流行通用,所以决定入门Arduino

学习前的准备

  • Arduino IDE下载安装
  • 开发板元器件等
  • 安装esp32开发板资料
  • C/C++语言基础

常用基本语句

  1. IO端口高低电平数字输出

1
2
3
4
5
6
7
8
9
10
11
12
/*初始化设置,此函数只运行一次*/
void setup(){
pinMode(13, OUTPUT); /*设置引脚模式*/
}

/*此函数循环运行*/
void loop(){
digitalWrite(13, HIGH); /*设置数字输出*/
delay(1000); /*毫秒级延时*/
digitalWrite(13, LOW);
delay(1000);
}

不得不说这个比之前用的stm32单片机开发简单多了,许多内部实现原理都无需深究,非常适合一般项目应用。

  1. IO端口数字输入

总的来说和上面的差不多,只不过将pinMode()函数的第二个参数改为INPUT

同时,使用digitalRead()函数代替digitalWrite()

1
2
3
4
5
6
7
8
9
10
11
/*初始化设置,此函数只运行一次*/
void setup(){
pinMode(13, INPUT); /*设置引脚模式*/
}

/*此函数循环运行*/
void loop(){
digitalRead(13); /*设置数字输入*/
delay(1000); /*毫秒级延时*/
digitalRead(13);
delay(1000);
  1. 串口配置

1
2
3
4
5
6
7
8
void steup(){    
Serial.begin(115200); /*设置串口波特率*/
}

void loop(){
Serial.println('Hello wrold'); /*串口打印(自动换行)*/
delay(2);
}
  1. 计算机通过串口发送数据

    使用计算机向串口发送数据时,数据会先缓存至”串口接收缓存”中,可以通过Serial.available()检查接收缓存是否为空,为空时返回0,不为空时返回缓存字节数,如下程序段可以返回串口接收的数据

    1
    2
    3
    4
    5
    6
    if(Serial.available()>0){  /*先判断是否有数据在数据缓存区*/
    char serialData = Serial.read(); /*接受到的数据为字符型数据*/
    int serSData = Serial.parseInt(); /*分析串口接受到的整数信息并赋值给serData*/
    Serial.println(serialData);
    Serial.println(serData);
    }
  2. 输入上拉模式

Arduino可以使用pinMode(pin, INPUT_PULLUP)配置为输入上拉模式,该模式下,在无外部电路影响的情况下,引脚电位被拉高

操作方法:在主程序setup()函数中写入pinMode(pin, INPUT_PULLUP)即可

  1. IIC通讯

IIC通讯协议原理不在此赘述

Arduino可以通过导入Wire库来实现IIC通讯

具体到代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# include<Wire.h>  /*包含Wire库*/

/*以下代码仅作为学习记录展示,不具有可用性*/
void setup(){
Wire.begin(address) /*IIC初始化,无输入时默认以Master形式加入通讯*/
}

void loop(){
Wire.beginTransmission(address); /*开启IIC通讯,address参数为器件的七位地址*/
Wire.write(value); /*主机发送数据给从机*/
Wire.endTransmission(); /*结束传输并返回数据*/

/*
主设备请求从设备一个字节,
这个字节可以被主设备用read()或available()接受,
addtess : 7位的器件地址
quantity : 请求得到的数量
stop :
布尔形,‘1’ 则在请求结束后发送一个停止命令,并释放总线。
‘0’则继续发送请求保持连接*/
Wire.requestFrom(address, quantity, True);

}

以上即是目前项目中所要用到的关于Arduino相关知识。