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
推荐阅读
- 如何涂指甲油,怎样涂指甲油干得快
- 纪念碑谷艾达的梦攻略第四关,纪念碑谷艾达的梦攻略
- udk虚幻4引擎(游戏开发包工具)软件介绍(udk虚幻4引擎(游戏开发包工具))
- OG梅奥为什么离开nba Pubmed GIST文献月评第十九期(Jun 2018)
- 12306用户名和密码忘记怎么找回账号,12306用户名和密码忘记怎么找回
- 哈尔滨市极乐寺简介
- 二人麻将打法技巧,迅速如何掌握二人麻将技巧
- 故宫门票多少钱一张2021,故宫门票多少钱
- 如何删除微信中的表情包,微信如何删除自己保存的表情
- dnf已经有红字的怎么把红字洗掉,dnf已经洗出红字的装备怎么洗掉
- 海蛏子的家常做法,海蛏子的做法大全
- 微信聊天记录怎么恢复吗,微信聊天记录怎么恢复方法:
- qq飞车帧数如何能锁,QQ飞车帧数如何修改
- 1盎司相当于多少克黄金,盎司等于多少克及一盎司黄金等于多少克
- 怎么恢复路由器出厂,怎样恢复路由器出厂设置
- 触手tvlogo怎么买,如何录制触手TV文章
- 藏语常用问候语及礼貌语 旅行必备
- 腾讯文章的会员怎么取消自动续费,腾讯文章VIP会员怎么取消自动续费设置
- 支付宝绑定银行卡与银行预留手机号不符,支付宝绑定银行卡提示与预留手机号码不一致
- 如何饲养土狗,饲养土狗的实用方法