最新Arduino编程参考手册中文版.docx
- 文档编号:1575987
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:71
- 大小:54KB
最新Arduino编程参考手册中文版.docx
《最新Arduino编程参考手册中文版.docx》由会员分享,可在线阅读,更多相关《最新Arduino编程参考手册中文版.docx(71页珍藏版)》请在冰豆网上搜索。
最新Arduino编程参考手册中文版
Arduino编程参考手册
程序结构
(本节直译自Arduino官网最新Reference)
在Arduino中,标准的程序入口main函数在内部被定义,用户只需要关心以下两个函数:
setup()
当Arduino板起动时setup()函数会被调用。
用它来初始化变量,引脚模式,开始使用某个库,等等。
该函数在Arduino板的每次上电和复位时只运行一次。
loop()
在创建setup函数,该函数初始化和设置初始值,loop()函数所做事的正如其名,连续循环,允许你的程序改变状态和响应事件。
可以用它来实时控制arduino板。
示例:
intbu
onPin=3;
voidsetup()
{
Serial.begin(9600);//初始化串口
pinMode(bu
onPin,INPUT);//设置3号引脚为输入模式
}
voidloop()
{
if(digitalRead(bu
onPin)==HIGH)
serialWrite('H');
else
serialWrite('L');
delay(1000);
}
控制语句
if
if,用于与比较运算符结合使用,测试是否已达到某些条件,例如一个输入数据在某个范围之外。
使用格式如下:
if(value>50)
{
//这里加入你的代码
}
该程序测试value是否大于50。
如果是,程序将执行特定的动作。
换句话说,如果圆括号中的语句为真,大括号中的语句就会执行。
如果不是,程序将跳过这段代码。
大括号可以被省略,如果这么做,下一行(以分号结尾)将成为唯一的条件语句。
if(x>
0)digitalWrite(LEDpin,HIGH);
if(x>
0)
digitalWrite(LEDpin,HIGH);
if(x>
0){digitalWrite(LEDpin,HIGH);}
if(x>
0){
digitalWrite(LEDpin1,HIGH);
digitalWrite(LEDpin2,HIGH);
}//都是正确的
圆括号中要被计算的语句需要一个或多个操作符。
if...else
与基本的if语句相比,由于允许多个测试组合在一起,if/else可以使用更多的控制流。
例如,可以测试一个模拟量输入,如果输入值小于500,则采取一个动作,而如果输入值大于或等于500,则采取另一个动作。
代码看起来像是这样:
if(pinFiveInput<500)
{
//动作A
}
else
{
//动作B
}
else中可以进行另一个if测试,这样多个相互独立的测试就可以同时进行。
每一个测试一个接一个地执行直到遇到一个测试为真为止。
当发现一个测试条件为真时,与其关联的代码块就会执行,然后程序将跳到完整的if/else结构的下一行。
如果没有一个测试被验证为真。
缺省的else语句块,如果存在的话,将被设为默认行为,并执行。
注意:
一个elseif语句块可能有或者没有终止else语句块,同理。
每个elseif分支允许有无限多个。
if(pinFiveInput<500)
{
//执行动作A
}
elseif(pinFiveInput>=1000)
{
//执行动作B
}
else
{
//执行动作C
}
另外一种表达互斥分支测试的方式,是使用switchcase语句。
for
for语句
描述
for语句用于重复执行被花括号包围的语句块。
一个增量计数器通常被用来递增和终止循环。
for语句对于任何需要重复的操作是非常有用的。
常常用于与数组联合使用以收集数据/引脚。
for循环的头部有三个部分:
for(初始化部分;条件判断部分;数据递增部分){
//语句块
。
。
。
}
初始化部分被第一个执行,且只执行一次。
每次通过这个循环,条件判断部分将被测试;如果为真,语句块和数据递增部分就会被执行,然后条件判断部分就会被再次测试,当条件测试为假时,结束循环。
示例:
//使用一个PWM引脚使LED灯闪烁
intPWMpin=10;//LED在10号引脚串联一个470欧姆的电阻
voidsetup()
{
//这里无需设置
}
voidloop()
{
for(inti=0;i<=255;i++){
analogWrite(PWMpin,i);
delay(10);
}
}
编码提示:
C中的for循环比在其它计算机语言中发现的for循环要灵活的多,包括BASIC。
三个头元素中的任何一个或全部可能被省略,尽管分号是必须的。
而且初始化部分、条件判断部分和数据递增部分可以是任何合法的使用任意变量的C语句。
且可以使用任何数据类型包括floats。
这些不常用的类型用于语句段也许可以为一些罕见的编程问题提供解决方案。
例如,在递增部分中使用一个乘法将形成对数级增长:
for(intx=2;x<100;x=x*1.5){
println(x);
}
输出:
2,3,4,6,9,
19,28,42,63,94
另一个例子,在一个for循环中使一个LED灯渐渐地变亮和变暗:
voidloop()
{
intx=1;
for(inti=0;i>-1;i=i+x){
analogWrite(PWMpin,i);
if(i==255)x=-1;//在峰值切换方向
delay(10);
}
}
switchcase
switchcase语句
就像if语句,switch...case通过允许程序员根据不同的条件指定不同的应被执行的代码来控制程序流。
特别地,一个switch语句对一个变量的值与case语句中指定的值进行比较。
当一个case语句被发现其值等于该变量的值。
就会运行这个case语句下的代码。
break关键字将中止并跳出switch语句段,常常用于每个case语句的最后面。
如果没有break语句,switch语句将继续执行下面的表达式(“持续下降”)直到遇到break,或者是到达switch语句的末尾。
示例:
switch(var){
case1:
//当var等于1执行这里
break;
case2:
//当var等于2执行这里
break;
default:
//如果没有匹配项,将执行此缺省段
//default段是可选的
}
语法
switch(var){
caselabel:
//statements
break;
caselabel:
//statements
break;
default:
//statements
}
参数
var:
与不同的case中的值进行比较的变量
label:
相应的case的值
while
while循环
描述:
while循环将会连续地无限地循环,直到圆括号()中的表达式变为假。
被测试的变量必须被改变,否则while循环将永远不会中止。
这可以是你的代码,比如一个递增的变量,或者是一个外部条件,比如测试一个传感器。
语法:
while(expression){
//statement(s)
}
参数:
expression-一个(布尔型)C语句,被求值为真或假
示例:
var=0;
while(var<200){
//做两百次重复的事情
var++;
}
do...while
do循环
do循环与while循环使用相同方式工作,不同的是条件是在循环的末尾被测试的,所以do循环总是至少会运行一次。
do
{
//语句块
}while(测试条件);
示例:
do
{
delay(50);//等待传感器稳定
x=readSensors();//检查传感器的值
}while(x<100);
break
break用于中止do,for,或while循环,绕过正常的循环条件。
它也用于中止switch语句。
示例:
for(x=0;x<255;x++)
{
digitalWrite(PWMpin,x);
sens=analogRead(sensorPin);
if(sens>threshold){//bailoutonsensordetect
x=0;
break;
}
delay(50);
}
continue
continue语句跳过一个循环的当前迭代的余下部分。
(do,for,或while)。
通过检查循环测试条件它将继续进行随后的迭代。
示例:
for(x=0;x<255;x++)
{
if(x>40&&x<
0){//createjumpinvalues
continue;
}
digitalWrite(PWMpin,x);
delay(50);
}
return
终止一个函数,并向被调用函数并返回一个值,如果你想的话。
语法:
return;
returnvalue;//bothformsarevalid
参数:
value:
任何类型的变量或常量
示例:
//一个函数,用于对一个传感器输入与一个阈值进行比较
intcheckSensor(){
if(analogRead(0)>400){
return1;
else{
return0;
}
}
return关键字对测试一段代码很方便,不需“注释掉”大段的可能是错误的代码。
voidloop(){
//在此测试代码是个好想法
return;
//这里是功能不正常的代码
//这里的代码永远也不会执行
}
goto
在程序中转移程序流到一个标记点
语法:
label:
gotolabel;//sendsprogramflowtothelabel
提示:
在C程序中不建议使用goto,而且一些C编程书的作者主张永远不要使用goto语句,但是明智地使用它可以简化某些代码。
许多程序员不赞成使用goto的原因是,无节制地使用goto语句很容易产生执行流混乱的很难被调试程序。
尽管如是说,仍然有很多使用goto语句而大大简化编码的实例。
其中之一就是从一个很深的循环嵌套中跳出去,或者是if逻辑块,在某人些条件下。
示例:
for(byter=0;r<255;r++){
for(byteg=255;g>-1;g--){
for(byteb=0;b<255;b++){
if(analogRead(0)>250){gotobailout;}
//其它语句。
。
。
}
}
}
bailout:
相关语法
分号
用于一个语句的结束
示例
inta=0;
提示
忘记在一行的末尾加一个分号将产生一个编译器错误。
该错误信息可能是明显的,且会提及丢失分号,但也许不会。
如果出现一个不可理喻的或看起来不合逻辑的错误,其中一个首先要做的事就是检查分号丢失。
编译器会在前一行的附近发出抱怨。
大括号
大括号(又称括弧或花括号)是C语言的主要组成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 Arduino 编程 参考手册 中文版