Arduino入门2——常用函数及用法

Arduino入门2——串口驱动函数及用法

上期,我们简单的认识了一下Arduino,浅浅的入了个门,这一期我们介绍以下Arduino串口常用的函数及用法

1.IO

常用串口库函数如下:

函数名用法及解析
pinMode()用于IO口初始化
digitalWrite()对IO口写入高低电平
digitalRead()读取IO口的高低电平
analogReference()配置AD采集的参考电压
analogWrite()对应IO口实现AD转换,精度可达10位
analogRead()对应IO口实现DA转换,精度为8位

下面是对应的一些用法:

  1. pinMode()
    在这里插入图片描述

  2. digitalWrite()
    在这里插入图片描述

  3. digitalRead()
    在这里插入图片描述

  4. analogReference()
    在这里插入图片描述

  5. analogWrite()
    在这里插入图片描述

  6. analogRead()

在这里插入图片描述

2.串口

常用串口库函数如下:

函数名用法及解析
Serial.begin(9600)用于串口初始化,参数为波特率
Serial.print(val,fromat)串口输出函数,val为输出的内容,fromat为输出格式,可以省略,省略时默认为十进制
Serial.println(val,fromat)串口输出函数,相对于Serial.print的区别是自带换行
Serial.write(val)串口输出函数,发送单个字节或字符串
Serial.available()用于检测串口是否接收到数据,返回值为读取数据的长度
Serial.read()串口读取函数,每次读取一个字节并返回,当串口没有接收到数据时,返回-1,读取完数据后,下次调用会读取下个字节
Serial.parselnt()串口解析函数,用来读取接收到的数据中的整数,在读取到整数后读取到字符会停止,读取后缓冲区内的内容会被清除。比如读取的内容为123adc456,则需要读取两次,第一次读取到123.第二次读取adc456,但由于adc为字符,所有只读取456。
Serial.parseFloat()也是串口解析函数,用来读取小数

下面是对应的一些用法:

  1. 示例1:
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);   //串口初始化
}

void loop() {
  // put your main code here, to run repeatedly:

  Serial.print("Hello");   //发送字符串
  Serial.print('A');       //发送字符
  Serial.println(25);        //默认以10进制发送数字25
  Serial.println(25,DEC);        //十进制发送数字25 -》 25
  Serial.println(25,BIN);        //二进制发送数字25 -》 11001
  Serial.println(25,OCT);        //八进制发送数字25 -》 31
  Serial.println(25,HEX);        //八进制发送数字25 -》 19
  Serial.print(1.2345);    //发送1.23,默认保留2位小数,四舍五入
  delay(50000);
}
  1. 结果1:
    在这里插入图片描述
  2. 示例2:
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);   //串口初始化
}

void loop() {
  // put your main code here, to run repeatedly:

  for(int i = 0 ;i<Serial.available();i++)  //判断是否介绍到数据,
  {
    Serial.write(Serial.read()); //依次打印介绍的数据
    Serial.println();            //换行
    delay(500);                  // 延时,让显示更直观

  }

}
  1. 结果2:
    在这里插入图片描述
  2. 示例3:
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);   //串口初始化
}

void loop() {
  // put your main code here, to run repeatedly:

  for(int i = 0 ;i<Serial.available();i++)  //判断是否介绍到数据,
  {
    Serial.print(Serial.parseInt()); //依次打印接收的整数
    Serial.println();            //换行
    delay(500);                  // 延时,让显示更直观

  }
  1. 结果3:
    在这里插入图片描述
  2. 建立开发板与电脑串口连接,像电脑发送姓名、年龄、身高等信息
//1. 建立开发板与电脑串口连接,像电脑发送姓名、年龄、身高等信息
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.write("naem: 不想写代码的我");
  Serial.println();
  Serial.write("age: 18");
  Serial.println();
  Serial.write("height: 180");
  Serial.println();
  delay(1000);
}
  1. 实现通过串口监视器给开发板发送信息,在把接收的信息发送回去
//实现通过串口监视器给开发板发送信息,在把接收的信息发送回去
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int i =0; i<Serial.available();i++)
  {
    Serial.write(Serial.read());
    Serial.println();
    delay(500);

  }

  
}
  1. 实现加法计算器
//实现加法计算器,
int Add(int a,int b)
{
  Serial.print(a);
  Serial.print('+');
  Serial.print(b);
  Serial.print('=');
  Serial.println(a+b);
 return a+b;
}
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available())
  {
    Add(Serial.parseInt(),Serial.parseInt());

  }

3.中断

常中断函数如下:

函数名用法及解析
attachInterrupt()中断开启函数
digitalPinToInterrupt()获取对应引脚中断号的函数,返回值为中断编号
detachInterrupt()关闭引脚对应的中断

下面是其对应的用法:

/*
attachInterrupt()中断开启函数,
第一个参数是开启的中断号,不同引脚、不同开发板对应的中断号不同,这一点需要注意
第二个参数是对应中断的服务函数,需要自己定义,必须是无参数无返回值类型
第三个是中断的触发方式,一个四种:LOW,低电平触发;CHANGE,电平变化触发;FALLING,下降沿触发;RISING,上升沿触发;
此外,还有一种触发方式,HIGH,只有 Due, Zero and MKR1000这些板子支持。

注:不同开发板引脚与中断号对应如下:
 中断号:     0       1     2     3     4     5
  UNO       引脚2    3      
  Mega2560  引脚2    3     21    20    19     18
  Leonardo  引脚3    2     0      1
  Due       ------------所有IO口----------------

digitalPinToInterrupt(pin):获取对应引脚中断号的函数,返回值为中断编号

detachInterrupt(pin);关闭引脚对应的中断,一般不常用

*/
int i = 0;
void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN,OUTPUT);       //设置LED输出模式
  pinMode(2,OUTPUT);                // 定义引脚2,作为输入,将引脚2和引脚3通过杜邦线相连,通过对引脚2写入数据触发引脚3的中断
  digitalWrite(2,LOW);              //设置引脚2初始电平为低电平
  digitalWrite(LED_BUILTIN,LOW);    //熄灭LED
  attachInterrupt(digitalPinToInterrupt(3),function,CHANGE);  //开启引脚3对应的中断
 
}

void loop() {
  // put your main code here, to run repeatedly:
  i++;  
  digitalWrite(2,i%2);  //通过i的值,改变引脚2,进而改变引脚3的电平,使其产生中断
  delay(500);           //每500ms产生一次中断
}

void function()
{
  digitalWrite(LED_BUILTIN,i%2);    //闪烁LED。
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想写代码的我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值