Arduino学习笔记(2)-- Arduino基本函数
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基本函数相关推荐
- arduino学习笔记十--Arduino 读红外测距传感器
Arduino 读红外测距传感器GP2D12 实例,仅供大家参考! 器材:Arduino 开发板,GP2D12,1602 字符液晶,连接线若干. GP2D12 是日本SHARP 公司生产的红外距离传感 ...
- 【Arduino学习笔记】Arduino的反正切函数atan()
用法: float a: a=atan(x): 得到的是弧度
- 单片机学习笔记(Arduino Uno r3)
单片机学习笔记(Arduino Uno r3) Aduino是什么? 分为硬件和软件两个部分,硬件和软件共同组成了Arduino,使用时须将Arduino硬件和软件配合使用 硬件:Arduino系列 ...
- Arduino学习笔记(1):太极创客 第一部分
Arduino学习笔记 太极创客 第一部分 笔记 1-5 变量 1-6 程序结构 1-7 变量操作 1-8/1-9 程序函数 1-10/1-11 数字输出 1-12 面包板 1-13/1-14 数字输 ...
- Arduino学习笔记2
一.蜂鸣器输出实验 1.源代码 int buzzer=2;//设置控制蜂鸣器的数字口对应板子上2口 void setup() { pinMode(buzzer,OUTPUT);//设置对应的输出模式 ...
- arduino 学习笔记及课件01基础入门
arduino 学习笔记及课件01基础入门 以下学习笔记中图片部分由太极创客视频截图所得 概论 一. 引脚及信号 1.1引脚模式 INPUT:当Arduino没有使用上拉电阻或下拉电阻而直接与开放的开 ...
- Easy EDA #学习笔记02# |Arduino UNO 单片机最小系统PCB原理图 (ATMEGA328P单片机 AMS1117芯片5V转3.3V )
3D模型图 顶层 丝印层 阻焊层(绿油) 锡膏层 铜箔层 基板 - 原理图符号自动编号:[设置]-[系统设置]-[原理图]选项 铜柱M3: 原理图原点设置: Crl + A 拖动 [放置]-[画布原点 ...
- 巡线小车学习笔记(arduino 四路循迹)
巡线小车代码学习笔记 红外布局原理 中间两路巡线一直在黑线上,小车会直行,当任意一个出来,小车会自动纠正.如果最外面的检测到黑线.则小车以更大速度纠正到黑线上去.在算法上,优先处理锐角,直角等外围传感 ...
- 【Arduino学习笔记】E18-D50NK红外避障传感器使用说明
网上淘的E18-D50NK到货了,闲着没事试了一下,顺便做个笔记 就是这货,红色接5V正极,绿色接GND,黄色为信号线 后面的小圆孔可以调节有效检测距离 arduino代码如下: int E18Pin ...
- 【Arduino学习笔记】系列1 - 定时器配置
目录 一.Arduino定时器简介 二.定时器基本概念 定时器速度(HZ) = Arduino时钟速度(16MHz) / 预分频器系数 中断频率(Hz)=(Arduino时钟速度16MHz)/(预分频 ...
最新文章
- java中怎么放入.jpg_Java如何设置jpg质量
- 手把手教你用Python进行回归(附代码、学习资料)
- 小猫TOMCAT其实很可爱
- sublime text3使用教程python_Sublime Text 编辑器配置 Python解释器简易教程
- 《孤岛惊魂5》游戏中的地形渲染技术-网格生成
- struts2 的国际化
- linux运行jps五行结果,Linux系统性能监控
- 微信小程序轮播图点击跳转页面
- 华为Mate系列平板手机安装谷歌框架
- ORACLE 11G使用exp或者pl/sql导出空表
- 如何获取Teams Meeting 详情
- mysql占用cpu特别高的解决_mysql占用CPU过高的解决办法
- 关闭按钮 重置按钮
- linux自动电梯设计,基于嵌入式Linux电梯控制系统
- python环境迁移:从联网笔记本到离线服务器
- apt-get下载、安装的软件在哪里
- python | 时间序列折线图
- c语言笔段式,缠论的分笔分段公式
- 八年级上 期中考试祭
- Linux系统如何正确的关机、重启