Arduino提供了大量的基础函数,包括I/O控制时间函数中断函数、数学函数、串口通信函数等,这些基础函数使单片机系统开发不再有复杂的底层代码,使用者可以很方便的对板子上的资源进行控制。另外,Arduino还提供了许多关于这些基础函数的应用实例,这些例子程序可以在Arduino开发环境的Files-Examples中找到,从而大大降低了初学者的学习难度,缩短了单片机系统开发周期。


数字I/O口的操作

1、pinMode(pin,mode)函数

pinMode函数用于配置引脚为输入或者输出模式,它是一个无返回值的函数,一般放在setup()函数体重,先设置再使用。

pinMode函数由两个参数--pin 和 mode,pin参数表示要配置的引脚代号,以Arduino Uno为例,它的取值范围是0~13,也可以把模拟引脚(A0~A5)作为数字引脚使用,此时编号为14脚到19脚。mode参数表示设置的模式——INPUT输入模式或者OUTPUT输出模式,其中INPUT用于读取信号,OUTPUT用于输出控制信号。

配置数字引脚3位输出模式的语句如下所示:

pinMode(3,OUTPUT);

2、digitalWrite(pin,value)

digitalWrite函数的作用是设置引脚的输出电压为高电平或低电平,也是一个无返回值的函数,在使用该函数设置引脚之前,需要先用pinMode()函数交引脚设置为OUTPUT模式,因为数字口具有输入或输出两种状态,需要预先定义。

digitalWrite函数有两个参数---pin 和 value, pin 代表引脚,value代表输出的电平——HIGH(高电平)或LOW(低电平)。

配置数字引脚2的输出电平为高:

pinMode(2,OUTPUT);
digitalWrite(2,HIGH);

3、digitaRead(pin)

digitalRead函数的作用是获取引脚的电平情况,该函数返回值为int型———HIGH(高电平)或者LOW(低电平),在使用该函数时需要预先定义管脚INPUTmode。

digitalRead函数只有一个参数——pin,他表示所要获取的电压情况的引脚号,如果引脚没有连接到任何地方,那么将随机返回HIGH或者LOW。

获取4号管脚的电压情况语句:

pinMode(4,INPUT);
digitalRead(4);

模拟I/O接口的操作函数

1、analogReference(type)

analogReference函数的作用是配置模拟输入引脚的基准电压(即输入范围的最大值),它是一个无返回值的函数,只有一个参数type,type的选项有DEFAULT(默认)/INTERANL(内部)/INTERNAL1V1/INTERNAL2V56/EXTERNAL,,具体含义如下:

  • DEFAULT:默认5V或者3.3V为基准电压。
  • INTERANL:低电压模式,使用片内基准电压源
  • INTERNAL1V1:低电压模式,以1.1V为基准电压
  • INTERNAL2V56:低电压模式,以2.56V为基准电压。
  • EXTERNAL:扩展接口,以AREF引脚(0~5V)的电压为基准电压。

设置模拟输入引脚的基准电压默认的语句:

analogRefernece(DEFAULT);

2、analogRead(pin)

analogRead函数的作用是从指定的模拟引脚读取模拟量,读取周期为100微妙,即最大读取速度可达每秒10000次,参数pin表示读取的模拟输入引脚编号,返回值为int型(范围在0~1023)。

Arduino Uno主板有6个通道10位AD转换器,即精度为10位,返回值是0~1023,也就是说输入电压为5V的读取精度为5V/1024个单位,约定于每个单位0.049V(4.9mV)。输入范围和进度可以通过analogReference()进行修改。

如输入电压为a,那么获取的模拟量输入3的电压值为:

int potPin = 3;
int value = 0;
void setup()
{Serial.begin(9600);
}
void loop()
{value = analogRead(potPin) *a*1000/1023;    //输入电压为aSerial.println(value);
}

3、analogWrite(pin,value)

analogWrite函数的作用是通过PWM的方式将模拟值输入到引脚,即调用analogWrite函数后,相应的引脚会产生一个指定占空比的稳定方波(频率大约为490Hz),直到下一次调用该函数,可应用在LED亮度调节、电机调速控制等方面。

analogWrite函数是无返回值函数,有两个参数pin和value,参数pin表示输出PWM的引脚,这里只能选择函数支持的引脚,这个函数支持的引脚为3、5、6、9、10和11,参数value表示PWM占空比,因为PWM输出位数为8,所以其范围在0~255,对应占空比为0~100%,带PWM功能的引脚标有波浪线'~'。

从引脚11输出PWM:

int sensor = A0;
int LED = 11;
int value = 0;void setup(){Serial.begin(9600);
}void loop()
{value = analogRead(sensor);Serial.println(value,DEC);  //可以观察读取的模拟量的值analogWrite(LED,value/4);   //读取的模拟量是0~1023*分辨率,结果除以4才能到0-255
}

注意:

引脚5和6的PWM功能输出时将产生高于预期的占空比,这是因为millis()和delay()函数共用一个内部定时器,使得内部计时器在处理PWM时候分心,这种情况一般出现在低占空比时。


时间函数

delay(ms)

delay函数是一个延时函数,它是一个无返回值函数,参数是延时的时间长度,单位是ms。

delayMicroseconds(us)

delayMicroseconds函数是一个延时函数,可以产生更短时间的延时,参数是延时的长度,单位为微秒。


中断函数

单片机的中断可以描述为:由于某一随机事件的发生,单片机暂停在原程序的运行,转而执行另一个程序(随机事件),处理完毕之后又自动回到断点处继续执行,其中,中断源、主程序、中断服务程序简述如下:

  • 中断源:引起中断的原因,或能够发生中断请求的来源。
  • 主程序:单片机现在运行的程序。
  • 中断服务程序:处理中断请求的程序。

interrupts()和noInterrupts()

在Arduino中,interrupts函数和noInterrupts函数分别负责打开与关闭中断,这两个函数均为无返回值的函数,无参数。

attachInterrrupt(interrupt,function,mode)

该函数用于设置外部中断,有三个参数,分别表示中断源、中断处理函数和触发模式,它们的具体含义如下:

  • 中断源:可选0、1,对应2或3号数字引脚。
  • 中断处理函数:指定中断的处理函数,是一段程序,当中断发生时执行该子程序部分,其中参数为函数的指针。
  • 触发模式:有四种类型-LOW(低电平触发)、CHANGE(跳变时触发)、RISING(上升沿触发)、FALLING(下降沿触发)。

detachInterrupt(interrupt)用于取消中断。


串口通信函数

1、Serial.begin()

用于设置串口的波特率,波特率是指每秒传输的比特数,除以8就可以得到每秒传输的字节数,一般用9600、19200、57600、115200。

2、Serial.available()

用于判断串口是否接受到数据,该函数返回值为int型,不带参数。

3、Serial.read()

用于将串口数据读入,该函数返回值是int型,不带参数。

4、Serial.print()

用于从串口输出数据,数据可以是变量,也可以是字符串。

5、Serial.printIn()

比Serial.print()多了回车换行功能。

Serial.printIn(x,DEC);//输出并换行

Arduino学习笔记(2)-- Arduino基本函数相关推荐

  1. arduino学习笔记十--Arduino 读红外测距传感器

    Arduino 读红外测距传感器GP2D12 实例,仅供大家参考! 器材:Arduino 开发板,GP2D12,1602 字符液晶,连接线若干. GP2D12 是日本SHARP 公司生产的红外距离传感 ...

  2. 【Arduino学习笔记】Arduino的反正切函数atan()

    用法: float a: a=atan(x): 得到的是弧度

  3. 单片机学习笔记(Arduino Uno r3)

    单片机学习笔记(Arduino  Uno r3) Aduino是什么? 分为硬件和软件两个部分,硬件和软件共同组成了Arduino,使用时须将Arduino硬件和软件配合使用 硬件:Arduino系列 ...

  4. Arduino学习笔记(1):太极创客 第一部分

    Arduino学习笔记 太极创客 第一部分 笔记 1-5 变量 1-6 程序结构 1-7 变量操作 1-8/1-9 程序函数 1-10/1-11 数字输出 1-12 面包板 1-13/1-14 数字输 ...

  5. Arduino学习笔记2

    一.蜂鸣器输出实验 1.源代码 int buzzer=2;//设置控制蜂鸣器的数字口对应板子上2口 void setup() { pinMode(buzzer,OUTPUT);//设置对应的输出模式 ...

  6. arduino 学习笔记及课件01基础入门

    arduino 学习笔记及课件01基础入门 以下学习笔记中图片部分由太极创客视频截图所得 概论 一. 引脚及信号 1.1引脚模式 INPUT:当Arduino没有使用上拉电阻或下拉电阻而直接与开放的开 ...

  7. Easy EDA #学习笔记02# |Arduino UNO 单片机最小系统PCB原理图 (ATMEGA328P单片机 AMS1117芯片5V转3.3V )

    3D模型图 顶层 丝印层 阻焊层(绿油) 锡膏层 铜箔层 基板 - 原理图符号自动编号:[设置]-[系统设置]-[原理图]选项 铜柱M3: 原理图原点设置: Crl + A 拖动 [放置]-[画布原点 ...

  8. 巡线小车学习笔记(arduino 四路循迹)

    巡线小车代码学习笔记 红外布局原理 中间两路巡线一直在黑线上,小车会直行,当任意一个出来,小车会自动纠正.如果最外面的检测到黑线.则小车以更大速度纠正到黑线上去.在算法上,优先处理锐角,直角等外围传感 ...

  9. 【Arduino学习笔记】E18-D50NK红外避障传感器使用说明

    网上淘的E18-D50NK到货了,闲着没事试了一下,顺便做个笔记 就是这货,红色接5V正极,绿色接GND,黄色为信号线 后面的小圆孔可以调节有效检测距离 arduino代码如下: int E18Pin ...

  10. 【Arduino学习笔记】系列1 - 定时器配置

    目录 一.Arduino定时器简介 二.定时器基本概念 定时器速度(HZ) = Arduino时钟速度(16MHz) / 预分频器系数 中断频率(Hz)=(Arduino时钟速度16MHz)/(预分频 ...

最新文章

  1. java中怎么放入.jpg_Java如何设置jpg质量
  2. 手把手教你用Python进行回归(附代码、学习资料)
  3. 小猫TOMCAT其实很可爱
  4. sublime text3使用教程python_Sublime Text 编辑器配置 Python解释器简易教程
  5. 《孤岛惊魂5》游戏中的地形渲染技术-网格生成
  6. struts2 的国际化
  7. linux运行jps五行结果,Linux系统性能监控
  8. 微信小程序轮播图点击跳转页面
  9. 华为Mate系列平板手机安装谷歌框架
  10. ORACLE 11G使用exp或者pl/sql导出空表
  11. 如何获取Teams Meeting 详情
  12. mysql占用cpu特别高的解决_mysql占用CPU过高的解决办法
  13. 关闭按钮 重置按钮
  14. linux自动电梯设计,基于嵌入式Linux电梯控制系统
  15. python环境迁移:从联网笔记本到离线服务器
  16. apt-get下载、安装的软件在哪里
  17. python | 时间序列折线图
  18. c语言笔段式,缠论的分笔分段公式
  19. 八年级上 期中考试祭
  20. Linux系统如何正确的关机、重启

热门文章

  1. python nonetype iterable_无法解决“NoneType”对象不是iterable类型
  2. nginx 502错误原因及解决办法
  3. 数据可视化:大屏可视化设计全流程教程
  4. EtherCAT网线选型标准
  5. 疫情下的思考-危机与机遇
  6. 如何配置服务器的安全?
  7. 服务器ssl证书在哪查看,https证书查看
  8. ubuntu16.04磁盘分区及挂载
  9. 2021年危险化学品经营单位安全管理人员考试及危险化学品经营单位安全管理人员考试资料
  10. css等比例分割父级容器(完美三等分)