当前位置:文档之家› Arduino 语法手册函数部分

Arduino 语法手册函数部分

Arduino 语法手册函数部分
Arduino 语法手册函数部分

Arduino 语法手册函数部分

摘自:函数部分

数字 I/O

pinMode()

描述

将指定的引脚配置成输出或输入。详情请见digital pins。

语法

pinMode(pin, mode)

参数

pin:要设置模式的引脚

mode:INPUT或OUTPUT

返回

例子

ledPin = 13

语法

noTone(pin)

参数

pin: 所要停止产生声音的引脚

返回

shiftOut()

shiftOut()

描述

将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。

注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。

注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。

语法

shiftOut(dataPin, clockPin, bitOrder, value)

参数

dataPin:输出每一位数据的引脚(int)

clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)

bitOrder:输出位的顺序,最高位优先或最低位优先

value: 要移位输出的数据(byte)

返回

shiftIn()

描述

将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。

注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。

语法

shiftIn(dataPin,clockPin,bitOrder)

参数

dataPin:输出每一位数据的引脚(int)

clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)

bitOrder:输出位的顺序,最高位优先或最低位优先

返回

读取的值(byte)

pulseIn()

描述

读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。

此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒)

语法

pulseIn(pin, value)

pulseIn(pin, value, timeout)

参数

pin:你要进行脉冲计时的引脚号(int)。

value:要读取的脉冲类型,HIGH或LOW(int)。

timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long)返回

脉冲长度(微秒),如果等待超时返回0(unsigned long)

例子

int pin = 7;

unsigned long duration;

void setup()

{

pinMode(pin, INPUT);

}

void loop()

{

duration = pulseIn(pin, HIGH);;

}

时间

millis()

描述

返回Arduino开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。参数

返回

返回从运行当前程序开始的毫秒数(无符号长整数)。

例子

unsigned long time;

void setup(){

(9600);

}

void loop(){

("Time:");

time = millis();

返回

注意事项

当中断函数发生时,delay()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据可能会丢失。你应该声明一个变量来在未发生中断时储存变量。

使用中断

在单片机自动化程序中当突发事件发生时,中断是非常有用的,它可以帮助解决时序问题。一个使用中断的任务可能会读一个旋转编码器,监视用户的输入。

如果你想以确保程序始终抓住一个旋转编码器的脉冲,从来不缺少一个脉冲,它将使写一个程序做任何事情都要非常棘手,因为该计划将需要不断轮询的传感器线编码器,为了赶上脉冲发生时。其他传感器也是如此,如试图读取一个声音传感器正试图赶上一按,或红外线槽传感器(照片灭弧室),试图抓住一个硬币下降。在所有这些情况下,使用一个中断可以释

放的微控制器来完成其他一些工作。

程序示例

int pin = 13;

volatile int state = LOW;

void setup()

{

pinMode(pin, OUTPUT);

attachInterrupt(0, blink, CHANGE);

}

void loop()

{

digitalWrite(pin, state);

}

void blink()

{

state = !state;

}

detachInterrupt()

detachInterrupt(interrupt)

描述

关闭给定的中断。

参数

interrupt: 中断禁用的数(0或者1).

开关中断

interrupts()

interrupts()(中断)

描述

重新启用中断(使用noInterrupts()命令后将被禁用)。中断允许一些重要任务在后台运行,默认状态是启用的。禁用中断后一些函数可能无法工作,并传入信息可能会被忽略。中断会稍微打乱代码的时间,但是在关键部分可以禁用中断。

参数

返回

例子

void setup() {

}

void loop()

{

noInterrupts();

语法

对于所有的arduino板:

if (Serial)

Arduino Leonardo 特有:

if (Serial1)

Arduino Mega 特有:

if (Serial1)

if (Serial2)

if (Serial3)

参数

返回

布尔值:如果指定的串行端口是可用的,则返回true。如果查询Leonardo的USB CDC串行连接之前,它是准备好的,将只返回false。

例子

void setup() {

语法

(target)

参数

target : 要搜索的字符串(字符)

返回

布尔型

findUntil()

()

说明

()从串行缓冲区读取数据,直到找到一个给定的长度或字符串终止位。

如果目标字符串被发现,该函数返回true,如果超时则返回false。

()继承了Stream类。

语法

(target, terminal)

参数

target : 要搜索的字符串(char) terminal : 在搜索中的字符串终止位 (char)

返回

布尔型

flush()

flush()

说明

等待超出的串行数据完成传输。(在及以上的版本中,flush()语句的功能不再是丢弃所有进入缓存器的串行数据。)

flush()继承了Stream类.

语法

()

仅 Arduino Mega 可以使用的语法:

()

()

()

参数

返回

parseFloat()

()

描述

()命令从串口缓冲区返回第一个有效的浮点数. Characters that are not digits (or the minus sign) are skipped. parseFloat() is terminated by the first character that is not a floating point number.

()继承了Stream类。

语法

()

参数

返回

float

parseInt()

parseInt()

说明

查找传入的串行数据流中的下一个有效的整数。 parseInt()继承了Stream类。

语法

()

下面三个命令仅适用于Arduino Mega:

()

()

()

Parameters

返回

int : 下一个有效的整数

peek()

说明

返回传入的串行数据的下一个字节(字符),而不是进入内部串行缓冲器调取。也就是说,连续调用 peek()将返回相同的字符,与调用read()方法相同。peek()继承自 Stream类。语法

()

仅适用于Arduino Mega :

()

()

()

参数

返回

传入的串行数据的第一个字节(或-1,如果没有可用的数据的话)- int

print()

说明

以人们可读的ASCII文本形式打印数据到串口输出。此命令可以采取多种形式。每个数字的打印输出使用的是ASCII字符。浮点型同样打印输出的是ASCII字符,保留到小数点后两位。Bytes型则打印输出单个字符。字符和字符串原样打印输出。()打印输出数据不换行,()打印输出数据自动换行处理。例如

(78)输出为“78”

输出为“”

(“N”)输出为“N”

(“Hello world.”)输出为“Hello world.”

也可以自己定义输出为几进制(格式);可以是BIN(二进制,或以2为基数),OCT(八进制,或以8为基数),DEC(十进制,或以10为基数),HEX(十六进制,或以16为基数)。对于浮点型数字,可以指定输出的小数数位。例如

(78,BIN)输出为“1001110”

(78,OCT)输出为“116”

(78,DEC)输出为“78”

(78,HEX)输出为“4E”

,0)输出为“1”

,2)输出为“”

,4)输出为“”

你可以通过基于闪存的字符串来进行打印输出,将数据放入F()中,再放入()。例如(F(“Hello world”)) 若要发送一个字节,则使用 ()。

语法

(val)

(val,格式)

参数

val:打印输出的值 - 任何数据类型

格式:指定进制(整数数据类型)或小数位数(浮点类型)

返回

字节 print()将返回写入的字节数,但是否使用(或读出)这个数字是可设定的

例子:

/ *

使用for循环打印一个数字的各种格式。

* /

int x = 0;

()返回放置在缓冲区的字符数。返回0意味着没有发现有效的数据。

()继承自 Stream 类.

语法

(buffer, length)

元素

buffer:用来存储字节(char[]或byte[])的缓冲区

length:读取的字节数(int)

返回

byte

readBytesUntil()

()

说明

()将字符从串行缓冲区读取到一个数组。如果检测到终止字符,或预设的读取长度读取完毕,或者时间到了 (参见 ())函数将终止。

()返回读入数组的字符数。返回0意味着没有发现有效的数据。

()继承自 Stream类。

语法

(character, buffer, length)

元素

character :要搜索的字符(char)

buffer :缓冲区来存储字节(char[]或byte[])

length:读的字节数(int)

返回

byte

setTimeout()

()

说明

()设置使用() 或()时等待串口数据的最大毫秒值. 默认为1000毫秒。

()继承自Stream 类。

语法

(time)

参数

time :以毫秒为单位的超时时间(long)。

返回结果

write()

说明

写入二级制数据到串口。发送的数据以一个字节或者一系列的字节为单位。如果写入的数字为字符,需使用print()命令进行代替。

语法

(val)

(str)

(buf, len)

Arduino Mega还支持:Serial1,Serial2,Serial3 (替代Serial)

参数

val: 以单个字节形式发的值

str: 以一串字节的形式发送的字符串

buf: 以一串字节的形式发送的数组

len: 数组的长度

返回结果

byte

write() 将返回写入的字节数,但是否使用这个数字是可选的

例子

void setup(){

(9600);

}

void loop(){

(45); }

SerialEvent()

Examples

ReadASCIIString

ASCII Table

Dimmer

Graph

Physical Pixel

Virtual Color Mixer

Serial Call Response

Serial Call Response ASCII

Stream

USB(仅适用于 Leonardo 和 Due)

键盘

鼠标

Mouse and Keyboard libraries

These core libraries allow an Arduino Leonardo board to appear as a native Mouse and/or Keyboard to a connected computer. A word of caution on using the Leonardo as a Mouse or Keyboard: if the Mouse or Keyboard library is constantly running, it will be difficult to program your board. Functions such as () and () will move your cursor or send keystrokes to a connected computer and should only be called when you are ready to handle them. It is recommended to use a control system to turn this functionality on, like a physical switch or only responding to specific input you can control. When using the Mouse or Keyboard library, it may be best to test your output first using (). This way, you can be sure you know what values are being reported. Refer to the Mouse and Keyboard examples for some ways to handle this. Mouse

The mouse functions enable to Leonardo to control cursor movement on a connected computer. When updating the cursor position, it is always relative to the cursor's previous location.

()

()

()

()

()

()

()

Keyboard

The keyboard functions enable to Leonardo to send keystrokes to an attached computer. Note: Not every possible ASCII character, particularly the non-printing ones, can be sent with the Keyboard library. The Leonardo supports the use of modifier keys. Modifier keys change the behavior of another key when pressed simultaneously. See here for additional information on supported keys and their use.

()

()

()

()

()

()

()

()

Examples

KeybaordAndMouseControl: Demonstrates the Mouse and Keyboard commands in one program.

KeyboardMessage: Sends a text string when a button is pressed.

KeyboardLogout : Logs out the current user with key commands

KeyboardSerial: Reads a byte from the serial port, and sends back a keystroke. KeyboardReprogram : opens a new window in the Arduino IDE and reprograms the Leonardo with a simple blink program

ButtonMouseControl: Control cursor movement with 5 pushbuttons. JoystickMouseControl: Controls a computer's cursor movement with a Joystick when a button is pressed

Arduino 语法手册函数部分

Arduino 语法手册函数部分 摘自:函数部分 数字 I/O pinMode() 描述 将指定的引脚配置成输出或输入。详情请见digital pins。 语法 pinMode(pin, mode) 参数 pin:要设置模式的引脚 mode:INPUT或OUTPUT 返回 无 例子 ledPin = 13 语法 noTone(pin) 参数 pin: 所要停止产生声音的引脚 返回 无 shiftOut() shiftOut() 描述 将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。 注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 shiftOut(dataPin, clockPin, bitOrder, value) 参数 dataPin:输出每一位数据的引脚(int)

clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 value: 要移位输出的数据(byte) 返回 无 shiftIn() 描述 将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 shiftIn(dataPin,clockPin,bitOrder) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 返回 读取的值(byte) pulseIn() 描述 读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。 此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒) 语法 pulseIn(pin, value) pulseIn(pin, value, timeout) 参数 pin:你要进行脉冲计时的引脚号(int)。 value:要读取的脉冲类型,HIGH或LOW(int)。 timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long)返回 脉冲长度(微秒),如果等待超时返回0(unsigned long) 例子 int pin = 7; unsigned long duration;

Arduino编程语言

Arduino编程参考手册 首页 程序结构变量基本函数

程序结构 (本节直译自Arduino官网最新Reference) 在Arduino中, 标准的程序入口main函数在内部被定义, 用户只需要关心以下两个函数: setup() 当Arduino板起动时setup()函数会被调用。用它来初始化变量,引脚模式,开始使用某个库,等等。该函数在Arduino板的每次上电和复位时只运行一次。 loop() 在创建setup函数,该函数初始化和设置初始值,loop()函数所做事的正如其名,连续循环,允许你的程序改变状态和响应事件。可以用它来实时控制arduino板。 示例:

控制语句 if if,用于与比较运算符结合使用,测试是否已达到某些条件,例如一个输入数据在某个范围之外。使用格式如下: 该程序测试value是否大于50。如果是,程序将执行特定的动作。换句话说,如果圆括号中的语句为真,大括号中的语句就会执行。如果不是,程序将跳过这段代码。大括号可以被省略,如果这么做,下一行(以分号结尾)将成为唯一的条件语句。

圆括号中要被计算的语句需要一个或多个操作符。 if...else 与基本的if语句相比,由于允许多个测试组合在一起,if/else可以使用更多的控制流。例如,可以测试一个模拟量输入,如果输入值小于500,则采取一个动作,而如果输入值大于或等于500,则采取另一个动作。代码看起来像是这样:

else中可以进行另一个if测试,这样多个相互独立的测试就可以同时进行。每一个测试一个接一个地执行直到遇到一个测试为真为止。当发现一个测试条件为真时,与其关联的代码块就会执行,然后程序将跳到完整的if/else结构的下一行。如果没有一个测试被验证为真。缺省的else语句块,如果存在的话,将被设为默认行为,并执行。 注意:一个else if语句块可能有或者没有终止else语句块,同理。每个else if分支允许有无限多个。

ARDUINO入门及其简单实验7例

ARDUINO入门及其简单实验(7例) (1) 1. Arduino硬件开发平台简介 (1) 1.1 Arduino的主要特色 (2) 1.2 Arduino的硬件接口功能描述 (3) 1.3 Arduino的技术性能参数 (3) 1.4 电路原理图 (4) 2. Arduino软件开发平台简介 (5) 2.1 菜单栏 (5) 2.2 工具栏 (6) 2.3 Arduino 语言简介 (6) 3. Arduino开发实例中所用部分器件 (8) 1. LED简介 (8) 2. 光敏电阻简介 (9) 3. 直流电机简介 (9) 4. 电位器简介 (10) 4. Arduino平台应用开发实例 (10) 4.1【实作项目一】利用LED作光敏电阻采样实验 (10) 4.2【实作项目二】利用PWM信号控制LED亮度 (12) 4.3【实作项目三】单键控制一只LED的亮灭 (15) 4.4【实作项目四】利用PWM控制直流电机转速 (17) 4.5【实作项目五】利用电位器手控LED亮度 (19) 4.6【实作项目六】控制LED明暗交替 (21) 4.7【实作项目七】利用光敏电阻控制LED的亮灭 (23) ARDUINO入门及其简单实验(7例) 1. Arduino硬件开发平台简介 Arduino硬件是一块带有USB的I/O接口板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输入),并且具有类似于Java、C语言的集成开发环境。Arduino 既可以扩展一些外接的电子元器件,例如开关、传感器、LED、直流马达、步进马达或其他输入、输出装置;Arduino也可以独立运行,成为一个可以跟交互软件沟通的接口装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。Arduino 开发环境IDE全部开放源代码,可以供大家免费下载、利用,还可以开发出更多激发人们制作欲望的互动作品。

林锋教你一步一步玩机器人(arduino)--制作篇(入门组件A)

林锋教你一步一步玩机器人(arduino)系列 ------制作篇 (入门组件上) ----- 张林锋/文 2012-5-28

目录 1 前言 (3) 2. 准备工作 (3) 2.1 元器件准备工作 (3) 2.2 实验板子准备 (4) 3 LED 实验 (5) 4 蜂鸣器实验 (7) 5.按键实验 (9) 6 8*8点阵实验 (11) 7 串口实验 (12) 8 模拟量输入(电压输入) (16) 9 直流电机控制(L298N驱动模块) (18) 10 PMW 脉冲宽度调试 (21) 11 控制舵机 (22) 12 超声波模块 (23) 13 巡线防跌模块 (26) 14 红外遥控 (27) 说明 写这系列文章主要目的是和读者一同分享下自己的学习过程,也希望能给读者带来一些帮助,文章部分内容剪裁网络文章,部分自己撰写。文章内容用于爱好者之间学习,不得用于商业目的。当然笔者才疏学浅,所书内容难免有缺点和漏洞,还请读者多多海涵,希望能和广大电子爱好者交流心得。 本人QQ:65198204 邮箱:65198024@https://www.doczj.com/doc/022872536.html, 博客:https://www.doczj.com/doc/022872536.html,/u/2775824690

1 前言 在淘宝买的Arduino 主板套件终于在26号到了,物流也太慢了,发了4天才到。套件包含:4轮小车,Arduino MEGA 2560 主板,配套的MEGA Sensor Shield V2.0扩展板,超声波模块,红外遥控模块,寻线防跌模块,舵机。套件是在27°寒语电子工作室(https://www.doczj.com/doc/022872536.html,/)买的,也就是科易互动科技的子站(https://www.doczj.com/doc/022872536.html,/)。 备注一下:套件性价比很高,也有配套的相关资料,不过个人觉得配套资料写的不够详细和全面,对于新手制作会带来很多不便。 在制作篇系列文章中,我会对入门组件的应用,以及4轮小车套件的制作,做出详细的制作流程,图文并茂。相信会对新手入门带来一定收获。 读者在做本文章实验时可以结合阅读我的相关入门知识文章,基本篇,硬件篇,软件篇。 制作篇分:入门上篇:主要介绍一些基础配件,以及小车所要用的器件。 4轮小车篇:主要介绍小车制作全过程。 入门下篇:主要介绍一些其他外围器件应用。比如:1602,12864液晶应用,时钟模块应用等。 4轮小车改造篇:加入自己的一些元素。 2. 准备工作 2.1 元器件准备工作 本篇实验器件所用到的元器件如下:(1)发光二极管(2)蜂鸣器(3)按键(4)可变电阻(5)8*8点阵(6)串口(7)直流电机(8)伺服电机(9)超声波模块(10)寻线防跌模块(11)红外遥控。 下面给我的全家福来个图,呵呵。

Arduino 入门到精通 例程1-Hello World!

Arduino 入门到精通例程1 1、Hello World! 首先先来练习一个不需要其他辅助元件,只需要一块Arduino 和一根下载线的简单实验,让我们的Arduino 说出“Hello World!”,这是一个让Arduino 和PC 机通信的实验,这也是一个入门试验,希望可以带领大家进入Arduino 的世界。 这个实验我们需要用到的实验硬件有: Arduino 控制器 USB 下载线 我们按照上面所讲的将Arduino 的驱动安装好后,我们打开Arduino 的软件,编写一段程序让Arduino 接受到我们发的指令就显示“Hello World!”字符串,当然您也可以让Arduino 不用接受任何指令就直接不断回显“Hello World!”,其实很简单,一条

if()语句就可以让你的Arduino 听从你的指令了,我们再借用一下Arduino 自带的数字13 口LED,让Arduino 接受到指令时LED 闪烁一下,再显示“Hello World!” 下面给大家一段参考程序。 int val;//定义变量val int ledpin=13;//定义数字接口13 void setup() { Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。pinMode(ledpin,OUTPUT);//设置数字13 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。 } void loop() { val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val if(val=='R')//判断接收到的指令或字符是否是“R”。 {//如果接收到的是“R”字符 digitalWrite(ledpin,HIGH);//点亮数字13 口LED。 delay(500); digitalWrite(ledpin,LOW);//熄灭数字13 口LED delay(500);

Arduino编程参考手册簿中文版

Arduino编程参考手册 控制语句 (5) if (5) if...else (6) for (8) switch case (10) while (11) do...while . (12) break (12) continue (13) return (14) goto (15) 相关语法 (16) 分号 (16) 大括号 (16) 注释 (18) define (19) include (20) 算术运算符 (21) 赋值 (21) 加,减,乘,除 (21) 取模 (22) 比较运算符 (24) if(条件) and ==, !=, <, > (比较运算符) (24) 布尔运算符 (26) 指针运算符 (27) 位运算 (27) 位与 (27) 位或 (28) 位异或 (30) 位非 (32) 左移、右移 (33) 复合运算符 (35) 自加++ (35) 自减-- (35) 复合加+= (35) 复合减-= (36) 复合乘*= (36) 复合除/= (36) 复合与&= (36) 复合或|= (36) 变量 (36)

宏定义 (37) 整型常量 (38) 浮点数常量 (40) 数据类型 (41) void (41) boolean (42) char (43) unsigned char (43) byte (43) int (44) unsigned int (45) word (46) long (46) unsigned long (47) float (48) double (49) string (49) String(c++) (51) array (52) 数据类型转换 (54) char() (54) byte() (54) int() (55) word() (55) long() (56) float() (56) 变量作用域&修饰符 (57) 变量作用域 (57) static (静态变量) (58) volatile (易变变量) (60) const (不可改变变量) (61) 辅助工具 (62) sizeof() (sizeof运算符) (62) ASCII码表 (63) 基本函数 (65) 数字I/O (65) pinMode() (65) digitalWrite() (66) digitalRead() (67) 模拟I/O (68) analogReference() (68) analogRead() (69) analogWrite() (70)

Arduino入门到精通例程6-按键控制

Arduino 入门到精通例程 6 6按键控制LED实验 I/O 口的意思即为INPUT接口和OUTPUT接口,到目前为止我们设计的小灯 实验都还只是应用到Arduino的I/O 口的输出功能,这个实验我们来尝试一下使用Arduino的I/O 口的输入功能即为读取外接设备的输出值,我们用一个按键和一个LED小灯完成一个输入输出结合使用的实验,让大家能简单了解I/O的作用。按键开关大家都应该比较了解,属于开关量(数字量)元件,按下时为闭合(导通)状态。完成本实验要 用到的元件如下: 按键开关*1 红色M5 直插LED*1 220 Q电阻*1 10K Q电阻*1 面包板*1 面包板跳线*1 扎 我们将按键接到数字7接口,红色小灯接到数字11接口(Arduino控制器0-13数字I/O接口都可以用来接按键和小灯,但是尽量不选择0和1接口,0和1接口为接口功能复用,除I/O 口功能外也是串口通信接口,下载程序时属于与PC 机通信故应保持0和1接口悬空,所以为避免插拔线的麻烦尽量不选用0和1 接口),按下面的原理图连接好电路。下面开始编写程序,我们就让按键按下时小灯亮起,根据前面的学习相信这个程序很容易就能编写出来,相对于前面几个实验这个实验的程序中多加了一条条件判断语句,这里我们使用if 语句,Arduino的程序便写语句是基于C语言的,所以C的条件判断语句自然也适用于Arduino,像while、swich等等。这里根据个人喜好我们习惯于使用简单易于理解的if 语句给大家做演示例程。

我们分析电路可知当按键按下时,数字7 接口可读出为高电平,这时我们使数字11 口输出高电平可使小灯亮起,程序中我们判断数字7 口是否为低电平,要为低电平使数字11 口输出也为低电平小灯不亮,原理同上。 参考源程序: int ledpin=11;// 定义数字11 接口 int inpin=7;// 定义数字7 接口 int val;// 定义变量val void setup(){pi nM ode(ledpi n,0 UTPUT);// 定义小灯接口为输出接口 pinMode(inpin,INPUT);〃定义按键接口为输入接口}void loop(){val=digitalRead(inpin);〃读取数字7 口电平值赋给val if(val==LOW)〃检测按键是否按下,按键按下时小灯亮起 { digitalWrite(ledpin,LOW);} else { digitalWrite(ledp in ,HIGH);}}下载完程序我们本次的小灯配合按键的实验就完 成了,本实验的原理很简单,广泛被用于各种电路和电器中,实际生活中大家也不难在各种设备上发现,例如大家的手机当按下任一按键时背光灯就会亮起,这就是典型应用了,下面一个实验就是一个最简单的生活中应用实例--------------- 抢答器。

Arduino知识集锦

#Arduino 语法 setup() 初始化函数 loop() 循环体函数 控制语句类似于C //if if...else for switch case while do... while break continue return got o 扩展语法类似于C //;(分号) {}(花括号) //(单行注释) /* */(多行注释) #define #include 算数运算符类似于C //=(赋值运算符) +(加) -(减) *(乘) /(除) %(模) 比较运算符类似于C //==(等于) !=(不等于) <(小于) >(大于) <=(小于等于) >=(大于等于) 布尔运算符类似于C //&&(与) ||(或) !(非) 指针运算符类似于C //* 取消引用运算符 & 引用运算符 位运算符类似于C & (bitwise and) | (bitwise or) ^ (bitwise xor) ~ (bitwise not) << (bitshift left) >> (bit shift right) 复合运算符类似于C ++ (increment) -- (decrement) += (compound addition) -= (compound subtraction) *= (compound multiplication) /= (compound division) &= (compound bitwise and) |= (c ompound bitwise or) 常量 constants 预定义的常量 BOOL true false 引脚电压定义,HIGH和LOW【当读取(read)或写入(write)数字引脚时只有两个可能的值: HIGH 和 LOW 】 HIGH(参考引脚)的含义取决于引脚(pin)的设置,引脚定义为INPUT或OUTPUT时含义有所不同。当一个引脚通过pinMode被设置为INPUT,并通过digitalRead读取(read)时。如果当前引脚的电压大于等于3V,微控制器将会返回为HIGH。引脚也可以通过pinMode

第十五课 Arduino 教程-- Arduino IO函数

第十五课Arduino I/O函数 Arduino板上的引脚可以配置为输入或输出。我们将在这些模式下解释引脚的功能。重要的是要注意,大多数Arduino模拟引脚可以按照与数字引脚完全相同的方式进行配置和使用。 引脚配置为INPUT Arduino引脚默认配置为输入,因此在使用它们作为输入时,不需要使用 pinMode()显式声明为输入。以这种方式配置的引脚被称为处于高阻抗状态。输入引脚对采样电路的要求非常小,相当于引脚前面的100兆欧的串联电阻。 这意味着将输入引脚从一个状态切换到另一个状态所需的电流非常小。这使得引脚可用于诸如实现电容式触摸传感器或读取LED作为光电二极管的任务。 被配置为pinMode(pin,INPUT)的引脚(没有任何东西连接到它们,或者有连接到它们而未连接到其他电路的导线),报告引脚状态看似随机的变化,从环境中拾取电子噪音或电容耦合附近引脚的状态。 上拉电阻 如果没有输入,上拉电阻通常用于将输入引脚引导到已知状态。这可以通过在输入端添加上拉电阻(到5V)或下拉电阻(接地电阻)来实现。10K电阻对于上拉或下拉电阻来说是一个很好的值。 使用内置上拉电阻,引脚配置为输入 Atmega芯片内置了2万个上拉电阻,可通过软件访问。通过将pinMode()设置为INPUT_PULLUP可访问这些内置上拉电阻。这有效地反转了INPUT模式的行为,其中HIGH表示传感器关闭,LOW表示传感器开启。此上拉的值取决于所使用的微控制器。在大多数基于AVR的板上,该值保证在20kΩ和50kΩ之间。在Arduino Due上,它介于50kΩ和150kΩ之间。有关确切的值,请参考板上微控制器的数据表。 当将传感器连接到配置为INPUT_PULLUP的引脚时,另一端应接地。在简单开关的情况下,这会导致当开关打开时引脚变为高电平,当按下开关时引脚为低电平。上拉电阻提供足够的电流来点亮连接到被配置为输入的引脚的LED。如果项目中的LED似乎在工作,但很昏暗,这可能是发生了什么。 控制引脚是高电平还是低电平的相同寄存器(内部芯片存储器单元)控制上拉电阻。因此,当引脚处于INPUT模式时,配置为有上拉电阻导通的引脚将被开启;如果引脚通过

Arduino参考手册中文版

Arduino编程参考手册 if (5) if...else . (6) for (8) switch case (10) while (11) do...while. (12) break (12) continue (13) return (14) goto (15) 相关语法 (16) 分号 (16) 大括号 (16) 注释 (18) define (19) include (20) 算术运算符 (21) 赋值 (21) 加,减,乘,除 (21) 取模 (22) 比较运算符 (24) if(条件) and ==, !=, <, > (比较运算符) (24) 布尔运算符 (26) 指针运算符 (27) 位运算 (27) 位与 (27) 位或 (28) 位异或 (30) 位非 (32) 左移、右移 (33) 复合运算符 (35) 自加++ (35) 自减-- (35) 复合加+= (35) 复合减-= (36) 复合乘*= (36) 复合除/= (36) 复合与&= (36) 复合或|= (36) 变量 (36)

宏定义 (38) 整型常量 (39) 浮点数常量 (41) 数据类型 (41) void (41) boolean (42) char (43) unsigned char (43) byte (44) int (44) unsigned int (45) word (46) long (46) unsigned long (47) float (48) double (49) string (49) String(c++) (51) array (52) 数据类型转换 (54) char() (54) byte() (54) int() (54) word() (55) long() (55) float() (56) 变量作用域&修饰符 (56) 变量作用域 (56) static (静态变量) (57) volatile (易变变量) (59) const (不可改变变量) (61) 辅助工具 (61) sizeof() (sizeof运算符) (61) ASCII码表 (63) 基本函数 (64) 数字I/O (64) pinMode() (64) digitalWrite() (65) digitalRead() (67) 模拟I/O (68) analogReference() (68) analogRead() (68) analogWrite() (69)

Arduino BLE 函数库中文

备注: Arduino Function: BLEPeripheral.connected() (缺失) Arduino BLE 函数库 描述 蓝牙低功耗(BLE)协议从蓝牙规范版本4.0开始。虽然以前的规范只允许制作一种无线UART,但该版本允许更智能的资源使用。结果是适用于大多数具有限制能量需求的芯片的低功率通信。BLE协议由多个角色组成。BLE节点可以作为外设,中央,广播和观察者。 广播角色周期性地发送具有数据的广告包。它不支持建立连接。理论上,广播机构的角色可以用于仅发射机的无线电。 观察者角色收听来自广播对等体的广告数据包中嵌入的数据。 中心是能够建立到对等体的多个连接的设备。中心角色始终是连接的发起者,并且基本上允许设备进入网络。 外设使用广告包来允许中心找到它,并且随后建立与之的连接。BLE协议经过优化,至少在处理能力和内存方面要求极少的外设实现资源。 中央和外围设备不得与客户端和服务器错误。他们之间没有联系。中央和外围设备可以是客户机,服务器或两者,具体取决于应用

数据结构 BLE数据结构分层组成。属性是定义的最小数据实体。属性被分组到服务中,每个服务可以包含零个或多个特征。这些特征又可以包括零个或多个描述符。 每个服务,特征和描述符都由UUID标识。 通用唯一标识符(UUID)是保证(或具有高概率)的全局唯一的128位(16字节)数字。您可以定义自己的UUID或使用标准的UUID。 每个属性都可以有权限。 权限是指定可以对每个特定属性执行哪些操作以及具体安全要求的元数据。 广告包(广播包) 广告包是周边中心知道可用的方式。在广告包中有关于外设的主要信息。广告包长度为31字节,并且必须符合减少内部有效信息数量的特定格式。如果中心想要进一步的信息,它可以发送一个扫描请求来请求另一个称为扫描响应的数据包,以便拥有其他31字节的信息。如果您没有足够的数据传输,并且31字节(或62个最终)广告数据包就足够了,您可以实现广播者角色并传输数据,而无需建立连接。如果您有更多的数据要传输,则必须执行外设角色进行传输。 有关广告包的进一步信息可以在此链接中找到,其中包含对此参数的基本介绍。 更多信息 在本节中,我们尝试简要介绍BLE标准。然而,BLE标准比这更广泛。如果你想加深一些争论,那里是链接到BLE标准规范: https://https://www.doczj.com/doc/022872536.html,/specifications/bluetooth-core-specification 有关BLE的其他有用信息及其在nRF52上的工作方式可以在北欧半导体网站上找到:https://https://www.doczj.com/doc/022872536.html,/index.jsp 北欧还提供了一个有用的应用程序,通过BLE与您的板进行交互。使用此应用程序可以读写特性并调试BLE通信: https://https://www.doczj.com/doc/022872536.html,/eng/Products/Nordic-mobile-Apps/nRF-Connect-for -mobile-previously-called-nRF-Master-Control-Panel 相关功能

arduino语法篇

Arduino语法 Arduino语法-----基础篇 Arduino语言是建立在C/C++基础上的,基本的功能都是基于C,一些复杂的或者功能强大的库都是基于C++,c和C++的语法,大家随便找本书都可以学会。其实Arduino就是把单片机的一些常用指令和函数进行功能化、函数化、模块化。这样就可以让大家不必去了解单片机或者硬件的细节。让没有基础的初学者也可以很快入门。 关键字: if if...else for switch case while do... while break continue return goto 语法符号: ; {} // /* */ 运算符: = + - * / % == != < > <= >= && || ! ++ -- += -= *= /= 数据类型: boolean 布尔类型 char 字符类型 byte 字节类型 int 整数类型 unsigned int无符号整型 long 长整型 unsigned long 无符号长 整型 float 实数类型 double string array void 常量: HIGH | LOW 表 示数字IO 口的电平, HIGH 表示高电平 (1),LOW 表示低 电平(0)。 INPUT | OUTPUT 表示数字 IO 口的方向,INPUT 表示辒入(高阻态), OUTPUT 表示辒出 (AVR能提供5V电 压40mA电流)。 true | false true 表示真(1),false表 示假(0)。 Arduino语法-----中级篇 setup() 当一个程序开始时,会调用setup()函数,用来初始化变量,引脚模式,库文件初始化等。setup函数只会在板子上电或者复位后调用一次。 loop()

Arduino编程参考手册中文版Word版

Arduino编程参考手册 程序结构 (4) 控制语句 (5) if (5) if...else . (6) for (8) switch case (10) while (11) do...while . (12) break (12) continue (13) return (14) goto (15) 相关语法 (16) 分号 (16) 大括号 (16) 注释 (18) define (19) include (20) 算术运算符 (21) 赋值 (21) 加,减,乘,除 (21) 取模 (22) 比较运算符 (24) if(条件) and ==, !=, <, > (比较运算符) (24) 布尔运算符 (26) 指针运算符 (27) 位运算 (27) 位与 (27) 位或 (28) 位异或 (30) 位非 (32) 左移、右移 (33) 复合运算符 (35) 自加++ (35) 自减-- (35) 复合加+= (35) 复合减-= (36) 复合乘*= (36) 复合除/= (36) 复合与&= (36) 复合或|= (36) 变量 (36)

宏定义 (37) 整型常量 (38) 浮点数常量 (40) 数据类型 (41) void (41) boolean (42) char (43) unsigned char (43) byte (43) int (44) unsigned int (45) word (46) long (46) unsigned long (47) float (48) double (49) string (49) String(c++) (51) array (52) 数据类型转换 (54) char() (54) byte() (54) int() (55) word() (55) long() (56) float() (56) 变量作用域&修饰符 (57) 变量作用域 (57) static (静态变量) (58) volatile (易变变量) (60) const (不可改变变量) (61) 辅助工具 (62) sizeof() (sizeof运算符) (62) ASCII码表 (63) 基本函数 (65) 数字I/O (65) pinMode() (65) digitalWrite() (66) digitalRead() (67) 模拟I/O (68) analogReference() (68) analogRead() (69) analogWrite() (70)

arduino语法手册函数部分

; Arduino 语法手册函数部分 摘自:函数部分 数字 I/O pinMode() 描述 将指定的引脚配置成输出或输入。详情请见digital pins。 语法 pinMode(pin, mode) # 参数 pin:要设置模式的引脚 mode:INPUT或OUTPUT 返回 无 例子 ledPin = 13 语法 … noTone(pin) 参数 pin: 所要停止产生声音的引脚 返回 无 shiftOut() shiftOut() ) 描述 将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。 注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定

脚有效。 语法 shiftOut(dataPin, clockPin, bitOrder, value) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 value: 要移位输出的数据(byte) ^ 返回 无 shiftIn() 描述 将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 《 shiftIn(dataPin,clockPin,bitOrder) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 返回 读取的值(byte) pulseIn() 描述 《 读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。 此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒) 语法 pulseIn(pin, value) pulseIn(pin, value, timeout) 参数

Arduino知识点

#define 常量名常量值 % 取模运算符 String abc / char abc[n] 定义字符串 pinMode(pin,mode); 用于引脚的初始化 mode包括INPUT/OUTPUT/INPUT_PULLUP Arduino 数模转换器有10位精度,可以将0-5V转换为0-1023,仅用于analogRead(pin) analogWrite(n) 写的并不是真正的模拟信号,而是占空比不同的方波:电压=占空比×5V,n∈(0,255),PWM(脉冲宽度调制)波 millis()/micros() 获取系统通电或复位后的运行时间,单位是毫秒/微秒 当引脚悬空时,其电压值处于不定状态,故要根据电压值进行其他操作时应避免悬空 tone(pin,frequency,duration) 占空比为定值50%,duration默认无穷大,若无duration,则应用noTone()来停止发声,注意:同一时间tone()仅能作用于一个引脚 pulseIn(pin,value,timeout) 返回脉冲宽度,单位为微秒,timeout超时时间,默认为1s 串口监视器中的停止符是在按下“发送”后系统自动发动的 外部中断 LOW/CHANGE/RISING/FALLING 低电平/变电平/上升沿/下降沿触发 attachInterrupt(中断编号,中断函数名(返回void),中断模式) 初始化中断引脚detachInterrupt(中断编号) 禁用外部中断 编写library #if ARDUINO >= 100 //版本兼容设置 #include"Arduino.h" #else #include"WProgram.h" #endif class XXX{ //声明类 private: public: } #ifndef XXX_H //条件编译命令,判断XXX_H是不是已经存在 #define XXX_H . . . #endif #include"XXX.H" //编写cpp文件,注意应加上版本兼容语句 XXX::XXX() 返回类型 XXX::other_func() func_name1 KEYWORD1 //关键字高亮显示 func_name2 KEYWORD2 硬件串口(UART)通信 两个设备TX与RX交叉连接,GND相连 在MEGA上USB口是和引脚0,1连在一块的 Serial.available() 返回串口接收缓冲区的字节数 Serial.begin(speed,config) 初始化串口,speed波特率,config数据、校验、停止位Serial.end() 释放串口通信引脚,使其作为普通引脚

Arduino常用函数精编版

(1)pinMode(接口名称,OUTPUT或INPUT),将指定的接口定义为输入或输出接口,用在setup()函数里。 (2)digitalWrite(接口名称,HIGH(高)或LOW(低)),将数字输入输出接口的数值置高或置低。 (3)digitalRead(接口名称),读出数字接口的值,并将该值作为返回值。 (4)analogWrite(接口名称,数值),给一个模拟接口写入模拟值(PWM脉冲)。数值取值0-255。 (5)analogRead(接口名称),从指定的模拟接口读取数值,Arduino对该模拟值进行数字转换,这个方法将输入的0~5V电压值 转换为0~1023间的整数值,并将该整数值作为返回值。 (6)delay(时间),延时一段时间,以毫秒为单位,如1000为1秒。 (7)Serial.begin(波特率),设置串行每秒传输数据的速率(波特率)。在与计算机进行通讯时,可以使用下面这些值:300、1200、2400、4800、9600、14400、19200、28800、38400、57600或115200,一般9600、57600和115200比较常见。除此之外还可以使用其他需要的特定数值,如与0号或1号引脚通信就需要特殊的波特率。该函数用在setup()函数里。 Serial.available() 的意思是:返回串口缓冲区中当前剩余的字符个数。一般用这个函数来判断串口的缓冲区有无数据,当Serial.available()>0时,说明串口接收到了数据,可以读取;

Serial.read()指从串口的缓冲区取出并读取一个Byte的数据,比如有设备通过串口向Arduino发送数据了,我们就可以用Serial.read()来读取发送的数据。 while(Serial.available()>0) { data= Serial.read(); delay(2); } (8)Serial.read(),读取串行端口中持续输入的数据,并将读入的数据作为返回值。 (9)Serial.print(数据,数据的进制),从串行端口输出数据。Serial.print(数据)默认为十进制,相当于Serial.print(数据,十进制)。 (10)Serial.println(数据,数据的进制),从串行端口输出数据,有所不同的是输出数据后跟随一个回车和一个换行符。但是该函数所输出的值与Serial.print()一样。 常用函数 数字I/O类: pinMode(pin,mode)数字IO口输入输出模式定义函数,将接口定义为输入或输出接口。

Arduino 语言常用语句

结构 void setup() 初始化变量,管脚模式,调用库函数等 void loop() 连续执行函数内的语句 功能 数字 I/O pinMode(pin, mode) 数字IO口输入输出模式定义函数,pin表示为0~13, mode表示为INPUT或OUTPUT。 digitalWrite(pin, value) 数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。比如定义HIGH 可以驱动LED。 int digitalRead(pin) 数字IO口读输入电平函数, pin表示为0~13,value表示为HIGH或LOW。比如可以读数字 传感器。 模拟 I/O int analogRead(pin) 模拟IO口读函数,pin表示为 0~5(Arduino Diecimila为0~5,Arduino nano为0~7)。 比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。 analogWrite(pin, value) - PWM数字IO口PWM输 出函数,Arduino数字IO口标注了PWM的IO口可使用该函数,

pin表示3, 5, 6, 9, 10, 11,value表示为0~255。比如可用于电机PWM调速或音乐播放。 扩展 I/O shiftOut(dataPin, clockPin, bitOrder, value) SPI 外部IO扩展函数,通常使用带SPI接口的74HC595做8个IO 扩展,dataPin为数据口,clockPin为时钟口,bitOrder为数据传输方向(MSBFIRST高位在前,LSBFIRST低位在前),value 表示所要传送的数据(0~255),另外还需要一个IO口做 74HC595的使能控制。 unsigned long pulseIn(pin, value) 脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。时间函数 unsigned long millis() 返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。 delay(ms) 延时函数(单位ms)。 delayMicroseconds(us) 延时函数(单位us)。 数学函数

Arduino 入门到精通 例程9-模拟值

Arduino 入门到精通例程9 模拟值读取实验 本个实验我们就来开始学习一下模拟I/O 接口的使用,Arduino 有模拟0—模拟5 共计6 个模拟接口,这6 个接口也可以算作为接口功能复用,除模拟接口功能以外,这6 个接口可作为数字接口使用,编号为数字14—数字19,简单了解以后,下面就来开始我们的实验。电位计是大家比较熟悉的典型的模拟值输出元件,本实验就用它来完成。 所需元器件有: 电位计*1 面包板*1 面包板跳线*1 扎 本实验我们将电位计的阻值转化为模拟值读取出来,然后显示到屏幕上,这也是我们以后完成自己所需的实验功能所必须掌握的实例应用。我们先要按照以下电路图连接实物图

我们使用的是模拟0 接口。 程序的编写也很简单,一个analogRead();语句就可以读出模拟口的值,Arduino 328是10 位的A/D 采集,所以读取的模拟值范围是0-1023,本个实验的程序里还有一个难点就是显示数值在屏幕这一问题,学习起来也是很简单的。首先我们要在voidsetup()里面设置波特率,显示数值属于Arduino 与PC 机通信,所以Arduino 的波特率应与PC 机软件设置的相同才能显示出正确的数值,否则将会显示乱码或是不显示,在Arduino 软件的监视窗口右下角有一个可以设置波特率的按钮,这里设置的波特率需要跟程序里void setup()里面设置波特率相同,程序设置波特率的语句为Serial.begin();括 号中为波特率的值。其次就是显示数值的语句了,Serial.print();或者Serial.println();都可以,不同的是后者显示完数值后自动回车,前者不是,更多的关于语句的讲解前面有 介绍这里就不再多说了。

相关主题
文本预览
相关文档 最新文档