Arduino编程基础

关键字:

if、if…else、for、switch、case、while、do…while、break、continue、return、goto。

语法符号:每条语句以“;”结尾,每段程序以“{}”括起来。

数据类型:

boolean、 char、 int、 unsigned int、 long、 unsigned long、 float、 double、 string、 array、 void。

常量:

HIGH 或者 LOW,表示数字I/O引脚的电平,

HIGH 表示高电平(1),

LOW 表示低电平(0);

INPUT 或者 OUTPUT,表示数字I/O引脚的方向,

INPUT 表示输入(高阻态),

OUTPUT 表示输出(AVR能提供5V电压,40mA电流);

TRUE 或者 FALSE,TRUE表示真(1),FALSE表示假(0)。

程序结构:

主要包括两部分,即void setup()和void loop()。

其中,前者是声明变量及引脚名称(如int val;int ledPin=13),在程序开始时使用,初始化变量和引脚模式,调用库函数如pinMode(ledPin,OUTPUT)等,

setup()函数全程只执行一次,只在你初始设置时执行一次。

而void loop()用在setup()函数之后,不断地循环执行,是Arduino的主体。

数字I/O引脚的操作函数

pinMode(pin, mode)

pinMode函数用于配置引脚以及设置输出或输入模式,是一个无返回值函数。该函数有两个参数: pin和mode。pin参数表示要配置的引脚;

mode 参数表示设置该引脚的模式为INPUT(输入)或OUTPUT(输出)。

INPUT 用于读取信号,OUTPUT用于输出控制信号。

pin的范围是数字引脚0到13,也可以把模拟引脚(A0~A5)作为数字引脚使用,此时编号为14的引脚对应模拟引脚0,编号为19的引脚对应模拟引脚5。

该函数一般会放在setup()里,先设置再使用。

digitalWrite(pin, value)

该函数的作用是设置引脚的输出电压为高电平或低电平,也是一个无返回值的函数。pin 参数表示所要设置的引脚;

value参数表示输出的电压为HIGH(高电平)或LOW(低电平)。 注意:使用前必须先用pinMode设置。

digitalRead(pin)

该函数在引脚设置为输入的情况下,可以获取引脚的电压情况:HIGH(高电平)或者LOW(低电平)。

数字I/O引脚操作函数使用例程如下:

int button= 9;//设置引脚9为按钮输人引脚

int LED= 13;//设置引脚13为LED输出引脚,内部连接开发板上的LED

void setup( )

{ pinMode( button, INPUT);//设置为输人

pinMode( LED, OUTPUT) ;//设置为输出

void loop()

{

if(digitalRead( button) == LOW) //如果读取高电平

digitalWrite(LED, HIGH); //引脚 13输出高电平

else :

digitalWrite(LED, LOW); // 否则输出低电平

}

模拟I/O引脚的操作函数

1.analogReference(type)

该函数用于配置模拟引脚的参考电压。它有三种类型:DEFAULT是默认模式,参考电压是5V;INTERNAL是低电压模式,使用片内基准电压源2.56V;EXTERNAL是扩展模式,通过AREF引脚获取参考电压。

注意:若不使用本函数,默认是参考电压5V。若使用AREF作为参考电压,需接一个5kΩ的上拉电阻。

2.analogRead(pin)

用于读取引脚的模拟量电压值,每读取一次需要花100μs的时间。参数pin表示所要获取模拟量电压值的引脚,返回为int型。它的精度为10位,返回值为0~1023。

注意:函数参数pin的取值范围是0~5,对应开发板上的模拟引脚A0~A5。

3.analogWrite(pin, value)

该函数是通过PWM(Pulse-WidthModulation,脉冲宽度调制)的方式在引脚上输出一个模拟量。图1-23所示为PWM输出的一般形式,也就是在一个脉冲的周期内高电平所占的比例。它主要应用于LED亮度控制、直流电机转速控制等方面。

占空比的定义

注:

PWM波形的特点是波形频率恒定,占空比D可以改变。Arduino中的PWM的频率大约为490Hz,Arduino UNO开发板支持以下数字引脚(不是模拟输入引脚)作为PWM模拟输出:3、5、6、9、10、11。开发板带PWM输出的都有一个波浪线形的符号。

注意:PWM输出位数为8位,即0~255。

模拟I/O引脚的操作函数使用例程如下:

int sensor = A0;//A0 5IJAI it EXEt fi 5i

int LED= 11;//引脚11输出LED

void setup( )

{

Serial. begin(9600);

}

void loop()

{

int v;

v = analogRead( sensor);

Serial. pr intln(v, DEC);//可以观察读取的模拟量

analogWrite(LED, v/4);//读回的值范围是0~1023,结果除以4才能得到0~ 255的区间值

}

时间函数

delay()

该函数是延时函数,参数是延时的时长,单位是ms(毫秒)。应用延时函数的典型例程是跑马灯的应用,使用Arduino开发板控制4个LED依次点亮。

程序如下:

void setup( )

{

pinMode( 6, OUTPUT) ;//定义为输出

pinMode( 7, OUTPUT) ;

pinMode( 8, OUTPUT) ;

pinMode(9, OUTPUT);]

}

void loop()

{

int i;

for(i= 6;i<= 9;i++ )//依次循环4盏灯

{

digitalWrite( i, HIGH);//点亮LED

delay( 1000);//持续1s

digitalWrite( i, LOW);//熄灭LED

delay(1000) ;//持续1s

}

}

当然还有其他的时间函数,例如:delayMicroseconds()、millis()、micros() ,这里就不过多介绍了,感兴趣的小伙伴可以自行查询学习。毕竟度娘是我们最好的老师。

串口通信函数

串行通信接口(serial interface)使数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信的接口。

由于串行通信接口(COM)不支持热插拔及传输速率较低,因此目前部分新主板和大部分便携计算机已开始取消该接口,串口多用于工控和测量设备以及部分通信设备中,包括各种传感器采集装置、GPS信号采集装置、多个单片机通信系统、门禁刷卡系统的数据传输、机械手控制和操纵面板控制直流电机等,特别是广泛应用于低速数据传输的工程应用。

主要函数如下:

1.Serial.begin()该函数用于设置串口的波特率,即数据的传输速率,指每秒钟传输的符号个数。一般的波特率有9600、19200、57600、115200等。例如:Serial.begin(57600)

2.Serial.available()该函数用来判断串口是否收到数据,函数的返回值为int型,不带参数。

3.Serial.read()该函数不带参数,只将串口数据读入。返回值为串口数据,int型。

4.Serial.print()该函数向串口发送数据。可以发送变量,也可以发送字符串。

Serial.print("today is beautiful");

Serial.print(x,DEC);//以十进制发送变量x

Serial.print(X,HEC);//以十六进制发送变量x

5.Serial.println()

该函数与Serial.print()类似,只是多了换行功能。

串口通信函数使用例程:

int x=0;

void setu()

{

Serial.begin(9600);//波频率9600

}

void loop()

{if (Serial.avaiable())

{

x=Serial.read();

Serial.print("I have a girlfriend");

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

}

}

Arduino库函数

Arduino的库函数与C语言和C++一样,Arduino平台也有相关的库函数,提供给开发者使用。这些库函数的使用,与C语言的头文件使用类似,需要用#include语句,可将函数库加入Arduino的IDE编辑环境中,

如#include“Arduino.h”语句。

在Arduino开发中主要库函数的类别为:

数学库主要包括数学计算;

SD库函数用于读写SD卡;

Servo库函数用于舵机的控制;

Stepper库函数用于步进电机控制;

Ethernet库函数用于以太网的通信;

WiFi库函数用于WiFi的控制和使用;

EEPROM库函数用于向EEPROM中读写数据;

LiquidCrystal库函数用于液晶屏幕的显示操作;

Firmata库函数实现Arduino平台与PC串口之间的编程协议等。

诸如此类的库函数非常多,还包括一些Arduino平台爱好者自己开发的库函数。关于库函数这里就不过多介绍了。以上就是本次的Arduino学习笔记,希望对你有帮助。文中如有不妥,草率之处,敬请批评指正一起学习!

标签:函数,引脚,int,编程,Arduino,Serial,解析,库函数

来源: https://blog.csdn.net/VeryDelicious/article/details/110205274

c语言中pinMode的作用,Arduino编程基础与常用函数(详细)解析相关推荐

  1. Arduino编程基础与常用函数(详细)解析

    Arduino编程基础 关键字: if.if-else.for.switch.case.while.do-while.break.continue.return.goto. 语法符号:每条语句以&qu ...

  2. C语言中static的作用及C语言中使用静态函数有何好处

    转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static ...

  3. php的cookie变量作用,PHP语言中cookie的作用

    PHP语言中cookie的作用 时间:2015-11-9 Cookie的概念最早是由Netscape在1994年提出来的,它是保存在浏览器中的小信息包,更确切地说,Cookie是保存在客户端硬盘里的, ...

  4. 以下关于c语言中static和const,c语言中static const作用

    c语言中static const作用 (2012-06-21 07:51:08) 标签: it 关键字static: 1. 在函数体内,一个被声明为静态的变量在这一个函数被调用的过程中维持其值不变. ...

  5. c语言中fopen的作用,c语言中fopen的用法

    在C语言中,fopen也是一个打开文件的函数.在C语言的命令窗口中输入doc fopen或者help fopen就可以获得该函数的帮助信息.下面小编就跟你们详细介绍下c语言中fopen的用法,希望对你 ...

  6. Arduino成长日记2 - Arduino编程基础

    上一篇讲述了什么是Arduino以及各类Arduino开发板的参数,本篇开始介绍开发环境搭建以及一些编程基础. Arduino开发环境 开发环境即Arduino项目的编程环境 – Arduino ID ...

  7. c语言的point函数,C语言中friend友元函数详细解析

    C语言中friend友元函数详细解析 友元函数是可以直接访问类的私有成员的非成员函数.它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字frien ...

  8. c r语言中rank函数,R语言rank函数详细解析

    R语言rank函数详细解析 发布于 2016-01-04 16:26:04 | 557 次阅读 | 评论: 0 | 来源: PHPERZ R 数据统计分析语言R是用于统计分析.绘图的语言和操作环境.R ...

  9. java socket 异步回调函数,分享nodejs异步编程基础之回调函数用法

    nodejs异步编程基础之回调函数用法分析 本文实例讲述了nodejs异步编程基础之回调函数用法.分享给大家供大家参考,具体如下: Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实 ...

  10. Arduino 基于Stream类的函数详细说明

    Arduino 基于Stream类的函数详细说明 Stream类官方资料:https://www.arduino.cc/reference/en/language/functions/communic ...

最新文章

  1. 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架
  2. 原来 Excel 只需三步就可以给证件照换底色!
  3. C# Web实时消息后台服务器推送技术---GoEasy
  4. so使用原则(要么不支持,要么全部支持) 固定的运行平台 指定目录:System.load(/data/data/package-name/mydir/libmath.so);
  5. Unity 官方网站
  6. 二叉堆时间复杂度 php,二叉堆(Binary Heap)
  7. Windows2003屏蔽IP
  8. java排错_java排错之CPU高
  9. springCloud 学习记录过程
  10. SAP 产品条码WMS结合 以及ABAP script的集成 BarCode
  11. vscode 打开函数表_效率倍增!10个超级好用的VScode使用技巧!
  12. 元素内容必须由格式正确的字符数据或标记组成_字符编码是什么?html5如何设置字符编码?...
  13. 移动应用、大数据等推动广域网优化未来三年高速增长
  14. RPGMV修炼手册2——RPGMV的部分窗口代码学习
  15. AI领域算法作者及项目直播分享汇总-不断更新ing
  16. 心得分享——c语言如何将多个字符串赋值给字符串数组(即c语言如何输入并储存多个字符串)
  17. 战略 | 分析这25家千亿美元市值企业后,发现了这些趋势......
  18. 如何在三星Galaxy设备上更改主题
  19. 双等位基因(biallelic sites )和多等位基因(multiallelic sites)
  20. Happy Wu-新人报道!

热门文章

  1. Spring Boot(八)——Shiro+FreeMarker
  2. 长连接和短连接的定义区别,以及应用场景
  3. sop流程图模板_标准作业流程SOP详解,附流程图绘制规范,不愁不会画!
  4. 计算机论文摘要200字模板,设计论文摘要万能模板_论文摘要万能模板_论文摘要200字模板...
  5. 《SEM长尾搜索营销策略解密》一一2.5 长尾,互联网时代生存的良药
  6. 2021-06-02使用Digispark(ATTINY85)制作一个Badusb
  7. Cannot convert a symbolic Tensor (simple_rnn/strided_slice:0) to a numpy array. 报错 (解决方法)
  8. 报表工具对比选型系列用例——排名及跨行组统计
  9. uni-app实现微信小程序一键登录
  10. Error: java.lang.RuntimeException: Crunching Cruncher xxx.9.png failed,