Arduino开发从入门到实战程序源代码Word文档下载推荐.docx
《Arduino开发从入门到实战程序源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Arduino开发从入门到实战程序源代码Word文档下载推荐.docx(122页珍藏版)》请在冰豆网上搜索。
//点亮与j引脚相连的LED灯
delay(200);
//延时200ms
}
for(j=6;
j=1;
j--)//每隔200ms依次熄灭与6~1引脚相连的LED灯
digitalWrite(j,LOW);
//熄灭与j引脚相连的LED灯
//灯闪烁子程序
voidflash(void)
unsignedcharj,k;
for(k=0;
k=1;
k++)//闪烁两次
j++)//点亮与1~6引脚相连的LED灯
j++)//熄灭与1~6引脚相连的LED灯
//LED灯花样显示样式2子程序
voidstyle_2(void)
//设置k的初值为1
for(j=3;
j--)
//点亮灯
digitalWrite(j+k,HIGH);
delay(400);
//延时400ms
k+=2;
//k值加2
k=5;
//设置k值为5
j=3;
j++)
//熄灭灯
digitalWrite(j+k,LOW);
k-=2;
//k值减2
//LED灯花样显示样式3子程序
voidstyle_3(void)
//LED灯花样显示样式3子程序
k=3;
//设置k值为3
for(j=2;
voidsetup()
unsignedchari;
for(i=1;
i=6;
i++)//依次设置1~6个数字引脚为输出模式
pinMode(i,OUTPUT);
//设置第i个引脚为输出模式
voidloop()
style_1();
//样式1
flash();
//闪烁
style_2();
//样式2
style_3();
//样式3
第六章按键开关输入
6.4.2程序源码
intLED=13;
//设置控制LED的数字I/O脚
pinMode(LED,OUTPUT);
//设置数字I/O引脚为输出模式
voidloop(){
inti;
while
(1)
i=analogRead(A0);
//读取模拟0口电压值
if(i>
1000)//如果电压值大于1000(即4.88V)
digitalWrite(LED,HIGH);
//设置第13引脚为高电平,点亮LED灯
else
digitalWrite(LED,LOW);
//设置第13引脚为低电平,熄灭LED灯
6.6拓展实验
#defineLED13
#definesw7
intval=0;
intold_val=0;
intstate=0;
//定义状态位
voidsetup(){
pinMode(sw,INPUT);
voidloop(){
val=digitalRead(sw);
if((val==HIGH)&
&
(old_val==LOW)){
state=1-state;
//状态位取反
delay(10);
old_val=val;
if(state==1){
else{
第七章触摸开关
7.4.2程序源码
#defineLED13//设置控制LED的数字I/O脚
i=digitalRead(10);
//读取电压值
if(i==LOW)//如果为低电平
digitalWrite(LED,HIGH);
else
digitalWrite(LED,LOW);
7.6拓展实验
#defineLED13//设置控制LED的数字I/O脚
i=digitalRead(10);
if(i==LOW){//如果为低电平
while
(1){
delay(10000);
break;
}
}
第8章温度与湿度监测
8.4.2程序源码
#defineDHT11_PIN0
byteread_dht11_dat()//读取DHT11数据(每次获取8位)
bytei=0;
byteresult=0;
for(i=0;
i<
8;
i++)
while(!
(PINC&
_BV(DHT11_PIN)));
delayMicroseconds(30);
if(PINC&
_BV(DHT11_PIN))
result|=(1<
<
(7-i));
while((PINC&
returnresult;
//返回获取的结果
DDRC|=_BV(DHT11_PIN);
PORTC|=_BV(DHT11_PIN);
Serial.begin(19200);
Serial.println("
Ready"
);
//串口输出提示信息
bytedht11_dat[5];
bytedht11_in;
bytei;
PORTC&
=~_BV(DHT11_PIN);
delay(18);
delayMicroseconds(40);
DDRC&
dht11_in=PINC&
_BV(DHT11_PIN);
if(dht11_in)
dht11startcondition1notmet"
return;
delayMicroseconds(80);
dht11_in=PINC&
if(!
dht11_in)
dht11startcondition2notmet"
5;
dht11_dat[i]=read_dht11_dat();
//获取40位温度与湿度数据
bytedht11_check_sum=dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];
if(dht11_dat[4]!
=dht11_check_sum)//校验
DHT11checksumerror"
Serial.print("
Currenthumdity="
Serial.print(dht11_dat[0],DEC);
//显示湿度整数部分
."
Serial.print(dht11_dat[1],DEC);
//显示湿度小数部分
%"
temperature="
Serial.print(dht11_dat[2],DEC);
//显示温度整数部分
Serial.print(dht11_dat[3],DEC);
//显示温度小数部分
C"
8.6拓展实验
intLED=8;
intBuzzer=7;
byteread_dht11_dat()
pinMode(Buzzer,OUTPUT);
i++)//获取40位温度与湿度数据
=dht11_check_sum)//校验
if(dht11_dat[0]==25)
if(dht11_dat[2]==28)
digitalWrite(Buzzer,HIGH);
digitalWrite(Buzzer,LOW);
delay(2000);
第9章气体监测
9.4.2程序源码
Serial.begin(9600);
intval;
val=analogRead(0);
//获取当前气体浓度
Serial.println(val,DEC);
//十进制串口输出
第十章LCD显示
10.4程序设计
2)实验程序
LCD显示实验参考程序源代码为:
intDI=12;
intRW=11;
intDB[]={3,4,5,6,7,8,9,10};
//使用数组来定义总线需要的引脚
intEnable=2;
voidLcdCommandWrite(intvalue){
//定义所有引脚
inti=0;
for(i=DB[0];
i<
=DI;
i++)//总线赋值
digitalWrite(i,value&
01);
//因为1602液晶信号识别是D7~D0(不是D0~D7),这里是
//用来反转信号
value>
>
=1;
digitalWrite(Enable,LOW);
delayMicroseconds
(1);
digitalWrite(Enable,HIGH);
//延时1ms
}
voidLcdDataWrite(intvalue){
digitalWrite(DI,HIGH);
digitalWrite(RW,LOW);
=DB[7];
i++)
voidsetup(void){
for(i=Enable;
delay(100);
//短暂的停顿后初始化LCD
用于LCD控制需要
LcdCommandWrite(0x38);
//设置为8位接口,2行显示,5×
7文字大小
delay(64);
delay(50);
delay(20);
LcdCommandWrite(0x06);
//输入方式设定
//自动增量,没有显示移位
LcdCommandWrite(0x0E);
//显示设置
//开启显示屏,光标显示,无闪烁
LcdCommandWrite(0x01);
//屏幕清空,光标位置归零
LcdCommandWrite(0x80);
voidloop(void){
LcdCommandWrite(0x80+4);
//写入欢迎信息
LcdDataWrite('
W'
e'
l'
c'
o'
m'
!
'
LcdCommandWrite(0xc0);
//定义光标位置为第2行第1个位置
I'
'
L'
v'
A'
r'
d'
u'
i'
n'
delay(5000);
第11章电机控制
11.4
2)步进电机实验程序
#include<
Stepper.h>
//这里设置步进电机旋转一圈是多少步
#defineSTEPS100
//attachedto设置步进电机的步数和引脚
Stepperstepper(STEPS,8,9,10,11);
//定义变量用来存储历史读数
intprevious=0;
//设置电机每分钟的转速为90步
stepper.setSpeed(90);
intval=analogRead(0);
//移动步数为当前读数减去历史读数
stepper.step(val-previous);
//保存历史读数
previous=val;
11.6
voidsetup(){
//初始化数字的引脚为输出
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
digitalWrite(13,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
digitalWrite(12,LOW);
第12章
第12章蓝牙通信
12.4程序设计
while(Serial.available())
charc=Serial.read();
if(c=='
)
HelloIamamarino"
第13章Wi-Fi无线数据传输
13.4程序设计
voidloop(){
HelloWorld!
"
第14章
第14章ZigBee无线数据传输
14.4程序设计
ZigBee无线通信实验参考程序源代码分为主机程序和从机程序两部分。
1)主机程序
intbutton_open=4;
//开灯按钮