首页 > 编程知识 正文

不能做网页开发语言,arduino的开发语言

时间:2023-05-03 20:41:09 阅读:148218 作者:2667

最后20天后,突然懒惰,从今天开始重新开始20天

Arduino使用的语言是c语言。 以下内容是在学习一定的c语言的基础上,我们从Arduino的函数与C语言的不同之处,还有和89C51不同的地方

1、程序结构Arduino程序最基本的结构所需的代码是:

可以认为该程序由两个void函数“3358www.Sina.com/”和“3358www.Sina.com/”构成。 在Arduino中运行程序时,首先执行初始化部分,然后执行循环体部分,之后一直在循环体上重复执行。

初始化

示例: LED闪烁示例

void setup () pinmode ) 13、OUTPUT; //将数字输出端口13设为电平输出模式,执行一次就完成设定) }void loop () digital write (13,HIGH ); //将数字输出端口13设为高电平后,LED点亮(1000 ); 等待//digitalwrite(13,LOW )一段时间//将数字输出端口13置于低电平时,LED熄灭delay(1000 ); //稍等}注意:循环体

2、在变量定义上的示例中,多次操作了输出端口13。 在编程中,一般用变量定义需要多次重复使用的内容。 使用时,在必要的地方用变量名表示。 正确使用变量会使程序更简单、更灵活。

改变上面的例子,将13放入名为" n "的变量中

int n=13; //定义变量,将数字输出端口值“13”放入变量void setup () pinmode(n,OUTPUT )中。 //将数字输出端口13设为电平输出模式,执行一次即可完成设定(}void loop ) )数字写入(n,HIGH ); //将数字输出端口13设为高电平后,LED点亮(1000 ); //digitalwrite(n,LOW )等待一段时间//将数字输出端口13置于低电平时,LED熄灭delay(1000 ); //请稍等}这个地方和c语言一模一样,所以省略说明

3、函数和类库的pinMode ()给定数字输出端口设置电平模式;

digitalWrite (:设定某个数字输出端口的等级;

设置1个digitalWrite (参数pin、参数value )、pin )针脚; value :电平,常数为HIGH或LOW;

delay () :使程序停止一定时间。 单位为ms;

Serial类库函数begin (:设置串行通信的波特率;

Serial类库函数println (:通过串行端口发送一行字符

例如

voidsetup((serial.begin ) ) 9600; //通信波特率设置(}void loop ) ) serial.println ) ' Hello,PC!' ); //“你好,电脑! ”delay(1000; } 也就是说,我们在编程过程中,可以把需要运行一次的程序放入初始化部分,把需要循环运行的代码放入循环体部分Serial对象由Serial类库创建,默认情况下由Arduino包含并在编译期间自动添加。 因此,不需要在语句中向程序指定要添加的类库。

4、自定义函数函数与变量相同,程序编制人员可以自定义所需的函数。 Arduino语言已经具有几乎可以解决大多数所需函数的功能,但特殊实例可能需要函数来实现特定功能。

例如,如图4-5所示,有6个LED从左到右连接到7-2号引脚的装置。 该程序在开始执行时,得到3个变量LED1、LED2、LED3,为1~6之间的数字。 现在,需要编写程序的主要部分,点亮与给定变量值对应的编号的LED。

虽然只能通过switch语句或数组来解决,但Arduino没有合适的函数,所以只能进行定制。

定义此函数的代码如下所示。

voidled(intone,int two,int thr ) int LEDs [ ]={ 0,7,6,5,4,3,2 } /数组下标1~6分别对应于7~2,表示序号值对应引脚值pin mode () pinmode(5,OUTPUT ); pinmode(4,OUTPUT; pinmode(3,OUT

PUT); pinMode(2,OUTPUT); //以上代码设置2~7号因及哦啊为电平输出模式 digitalWrite(leds[one],HIGH); digitalWrite(leds[two],HIGH); digitalWrite(leds[two],HIGH);//设置各个要亮的LED对应引脚为高电平}

将这段函数的代码放入程序后,在程序初始化或循环体部分使用这个函数

LED (LED1,LED2,LED3);便可以实现点亮对应小灯的效果

自定义函数的代码要注意以下两点:

不能放在初始化或循环体部分内只能与初始化或循环体部分并列放置,一般是后面

大致如下

void setup(){}void loop(){}void LED(int one,int two,int thr){}

自定义函数在程序中可以按需要定义,没有定义数量限制,其定义语法如下:

数值类型 函数名(参数类型 参数名,参数类型 参数名······){函数内部代码} 数值类型可以设置函数输出值类型,void表示没有输出值。函数名命名规则同变量名命名一致。参数可以按需要设置,可以设置多个或者不设置,设置参数规则同变量设置语法,但参数之间不能用分号分隔,要用逗号分隔。

学了自定义函数后,我们可以发现,初始化和循环体两部分的语法和自定义函数的语法是一致的。其实,初始化部分和循环体部分就是定义两个类型为void的并且没有参数的函数,也可以分别称二者为:

setup()函数;loop()函数;

Arduino运行时其实就是运行一遍setup函数和其他的自定义函数,然后循环运行loop函数,编写Arduino程序的过程就是把一系列语句整合入setup函数和loop函数中。

前面的函数都是没有输出值,也就是C语言中所谓的返回值,这里的输出值使用方法和C语言中一样

return 输出的数据;

这个语句可以在函数中的任意位置使用,但使用后意味着这个函数运行结束了。

例如下面的自定义函数的输出数据会在串口监视器中显示

void setup(){ Serial.begin(9600); //设置通行波特率}void loop(){ int value=myfuction(); Serial.println(value); delay(1000);} int myfuction(){ int val=9; return val;} 5、 自定义类库

类库是由一系列变量和函数构成的集合,用于将复杂的功能封装成能简单调用的对象。类库初始化后叫做实例,编程中操作的各种实例称为对象。为了方便区分类库内的变量和函数与类库外的,我们把类库中的变量叫做属性,函数称为方法

类库封装了一系列方法或者一些底层编程,所以使用起来非常简便且容易移植。IDE自带类库不需要安装即可调用,如果要用第三方的类库,则需要导入才可以使用。

导入流程:

获得类库大包文件在IDE界面Sketch(草图)菜单下展开“导入库”子菜单单机“添加库”选项,然后在弹出的窗口中选择类库安装。

以下为一个简单的sldgb电码程序

int pin=13;void setup (){ pinMode(pin,OUTPUT);}void loop(){ dot();dot();dot(); dash();dash();dash(); dot();dot();dot(); delay(3000);}void dot(){ digitalWrite(pin,HIGH); delay(250); digitalWrite(pin,LOW); delay(250);}void dash(){ digitalWrite(pin,HIGH); delay(100); digitalWrite(pin,LOW); delay(250);}

该代码中的以下部分可以整理到类库:

用于闪烁的dot()和dash()两个功能函数;用于指定使用哪个管脚的灯的pin变量;初始化管脚的pinMode()函数调用。

一个类库至少包含两个文件:头文件(扩展名为“.h”)和源代码文件(扩展名为“.cpp”)。头文件包含类库的声明,即类库的功能说明列表,源代码文件包含类库的实际实现。

我们不妨给上面的类库起一个类库名Morse,那么需要在代码库目录里(项目文件下的libraries目录),创建一个名为“Morse”的子目录用于放置类库文件。新建头文件命名为“Morse.h”

1.头文件

头文件核心内筒,是一个封装了成员函数相关变量的类声明:

class Morse //声明类和类名{ public; //表明以下为类库内、外部方可调用的公共成分 Morse(int pin); //构造函数 void dot(); void dash(); private; //表明以下为类库内部方可调用的私有成分 int _pin;}; //注意分好“:”不能忽略

类里的函数与变量,其访问权限可以使public,也可以是private。类有个特殊的函数——构造函数,用于类实例化时执行一些工作,如不需要可以省略。构造函数的数据类型与类相同,且没有返回值

头文件里还有些其他杂项。

如,为了使用标准类型和Arduino语言的常量,编写库时需要include导入这些类库(IDE会在编译时自动为ino格式程序文件加上这些#include语句,类库等文件则需要手动编写#include语句)例如

#include "Arduino.h"

这里和89c52那边有点不一样,那边是#include<reg.h>,注意一下就好。

最后,为了防止多次引用头文件造成的各种问题,还需要封装整个头文件结构:

#ifndef Morse_h#define Morse_h //类库声明主题#endif

最终完成的头文件内容如下:

#ifndef Morse_h#define Morse_h#include "Arduino.h"class Morse { public; Morse(int pin); void dot(); void dash(); private; int _pin;}; #endif 2. 源代码文件Mrose.cpp

开头仍是一些#include语句。这些语句让下面的程序能够使用Arduino的标准函数和刚才在Morse.h中声明的类。

#include "Arduino.h"#include "Morse.h"

接下来是构造函数
明天再说啦

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。