Arduino常用语句
Posted Preference for stars
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino常用语句相关的知识,希望对你有一定的参考价值。
文章目录
零 初识Arduino
13 13 13 个数字输入/输出,程序中对应 0 − 13 0-13 0−13号引脚,输入输出HIGH和LOW电平。其中 3 、 5 、 6 、 9 、 10 、 11 3、5、6、9、10、11 3、5、6、9、10、11支持PWM输出,用模拟输出语句,值为 0 − 255 0-255 0−255。
0 、 1 0、1 0、1 端口对应串口输入 / / / 输出
2 、 3 2、3 2、3 端口对应 0 、 1 0、1 0、1 两个外部中断
6 6 6 个模拟输入,程序中对应 A 0 − A 5 A0-A5 A0−A5 号引脚,注意是只是输入,读取值为 0 − 1023 0-1023 0−1023 。也支持数字输入/输出。
一 控制语句
if语句
if (表达式)
语句
else
语句2
if (表达式1)
语句
else if (表达式1)
语句2
else
语句3
switch语句
switch (表达式)
case 常量表达式1:
语句1
case 常量表达式2:
语句2
default:
语句3
while语句
while (表达式) 语句
do
语句
while (表达式)
//先执行语句,判断为真继续循环
for语句
for (表达式1; 表达式2; 表达式3) 语句
//for (i=1; i<10; i++) j++
break语句
常用在循环和switch中,跳出switch执行后续程序
continue语句
跳出循环体剩余的语句强制执行下一次循环,只用在for,while,do-while
goto 语句
goto 语句标号;
尽量别用
二 程序结构
void setup()
用于初始化,放在程序开头,用于设置引脚输入/输出模式、初始化串口
void loop()
执行程序,死循环
void setup()
pinMode(13, OUTPUT);
void loop()
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
三 Arduino的基本函数
3.1 数字I/O
数字引脚0~13,模拟引脚A0-A7,其中3、5、6、9、10、11支持PWM输出(0-255)
pinMode(pin, mode) // mode = INPUT/OUTPUT
digitalWrite(pin,value) //value = HIGH/LOW
digitalRead(pin) //HIGH/LOw
3.2 模拟I/O
analogReference(type)
//DEFAULT:默认5V
//INTERNAL:低电压模式
//EXTERNAL: 扩展模式
analogRead(pin) //返回值为int型,0~1023
analogWrite(pin,value) //0~255
3.3 高级I/O
shiftOut(dataPin,clockPin,bitOrder,val)
dataPin:数据输出引脚
clockPIn:时钟输出引脚
bitOrder:数据位移顺序选择位
val:所要输出的数据值
pulseIn(pin,state,timeout)
读取引脚脉冲的时间长度
3.4 时间函数
millis()
delay(ms)
delayMicroseconds(us)
3.5 数学库
min(x,y)
max(x,y)
abs(x) //绝对值
constrain(amt,low,higth)
ant<low,返回low;ant>higth,返回higth;后者返回amt
map(x,in_min,in_max,out_min,out_max)
将[in_min,in_max]等比映射到[out_min,out_max]
sin(rad)
cos(rad)
tan(rad)
3.6随机数
randomSeed(seed)
设指随机数种子,无返回值
random(howsmall,howbig)
返回一个[howsmall,howbig]范围内的long型随机数
3.7位操作
3.8 中断函数
interrupts()
打开中断
nolnterrupts()
关闭中断
attachInterrupt(interrupt,function,mode)
中断源、中断处理函数、触发模式。
参数中断源可选值0或1,在Arduino中一般对应2号和3号数字引脚 ;参数中断处理函数用来指定中断的处理函数,参数值为函数的指针,触发模式有4种:LOW、CHANGE、RISING、FALLING。
例子:
int pin = 13;
volatite int state - LOW;
void setup()
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
void loop()
digitalWrite(pin, atate);
//中断处理函数
void blink()
atate = !atare;
3.9串口通信
Serial.begin(9600)
if (Serial.available())
判断串口是否收到数据,返回值为int型
brightness = Serial.read();
读取数据到brightness
3.10 SPI接口
begin()
setBitOrder()
setClockDivider()
setDataMode()
transfer()
end()
begin函数用于初始化SPI总线
setBitOrder作用是在设置串行数据传输时是先传输低位还是先传输高位
setClockDivider函数作用是设置SPI串行通信的时钟,分频值可选2、4、8、16、32、64、128,
setDataMode函数作用是设置SPI数据模式
transfer函数用来传输一个数据
end函数停止SPI总线的使用
四 Arduino硬件平台
4.1 Arduino的原理图
4.2 串行通信口的使用
AVR 单片机的串行通信口(RxD和TxD)
发送端:
void setup()
Serial.begin(9600);
void loop()
delay(1000);
Serial.print(0x55,BYTE)
接收端:
int ledFlag;
void setup()
Serial.begin(9600);
pinMode(13,OUTPUT)
void loop()
byte RXData;
if (Serial.available())
RXData = Serial.read();
if (RXData == 0x55)
if(ledaFlag == 0)
ledFlag = 1;
digitalWrite(13,HIGH);
else
ledFlag = 0;
digitalWrite(13,LOW);
4.3 数字I/O口的使用
int keySum = 0;
void setup()
Serial.begin(9600);
pinMode(13,OUTPUT);
pinMode(2,INPUT);
void loop()
if(LOW == digitalRead(2))
delay(50);
if(LOW == digitalRead(2))
digitalWrite(13,HIGH);
keySum++;
Serial.print(keySum,DEC);
while(1)
if(HIGH == digitalRead(2))
delay(50);
if(HIGH == digitalRead(2))
break;
digitalWrite(13,LOW);
4.4 模拟I/O口的使用
void setup()
Serial.begin(9600);
void loop()
delay(1000);
Serial.print(analogRead(0),DEC)
4.5 烧写引导程序
五 Arduino基本扩展模块
5.1 L293 Motor Shield
void setup()
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
void loop()
digitalWrite(4,HIGH);
for(int i=0; i<255; i++)
analogWrite(5,i);
delay(100);
for(int i=255; i>0; i--)
analogWrite(5,i);
delay(100);
digitalWrite(4,LOW);
for(int i=0; i<255; i++)
analogWrite(5,i);
delay(100);
for(int i=255; i>0; i--)
analogWrite(5,i);
delay(100);
void steup()
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
void loop()
if(LOW == digitalRead(4))
digitalWrite(4,HIGH);
else
digitalWrite(4,LOW);
for(int i=0; i<255, i++)
if(i<255)
analogWrite(5,i);
else
analogWrite(5,511-i);
delay(100);
5.2 Input Shield
void setup()
Serial.begin(9600);
void loop()
delay(1000);
Serial.print("horizontal: ");
Serail.print(analogRead(1), DEC);
Serial.print(", vertical: ");
Serail.println(analogRead(1), DEC);
int verticalVal;
void setup()
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
void loop()
delay(100);
verticalVal= analogRead(0);
if(verticalVal < 512)
digitalWrite(4, HIGH);
analogWrite(5, map(512-verticalVal,0,511,0,255 ));
else
digitalWrite(4, LOW);
analogWrite(5, map(verticalVal,512,1023,0,255 ));
5.3 LCD Keypad Shield
5.4 Ethernet Shield
5.5 I/O扩展板
六 Arduino的扩展库
以上是关于Arduino常用语句的主要内容,如果未能解决你的问题,请参考以下文章