先把程序复制进去:
- int ledPin=5; //设定控制LED的数字IO脚
- void setup()
- {
- pinMode(ledPin,OUTPUT);//设定数字IO口的模式,OUTPUT 为输出
- }
- void loop()
- {
- digitalWrite(ledPin,HIGH); //设定PIN5脚为HIGH = 5V左右
- delay(2000); //设定延时时间,2000 = 2秒
- digitalWrite(ledPin,LOW); //设定PIN5脚为LOW = 0V
- delay(2000); //设定延时时间,2000 = 2秒
- }
复制代码
图中int;void setup等褐色的文字是系统命令,OUTPUT等蓝色文字是命令的功能开关,黑色文字是变量。
程序写好以后点击编译按钮进行编译。
编译完成后会显示出来编译后的文件大小,本次编译出来的程序大小为1026字节。
然后把编译好的程序下载到arduino控制板上,点击下载按钮。
下载完成后会有提示
把所有的ledpin换成xxx试试,一样可以滴~~~ledpin只是自己定义的一个名字,作用只是方便识别辨认。
本次实验效果如下,闪烁着光芒的灯。。。
http://player.youku.com/player.php/sid/XMjg0MTA0Mzg4/v.swf
总结:
int;void setup等褐色文字是系统命令,OUTPUT等蓝色文字是系统命令的功能开关,黑色文字是变量。
在"int ledpin=5"中;设置了LED的数字IO脚,ledpin仅仅是5号数字端口自定义出来的名字,变成xxx等都可以。对于多脚IO操作的程序中,为每一个引脚定义名字是有必要性的,程序复杂后方便功能识别。arduino学习笔记16六灯闪烁实验
通过上一节学习,知道了怎样让一个led进行闪烁,下面的实验会对六个led进行控制,先看硬件连接图。
按照上面的硬件连接方法接好后,咱们来测试两段程序,看看其中的差别。通过这两段程序介绍一下arduino的语言轮廓。
- //设置控制Led的数字IO脚
- int Led1 = 1;
- int Led2 = 2;
- int Led3 = 3;
- int Led4 = 4;
- int Led5 = 5;
- int Led6 = 6;
- //led灯花样显示样式1子程序
- void style_1(void)
- {
- unsigned char j;
- for(j=1;j<=6;j )
- {
- digitalWrite(j,HIGH);
- delay(200);
- }
- for(j=6;j>=1;j--)
- {
- digitalWrite(j,LOW);
- delay(200);
- }
- }
- void setup()
- {
- unsigned char i;
- for(i=1;i<=6;i )//依次设置1~6个数字引脚为输出模式
- pinMode(i,OUTPUT);//设置第i个引脚为输出模式
- }
- void loop()
- {
- style_1();//样式1
- }
复制代码
上面代码的效果视频如下:
http://player.youku.com/player.php/sid/XMjgzOTA0Mjk2/v.swf
- //设置控制Led的数字IO脚
- int Led1 = 1;
- int Led2 = 2;
- int Led3 = 3;
- int Led4 = 4;
- int Led5 = 5;
- int Led6 = 6;
- //led灯花样显示样式1子程序
- void style_1(void)
- {
- unsigned char j;
- for(j=1;j<=6;j )
- digitalWrite(j,HIGH);
- delay(200);
- for(j=6;j>=1;j--)
- {
- digitalWrite(j,LOW);
- delay(200);
- }
- }
- void setup()
- {
- unsigned char i;
- for(i=1;i<=6;i )//依次设置1~6个数字引脚为输出模式
- pinMode(i,OUTPUT);//设置第i个引脚为输出模式
- }
- void loop()
- {
- style_1();//样式1
- }
复制代码
上面代码的效果视频如下:
http://player.youku.com/player.php/sid/XMjg0MDU5NjQ0/v.swf
通过下载测试,发现第一段程序是led 1-6逐个点亮,然后从6-1再逐个熄灭如此循环。
第二段程序是6个灯同时亮,然后再6-1逐个熄灭如此循环。下面对产生不同效果的代码进行分析。
下面这段代码代表的for语句循环的是,是把j点亮,然后再延迟200毫秒,然后再循环。形成的效果就是6个灯相隔200毫秒逐步被点亮。
- for(j=1;j<=6;j )
- {
- digitalWrite(j,HIGH);
- delay(200);
- }
复制代码
下面这段代码其实是不规范写法,for命令表达要求一定要有{}循环,如果没有标出{},编译时就会自动对下一句加上{}。如果代码量很大,出问题是查找起来会非常辛苦。
- for(j=1;j<=6;j )
- digitalWrite(j,HIGH);
- delay(200);
复制代码
正确的写法应该是下面这个样子
- for(j=1;j<=6;j ) {
- digitalWrite(j,HIGH);
- }
- delay(200);
复制代码
六个灯逐个被点亮,然后再延时200毫秒进入下一句。因为六灯逐个点亮的速度非常快,所以看上去像一起亮的。
void(无类型)在arduino中是数据类型的一种,通常用来代表一个事件。如果控制过程比较简单void一般无需定义,直接使用
- void setup()
- {
- // ...
- }
- void loop()
- {
- // ...
- }
复制代码
代表事件的开始与事件的循环。
如果控制过程比较复杂,一般就要设置多个子事件,把复杂的过程进行分解,每一个子事件定义为一个void数据。
把以下代码上传上去,看看led灯是如何工作的。
- //设置控制Led的数字IO脚
- int Led1 = 1;
- int Led2 = 2;
- int Led3 = 3;
- int Led4 = 4;
- int Led5 = 5;
- int Led6 = 6;
- //led灯花样显示样式1子程序
- void style_1(void)
- {
- unsigned char j;
- for(j=1;j<=6;j )//每隔200ms依次点亮1~6引脚相连的led灯
- {
- digitalWrite(j,HIGH);//点亮j引脚相连的led灯
- delay(200);//延时200ms
- }
- for(j=6;j>=1;j--)//每隔200ms依次熄灭6~1引脚相连的led灯
- {
- digitalWrite(j,LOW);//熄灭j引脚相连的led灯
- delay(200);//延时200ms
- }
- }
- //灯闪烁子程序
- void flash(void)
- {
- unsigned char j,k;
- for(k=0;k<=1;k )//闪烁两次
- {
- for(j=1;j<=6;j )//点亮1~6引脚相连的led灯
- digitalWrite(j,HIGH);//点亮与j引脚相连的led灯
- delay(200);//延时200ms
- for(j=1;j<=6;j )//熄灭1~6引脚相连的led灯
- digitalWrite(j,LOW);//熄灭与j引脚相连的led灯
- delay(200);//延时200ms
- }
- }
- //led灯花样显示样式2子程序
- void style_2(void)
- {
- unsigned char j,k;
- k=1;//设置k的初值为1
- for(j=3;j>=1;j--)
- {
- digitalWrite(j,HIGH);//点亮灯
- digitalWrite(j k,HIGH);//点亮灯
- delay(400);//延时400ms
- k =2;//k值加2
- }
- k=5;//设置k值为5
- for(j=1;j<=3;j )
- {
- digitalWrite(j,LOW);//熄灭灯
- digitalWrite(j k,LOW);//熄灭灯
- delay(400);//延时400ms
- k -=2;//k值减2
- }
- }
- //led灯花样显示样式3子程序
- void style_3(void)
- {
- unsigned char j,k;//led灯花样显示样式3子程序
- k=5;//设置k值为5
- for(j=1;j<=3;j )
- {
- digitalWrite(j,HIGH);//点亮灯
- digitalWrite(j k,HIGH);//点亮灯
- delay(400);//延时400ms
- digitalWrite(j,LOW);//熄灭灯
- digitalWrite(j k,LOW);//熄灭灯
- k -=2;//k值减2
- }
- k=3;//设置k值为3
- for(j=2;j>=1;j--)
- {
- digitalWrite(j,HIGH);//点亮灯
- digitalWrite(j k,HIGH);//点亮灯
- delay(400);//延时400ms
- digitalWrite(j,LOW);//熄灭灯
- digitalWrite(j k,LOW);//熄灭灯
- k =2;//k值加2
- }
- }
- void setup()
- {
- unsigned char i;
- for(i=1;i<=6;i )//依次设置1~6个数字引脚为输出模式
- pinMode(i,OUTPUT);//设置第i个引脚为输出模式
- }
- void loop()
- {
- style_1();//样式1
- flash();//闪烁
- style_2();//样式2
- flash();//闪烁
- style_3();//样式3
- flash();//闪烁
- }
复制代码
上面这段代码的效果视频如下:http://player.youku.com/player.php/sid/XMjg0MjA2Njk2/v.swf
上面的代码分为4个子事件,样式1,样式2,样式3和闪烁。
闪烁:1-6号灯亮,延时200ms,1-6号灯熄灭,延时200ms。效果视频如下:
http://player.youku.com/player.php/sid/XMjg0MjAxMDgw/v.swf
样式1:1-6号灯逐个点亮,然后6-1逐个熄灭。效果视频如下:
http://player.youku.com/player.php/sid/XMjgzOTA0Mjk2/v.swf
样式2:3,4号灯先亮,然后2,5号再亮,最后1,6号两。接着1,6号灯熄灭,再2,5号熄灭,最后3,4号熄灭。效果视频如下:
http://player.youku.com/player.php/sid/XMjg0MjAwNTA0/v.swf
样式三:3,4号灯亮,然后3,4号熄灭2,5号亮,然后2,5号熄灭1,6号亮,再1,6号熄灭2,5号亮,最后2,5号熄灭3,4号亮。效果视频如下:
http://player.youku.com/player.php/sid/XMjg0MjAwNzc2/v.swf
通过以上4种事件的组合,就可以做出来各种效果。arduino学习笔记17蜂鸣器实验
本次实验所用的为下图所示的这种小型无源蜂鸣器