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的扩展库

  • 20
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Arduino编程语句是一种基于C/C++语言的语言,用于编写Arduino控制器的程序。以下是一些常用Arduino编程语句: 1. pinMode(pin, mode):设置引脚的输入输出模式,其中pin为引脚编号,mode为输入或输出模式。 2. digitalWrite(pin, value):向引脚写入数字值,其中pin为引脚编号,value为0或1。 3. digitalRead(pin):读取引脚上的数字值,其中pin为引脚编号。 4. analogWrite(pin, value):向引脚写入模拟值,其中pin为引脚编号,value为0到255之间的数字。 5. analogRead(pin):读取引脚上的模拟值,其中pin为引脚编号。 6. delay(ms):延迟一定时间,其中ms为毫秒数。 7. Serial.begin(baudrate):初始化串口通信,其中baudrate为波特率。 8. Serial.print(data):向串口发送数据,其中data可以是数字、字符或字符串。 9. Serial.read():读取串口接收到的数据。 10. if(condition){…}:条件语句,其中condition为判断条件,如果为真,则执行花括号中的代码。 11. for(initialization; condition; increment){…}:循环语句,其中initialization为循环变量初始化语句,condition为循环条件,increment为循环变量增量语句,花括号中的代码会被循环执行。 12. while(condition){…}:循环语句,其中condition为循环条件,只要条件为真,花括号中的代码会被不断执行。 以上是一些常用Arduino编程语句,还有很多其他的语句可以用于实现不同的功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值