Arduino常用语句

Posted Preference for stars

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino常用语句相关的知识,希望对你有一定的参考价值。

文章目录

零 初识Arduino



Nano板具体引脚分配

13 13 13 个数字输入/输出,程序中对应 0 − 13 0-13 013号引脚,输入输出HIGH和LOW电平。其中 3 、 5 、 6 、 9 、 10 、 11 3、5、6、9、10、11 35691011支持PWM输出,用模拟输出语句,值为 0 − 255 0-255 0255

0 、 1 0、1 01 端口对应串口输入 / / / 输出

2 、 3 2、3 23 端口对应 0 、 1 0、1 01 两个外部中断

6 6 6 个模拟输入,程序中对应 A 0 − A 5 A0-A5 A0A5 号引脚,注意是只是输入,读取值为 0 − 1023 0-1023 01023 。也支持数字输入/输出。

一 控制语句

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常用语句的主要内容,如果未能解决你的问题,请参考以下文章

arduino编程用的是啥软件

arduino怎么做一个呼吸灯

arduino怎么做一个呼吸灯

arduino for循环 时间控制?

Java--分支语句循环数组控制台输入语句常用数学函数

常用循环语句