arduino入门1

文章目录

编程并不是一间很难的事,你可这样理解:
在编程中,你就像是一个老板arduino就像是你的员工,你可指挥arduino去做你想让它做的事。当然,要做的事得在员工的工作范围之内。
arduino这位员工就是一块电路板,他的所有工作任务的方法都存在他的芯片里,若果你像让做事,你大声喊当让没用。对于arduino这位“没有耳朵”的员工,想命令它工作,就要把安排给他的工作任务和完成的方法写进他的芯片里。
但是还有一个问题:这位员工虽然不是火星来得,但它还是不懂人类的语言,他有自己的语言,那就是arduino语言。这时你可能要发火了,你的员工听不仅听不懂你的口头命令,还不能按照你的描述任务(用你语言)去做事。其实arduino按自己的语言描述的任务工作当然不是因为他是一个高傲的员工,因为arduino语言描述的人武对它来说更详细,在工作中能把任务做的更好。他能一丝不苟的按arduino语言描述要求去做,不会像其他员工那样偷懒。
给arduino下命令,就像安排一道道工作程序,而编写这些程序,就编程了。
要给arduino编程,就要学习arduino语言。那么是否要先精通了arduino语言才能给arduino编程呢?当然不是,那样太费时而且效率极低,可以跟着例子边做边实验边理解每句代码,
arduino语言在编程语言中并不是一种生僻的语言,其建立在C语言/C++语言基础上,语法和C语言类似,但是在类库方面做了一些改变,把相关的参数设置函数化。写arduino语言程序回避其他AVR单片机程序更简便,对于有编程基础的很容易上手。



程序结构

程序编译区中的代码就是arduino语言编写的,也是arduino程序最基本的程序结构,其中双斜杠“//”后面代表注释内容,两句英语注释的内容表述如下:

void  setup(){

//把代码放在这里,让它只运行一次;
}
void loop(){
//把代码放在这里,让它反复运行;
}

可以把这段程序看作两部分,其中,一个打括号“{}”及其掐免得代码为一个整体,为一个部分。这两部分是使用定义函数的语法来写的,这里暂时可以把大括号前面的内容当做一个部分的开始的符号,大括号里就是这部分要运行的代码放置位置,我们成这部分为
初始化
循环体
下边面代码是一个LED闪烁的程序,在arduino运行时,会先运行一次初始化部分的代码,然后重复地运行循环体部分的代码。也就是说,在编程工程中,可以吧需要运行一次的程序放入初始化部分,把需要循环的代码放入循环体部分。
在这里插入图片描述

01 void setup(){
02  pinMode(13,OUTPUT);
04            //将数字输出口13设置为电平输出模式,
03 }
05 void loop(){
06 digitalwrite(13,HIGH)//将数字输出口13设置为高电平,LED将会亮起
07 delay(1000);           //等待一段时间
08 digitalwite(13,LOW);   //将数字输出口13设置为高电平,LED将会熄灭
09 delay(1000);           //等待一段时间
10}

变量定义

一个程序包含的部分往往不止这些,变量、函数、类库和各种语法结构都是常见的。
代码中对数字输出口‘13’在代码中出现了很多次。在编程中一般会把需要重复使用多次的内容变量来定义,使用的时候在需要的地方用变量名表示,适当使用变量能让程序更简便和灵活。

01  int n =13;   //定义变量n,将数字口输出口的值‘13’放入变量
02 void setup(){
03  pinmode(n,OUTPUT)
   //将n的值(既13)数字输出口设置为电平的输出模式,执行一次即可完成设置
04}
05 void loop(){
06 digitalwrite(n,HITG);//将n的值(13)数字输出口设置为电平输出模式,LED会亮起
07 delay(1000);         //等待1毫秒
08 digitalwrite(n,LOW); //将n的值(13);数字输出口设置为低电平,LED会熄灭
09 delay(1000);         //等待1毫秒

代码中定义了一个名为n的变量,并将数字输出口13的值放入了变量中。变量定义的语句各式为:
数据类型 变量名 = 变量值;
或者为:
== 数据类型 变量名;==
此时变量是没有值得,需要在定义变量后再给变量赋值:
变量命=变量值;
例如:
int i =123;
char val = “字符串”
代码中要定义的变量的值是一个整数,所以数据类型用int(整形的意思)。数据类型和变量名之间用空格,变量和变量值之间用“=”,表示赋值的意思,定义字符串和变量时,要把字符串放入半角引号内。变量名要用符号命名规则:

  • 只能是英文子母大写A到Z,小写a到z,数字0~9或者下划线_ 组成;
  • 第一个子母必须是子母或者下划线开头;
  • 不能使用arduino语言关键字来命名变量,以免冲突;
  • 变量名区分大小写。

这是一个简单的变量定义语法,也是标准一行代码,所以后面要用“;”表示结束这行代码。代码中所有语句都是用;结束的,然后与再分别被大括号所包含,,初始化和循环体分别算是一段代码,大括号是其中一段代码的定义符号,所以不要尝试在大括号后面加上;
代码定义了变量以后,所有要用的数字输出口值13的语句都可以用变量n来代替13。程序里用变量代替的值是简单的数字13,如果程序要一个比较长或者复杂的数字呢?如果要用重复使用这个数字上百次呢?改程序中这个值的时候可以想而知会很麻烦。而用变定义后一目了然,变量名会告诉你它就再这里,‘=’符号后面就是你还要改的地方。这就是变量带给编程者的简便和灵活之处。



函数和类库

在前面的代码中,应该可以理解初始化和循环体部分既变量定义的语句了。接下来将介绍代码中的3、8、9、10、11行的结构。
别看这几行代码不一样,没有共同规律,但其实都是函数。可以想想数学中函数的表示方法,数学中一把函数表示为f(x),g(x),当多个函数一起出现时,还可能给函数加下标序号来区分,
在编程中,函数是很常见的,加下标太过麻烦,函数的名称可以和变量的名称一样随意起,以方便记忆,只要符合命名规则就行。

  • 代码pinMode(): 设置某个数字输出口的电平模式;
  • 代码digitalWrite(): 设置某个数字输出口的电平;
  • delay(); 让程序暂停一会,单位为毫秒。

编程中的函数不像数学中常见的地函数只有一个参数,其可以有多个参数,如函数digitalWrite()的语法为:
digital Write(参数pin,参数value)

  • pin:设置一个引脚;
  • value:电平,常见为HIGH 或LOW。

一般把一个函数作为一句代码,把变量、常量或值作为其参数。如代码就是一个arduino与pc串口通信的程序。

01 void setup(){
02 serial.begin(9600)  //设置通信波特率
03}
04 void loop(){
05 serial.printlan(“hello,pc!); //发送“hello,pc!”
06 delay (1000)//等待一段时间
08}

程序中用到了以下函数。

  • Serial类库函数begin(): 设置串口通信的波特率;
  • Serial类库函数println(): 通过串口发送一行字符。

这两个函数和前面的的函数不一样,名字中有“.”符号分割,其中“.”符号后面表示一个函数(也称为“方法”),前面表示一个对象(这里默认的串口对象Serial)。serial对象是由Serial类库创建地,由于这个类库是被arduino默认默认添加的包含的,在编译过程中会自动加入,所以不需要用语句在程序中指定加入那个类库。
对于一个复杂的程序,使用一大堆变量和函数式很常见的。假设现在又一个arduino做的舵机机器人,舵机的角度就是机器人的手臂角度,想通过程序来控制机器人摆动手臂。要控制舵机的角度,需要给舵机一个pwm(脉宽调制)信号,需要如下功能:

  • 提供一个角度,使舵机转动到这个角度;
  • 提供精确微妙使舵机转精确角度;
  • 记录最后一次命令转到的角度。
    如果把这些功能考已有的函数写出来,将会需要很多的变量,在程序中进行很多的运算才能达到的功能。好消息是,arduino IDE 中有一个舵机类库,类库中有实现所需功能的函数:
  • write(): 使舵机转动到0~180之间任意角度;
  • witeMicroseconds(): 用一个微妙单位的数值使舵机转动;
  • read():最近一次调用write()函数的角度。
    有了这个类库,所有的问题迎刃而解。使用这个类库首先需要在前面的程序初始化部分引入这个类库的头文件S
    ervo.h:
    #include <servo.h>
    然后需要用类名Servo创建对象(可以创建多个),如创建一个名为hand、另个名为foot的对象
    servo hand;
    servo foot;
    创建了舵机对象之后就你才能使用舵机类库的函数了,如用函数write()让舵机对象hand转动到60°,让舵机对象foot转动到140°:
    hand.attach(3); //定义链接舵机信号线的控制引脚
    foot.attach(9);
    hand.write(60);
    foot.write(140);
    程序运行后,两个舵机hand和foot分别转动到指定角度。使用类库后,程序更接近人的语句表达格式,代码更简洁。

自定义函数

函数和变量一样,程序编写者可以自定义需要的函数。虽然arduino语言中已经有了基本能解决大部分需要的函数,但对于特殊的实力,可鞥需啊哟用到能到到特定功能的函数。

自定义类库

类库是由一系列变量和函数构成的集合,用于将复杂的功能封装成简单调用的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值