艾巴生活网

您现在的位置是:主页>科技 >内容

科技

arduino的编程语言_arduino用什么语言编程

2023-07-27 22:02:01科技帅气的蚂蚁
Arduino语言Arduino使用C C编写程序。虽然C与C兼容,但它们是两种语言。C是面向过程的编程语言,C是面向对象的编程语言。早期的Arduino核心

arduino的编程语言_arduino用什么语言编程

Arduino语言Arduino使用C/C编写程序。虽然C与C兼容,但它们是两种语言。C是面向过程的编程语言,C是面向对象的编程语言。早期的Arduino核心库是用C语言写的,然后引入了面向对象的思想。目前最新的Arduino核心库是用C和C写的。

一般来说,Arduino语言是指Arduino核心库文件提供的各种应用编程接口(API)的集合。这些API由底层单片机支持库二次封装而成。比如使用AVR微控制器的Arduino的核心库就是AVR-Libc(基于GCC的AVR支持库)的二次封装。

在传统的开发模式下,你需要明确每个寄存器的意义以及它们之间的关系,然后通过配置多个寄存器来达到目的。

关键词:

如果。其他

后面必须跟一个问题表达式。如果该表达式为真,将执行紧跟在该表达式后面的代码。如果该表达式为false,则立即执行else之后的代码。只有在没有else的情况下才允许使用。

示例:

if (val==1) {

digitalWrite(LED,高);

}

用于指定区域代码重复引用一行的次数。

示例:

for(int I=0;我《10;i ) {

serial . print("ciao");

}

开关盒

如果说叙事是节目中的岔口,而切换格就是更多选项的交集。Swith case根据变量值给程序更多的选择。与一系列冗长的if语句相比,使用swith case可以使程序代码看起来更简单。

示例:

开关(传感器值){

案例23:

digitalWrite(13,高);

打破;

案例46:

digitalWrite(12,高);

打破;

default://以上条件都不满足时的默认操作。

digitalWrite(12,低);

digitalWrite(13,低);

}

在…期间

当while之后的条件成立时,执行括号中的程序代码。

示例:

//当传感器值小于512时,LED灯闪烁。

sensor value=analog read(1);

while(传感器值《512) {

digitalWrite(13,高);

延迟(100);

digitalWrite(13,高);

延迟(100);

sensor value=analog read(1);

}

做.在…期间

类似while,不同的是while之前的程序代码会执行一次,不管具体的条件表达式是真还是假。因此,如果一段程序代码至少需要执行一次,可以使用do…while架构。

示例:

做{

digitalWrite(13,高);

延迟(100);

digitalWrite(13,高);

延迟(100);

sensor value=analog read(1);

} while(sensorValue《512》);

破裂

让程序代码跳出循环,继续执行这个循环后的程序代码。此外,break还用于分隔switch case的不同叙述。

示例:

//当传感器值小于512时,LED灯闪烁。

做{

//按下按钮退出循环。

if (digitalRead(7)==高电平)

打破;

digitalWrite(13,高);

延迟(100);

digitalWrite(13,高);

延迟(100);

sensor value=analog read(1);

} while(sensorValue《512》);

继续

在循环内使用,可以强行跳出下一个程序,直接执行下一个循环。

示例:

for(light=0;光《255;灯光)

{

//忽略140到200之间的值。

如果((x)140)(x《200))

继续;

analogWrite(PWMpin,light);

延迟(10);

}

返回

函数的结尾可以通过return返回一个数值。

例如,有一个名为computeTemperature()的函数用于计算当前温度。如果你想把当前温度返回给温度变量,你可以这样写:

int temperature=compute temperature();

int computeTemperature() {

int温度=0;

温度=(analog read(0)45)/100;

返回温度;

}

转到

语法符号:

//单行注:

操作员:

%余数除法==等于!=不等于《= 小于等于》=大于或等于交集||并集

!反相

数据类型:

布尔布林

布尔变量只能为真或假。

字符字符

单个字符,如a,与一般的计算机惯例相同。Arduino将字符存储为数字,即使你看到的明显是文本。

当字符由数字表示时,其有效范围是-128到127。

注意:有两种主流的计算机编码系统,ASCII和UNICODE。ASCII代表127个字符,用于串行终端和分时计算器之间传输文本。

UNICODE可以表示大量字符,在现代计算机操作系统中,它可以用来表示多种语言。

ASCII仍然是传输位数较少的信息时用来交换信息的主要编码方式,如意大利语或英语,由拉丁文、阿拉伯数字和常用符号组成。

字节类型

存储值的范围从0到255。像字符一样,字节型变量只需要存储在一个字节(8位)的内存空间中。

Int整数

整数数据类型使用2字节的内存空间,可以表示的整数范围是32,768到32,767;整数变量是Arduino中最常用的数据类型。

无符号int无符号整数(绝对值)

无符号整数也使用2个字节的内存空间,这意味着它们不能存储负值,因此无符号整数可以表示从0到65,535的整数。

长整型

长整数使用的内存是整数的两倍,因此它们可以表示从2,147,483,648到2,147,483,647的整数。

无符号长整型

无符号整数可以表示从0到4,294,967,295的整数。

浮点浮点数

浮点数用于用小数点表示数值。每个浮点数将使用四个字节的RAM。注意芯片存储空间的限制,谨慎使用浮点数。

双双字节浮点

也称为双精度浮点数,最大可表示值为1.7974623157x10308。

字符串字符串

String用于表示文本信息,由多个ASCII字符组成(可以通过串口发送文本信息,也可以在LCD上显示)。字符串中的每个字符都存储在一个元组空间中,并在字符串末尾添加一个空字符,以提示Ardunio处理器字符串的结束。以下两个声明是相同的。

例如:

char string 1[]="Arduino";//7个字符1个空字符

char string 2[8]="Arduino";//与上行链路相同。

阵列数组

可以通过索引直接获得一串变量。如果你想存储不同级别的LED亮度,你可以声明6个变量:light01,light02,light03,light04,light05和light06,但实际上你有更好的选择,比如声明一个整数数组变量如下:

int light[6]={0,20,50,75,100}

变量声明中不直接使用“数组”这个词,而是[]和{}声明数组。

控制命令

数据类型转换:

char() byte() int() long() float()

常量:Arduino语言中预先定义了一些有特殊用途的保留字。

高|低

表示数字IO端口的电平,高表示高电平(1),低表示低电平(0)。“高”和“低”也用于表示您打开或关闭了Arduino引脚。

输入|输出

表示数字IO口方向,输入表示输入(高阻态),输出表示输出(AVR可以提供5V电压和40mA电流)。

真|假

True表示真(1),false表示假(0)。

变量:

变量用来指定Arduino内存中的一个位置,变量可以用来存储数据,程序员可以通过脚本代码无限次操纵变量的值。

因为Arduino是一个非常简单的微处理器,当你声明一个变量的时候,你必须先定义它的数据类型,这样微处理器才能知道需要多少空间来存储变量值。

以上是基础C语言的关键词和符号,有基础C语言的人应该明白它们的意思,这里就不做过多解释了。

阿杜伊诺语

结构

1、声明变量和接口名称(int valint ledPin=13)。

2、无效设置()

在程序开始时使用,初始化Arduino板的程序放在该函数的范围内。在编写主程序之前,用于使Arduino板设备正常工作的指令可以初始化变量、引脚接口模式、启用库等。(比如pinMode(ledPin,OUTPUT);)。

3、无效循环()

在setup()函数之后,也就是初始化之后,loop()允许你的程序循环执行。用它来运行Arduino。连续执行函数中的语句,这部分程序会重复执行,直到Arduino板关闭。

功能

数字输入输出

引脚模式(引脚,模式)

数字IO端口I/O模式定义功能,将接口定义为输入或输出接口,用于setup()功能。pin为0 ~ 13接口名称,模式为输入或输出。即“pinMode(接口名,输出或输入)”。

示例:

pinMode(7,输入);//将引脚7设置为输入模式。

pinMode(1,输入);//将引脚1设置为输入模式。

pinMode(2,输入);//将引脚2设置为输入模式。

pinMode(3,输入);//将引脚3设置为输入模式。

pinMode(4,输入);

pinMode(5,输入);

pinMode(6,输入);

数字写入(引脚,值)

数字IO口的输出电平定义了将数字接口值由高变低,开或关的功能,pin为0 ~ 13,value为高或低,即digitalWrite(接口名,高或低)。但是脚的位置必须通过pinMode明确表示为输入或输出模式digitalWrite才能生效。例如,定义高电平可以驱动LED。

示例:

digitalWrite(8,高);//将引脚8设置为输出高电位。

int digitalRead(引脚)

数字IO端口读取输入电平函数,并读取数字接口的值。pin为0 ~ 13,值为高或低,即digitalRead(接口名)。例如可以读取的数字传感器。当检测到脚部位置处于高电位时返回高电平,否则返回低电平。

示例:

val=digital read(7);//读取引脚7的值,并将其赋给val。

模拟输入输出

int analogRead(引脚)

模拟IO口读取功能从指定的模拟接口读取数值,Arduino对模拟值进行10位数字转换。此方法将输入的0-5电压值转换为0到1023之间的整数值。Pin为0 ~ 5 (Arduino Diecimila为0 ~ 5,Arduino nano为0 ~ 7)。即以“analogRead”为例,可以读取模拟传感器(10位ad,0 ~ 5V表示0 ~ 1023)。

示例:

val=analog read(0);//读取模拟引脚0的值,并将其赋给val变量。

analogWrite(引脚,值)

数字IO端口PWM输出功能,将模拟值(PWM波)写入一个接口。更改PWM引脚的输出电压值。对于ATmega168芯片的Arduino(包括Mini或BT)来说,这个函数可以在3、5、6、9、10、11接口上工作,即“analogWrite”,pin代表3、5、6、9、10、11,value代表0 ~ 255。例如,它可以用于电机PWM调速或音乐播放。

例如,输出电压为2.5伏(V),约为128。

示例:

analogWrite(9,128);//输出电压约为2.5伏(V)

扩展输入输出

移出(数据引脚、时钟引脚、位顺序、值)

SPI外部IO扩展功能,通常使用带SPI接口的74HC595进行8路IO扩展,将数据传输到用于扩展数字输出的寄存器,该功能通常用于扩展数字输出。该函数使用一个引脚表示数据,一个引脚表示时钟。dataPin是数据端口,clockPin是时钟端口,bitOrder用于指示位到位的移动方式。对于数据传输的方向(MSBFIRST优先,LSBFIRST优先),将以字节为单位输出值,表示要传输的数据(0 ~ 255)。此外,还需要一个IO端口来启用对74HC595的控制。

示例:

shiftOut(dataPin、clockPin、LSBFIRST、255);

无符号长脉冲(引脚,值)

脉冲长度记录功能设置读取脚位置状态的持续时间,并返回时间参数(us)。比如用红外线和加速度传感器测量某个值时,在时间单位内状态不会发生变化。Pin为0 ~ 13,值为高或低。例如,如果该值为高,则定时器将在pin输入为高时启动,在pin输入为低时停止,然后返回到该时间。

示例:

time=pulsein(7,高);//以时间为单位设置7脚的状态为高。

时间函数

无符号长毫秒()

返回时间函数(单位为ms),指程序运行并返回记录的参数的时间。参数溢出大概需要50天。

示例:

duration=millis()-last time;//表示从“lastTime”到现在的时间。

Delay(ms)延迟功能(以ms为单位),延迟一段时间,暂停晶片执行多少毫秒,

延迟(1000)是一秒钟。

示例:

延迟(500);//暂停半秒钟(500毫秒)

延迟微秒(us)延迟功能(us)将晶圆片的执行暂停多少微秒。

delay微秒(1000);//暂停1秒钟

数学函数

最小值(x,y)

求最小值,返回两个数中较小的一个。

示例:

val=min(10,20);//返回10

最大(x,y)

求最大值,返回两个数中较大的一个。

示例:

val=max(10,20);//返回20

abs(x)

计算绝对值,返回这个数的绝对值,可以把负数变成正数。

示例:

val=ABS(-5);//返回5

constraint(X,A,B)约束函数,下限A,上限B,判断X变量在A和B之间的状态,如果X小于A,返回A;在a和b之间返回x本身;大于b返回b

示例:

val=constraint(analog read(0),0,255);//忽略大于255的数字

映射(值,从低到高,从低到高)

约束函数,值必须介于fromLow和toLow之间,以及fromHigh和toHigh之间。根据fromLow和fromHigh范围,将value变量转换为toLow和toHigh范围。它通常用于读取模拟信号,并将其转换为程序所需的量程值。

例如:

val=map(analogRead(0),0,1023,100,200);//将analog0读取的信号转换为100到200之间的值。

幂(基数,指数)

根函数,底数的指数幂。返回一个数的指数值(底数)。

示例:

double x=pow(y,32);//将X设为y的32次方。

Sq(x)平方

Sqrt(x)根符号

返回double类型的平方根值。

示例:

双a=sqrt(1138);//返回1138383888086的平方根的近似值

三角函数

辛(拉德)

返回角度的三角函数的正弦值。

示例:

双正弦=sin(2);//近似值0.90929737091

一氧化碳(拉德)

回转角三角函数的余弦值。

示例:

双余弦=cos(2);//近似值-0.400000000005

谭(拉德)

返回角的三角函数的正切值。

示例:

双正切=tan(2);//近似值-2.20000.000000000005

随机数函数

随机种子(种子)

随机数端口定义功能,seed代表读取模拟端口的analogRead(pin)功能。

事实上,Arduino中的随机数是可以预测的。所以如果你需要一个真正的随机数,你可以调用这个函数来重置随机数种子。您可以使用随机数作为随机数的种子,以确保数字以随机的方式出现。通常模拟输入作为随机数的种子,可以产生与环境相关的随机数(例如无线电波、宇宙雷射线、电话和荧光灯发出的电磁波等。).

示例:

random seed(analog read(5));//使用模拟输入作为随机数种子

长随机(最大)

随机数函数,返回数据大于等于0且小于max。

示例:

long rand num=random(11);//返回一个0到10之间的数字。

长随机(最小值,最大值)

随机数函数,返回的数据大于等于min且小于max。

示例:

long randnum=random(0,100);//返回一个介于0和99之间的数字。

外部中断功能

attachInterrupt(中断,模式)

外部中断只能在数字IO端口2和3中使用。中断表示中断端口的起始0或1,表示一个功能函数,模式:低电平中断,改变时改变中断,上升时上升中断,下降时下降中断。

detachInterrupt(中断)

中断开关,中断=1开,中断=0关。

中断使能功能

Interrupts()启用中断。

NoInterrupts()中断禁用

串行收发器功能

串行开始(速度)

串行端口定义波特率功能,设置串行端口的每秒数据传输速率(波特率),并可以指定Arduino与电脑交换消息的速率。通常,我们使用9600 bps。速度表示波特率,如9600,19200等。与计算机通信时,使用以下值:300、1200、2400、4800、9600、14400、19200、28800、38400、57600或115200 bps(每秒字节数)。您也可以随时使用其他值,例如,与套接字0或1的通信需要特殊的波特率。在setup()函数中使用。

示例:

串行开始(9600)

int串行可用()

判断缓冲器状态。返回read()函数尚未读取的数据字节数。如果返回值为0,则意味着read()函数已经读取了所有串行端口上的数据。

示例:

int count=serial . available();

int Serial.read()

读取串口并返回接收到的参数。Serial.read()——读取连续输入的数据。读取1字节的串行数据

示例:

int data=serial . read();

Serial.flush()

清空缓冲区。有时你可以使用这个函数清除缓冲区中的数据,因为数据速度太快,程序无法处理数据。这个函数可以确保缓冲区中的数据是最新的。

示例:

serial . flush();

Serial.print(数据)

从串口输出数据。默认情况下,十进制的Serial.print (data)等于Serial.print (data,DEC)。

Serial.print(数据,编码)

通过串行端口发送数据提供了编码选项。如果未指定Serial.print (data,data base ),默认情况下,它将以纯文本形式发送。

示例:

serial . print(75);//打印出“75”

Serial.print(75年12月);//打印出“75”

Serial.print(75,十六进制);//"4b"(十六进制的75)

Serial.print(75,OCT);//"113"(75英寸八进制)

Serial.print(75,BIN);//“1001011”(75的二进制)

Serial.print(75,字节);//"k"(以字节传输,以ASCII编码显示)

Serial.println(数据)

从串行端口输出数据,后跟回车和换行符。此函数获得的值与Serial.print()相同。

Serial.println(数据,编码)

与Serial.print()相同,但在数据末尾有一个换行符()。它意味着你在键盘上输入一些信息后按回车键。

示例:

serial . println(75);//打印出“75”

Serial.println(75,DEC);//打印出“75”

Serial.println(75,十六进制);//"4B"

Serial.println(75,OCT);//"113"

Serial.println(75,BIN);//"1001011"

Serial.println(75,字节);//"K"

以上函数都是常用的基础函数,很多以后会慢慢学。

Arduino语言库文件官方库文件

EEPROM-EEPROM读写库

以太网-以太网控制器库

液晶显示器控制库

伺服伺服控制库

软件串行-任何数字输入输出端口模拟串行库。

步进电机控制程序库

有线电视/I2C公共汽车图书馆

Matrix-led矩阵控制库

Sprite-LED矩阵图像处理控制程序库

Arduuino复合运算符

=, -=, *=, /=

对一个变量和另一个参数或变量执行数学运算。=(以及其他)可以缩短语法长度。

句法语法

x=y;//相当于x=x y;

x-=y;//相当于x=x-y;

x *=y;//相当于x=x * y;

x/=y;//相当于x=x/y;

参数参数

x:任何变量类型

y:任何变量类型或常量

示例示例

x=2;

x=4;//x现在是6。

x-=3;//x现在是3。

x *=10//x现在30。

x/=2;//x现在为15

句法语法

x;//将x递增1,并返回x的旧值

//将x的值加一并返回原来的x的值。x;//将x递增1,并返回x //的新值将x的值加一并返回现在的x的值。

x-;//将x减1,并返回x的旧值//将x的值减一并返回原来的x的值。

-x;//将x减1,并返回x //的新值将x的值减一并返回现在的x的值。

因素参数

x:整数或长整型(可能无符号)

x:一个整数或长整数(可以无符号)

返回返回

变量的原始值或新增加/减少的值。

返回变量原始值或增加/消耗后的新值。

例子范例

x=2;

y=x;//x现在包含3,y包含3 //x现在为3,y为3

y=x-;//x又包含2,y还是包含3 //x现在仍然为2,y将为3