ps.每个例程实验第一组是购买arduino是附赠的例程代码,第二组是在原基础上进行修改的练习
1.Hello World!
只需要arduino uno板一块
int val;//定义变量val
int ledpin=3;//定义数字接口13
void setup()
{
Serial.begin(9600);//设置波特率为9600
pinMode(ledpin,OUTPUT);//设置数字13 口为输出接口
}
void loop()
{
val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
if(val=='H')//判断接收到的指令或字符是否是“H”。
{//如果接收到的是“H”字符
digitalWrite(ledpin,HIGH);//点亮数字13 口LED。
delay(500);
digitalWrite(ledpin,LOW);//熄灭数字13 口LED
delay(500);
Serial.println("Hello World!");//显示“Hello World!”字符串
}
}
上传后在串口编辑器发送“H”,就能看到arduino自带的13口LED灯闪烁,然后串口编辑器显示“Hello World!"
在以上基础进行修改(除板子外还需要少许面包板跳线,一个220欧电阻,一个LED灯)
int val;//定义变量val
int Base=2;//定义数字接口2
void setup()
{
Serial.begin(9600);//设置波特率为9600
pinMode(Base,OUTPUT);//设置数字13 口为输出接口
}
void loop()
{
val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
if(val=='H')//判断接收到的指令或字符是否是“R”。
{//如果接收到的是“H”字符
digitalWrite(Base,HIGH);//点亮外接的LED
delay(1000);//延时
digitalWrite(Base,LOW);//熄灭外接的LED
delay(1000);//延时
Serial.println("Hello World!");//显示“Hello World!”字符串
}
}
接线如下图所示,电阻为220欧
此时,在串口监视器键入“H”时则会看到,外接的LED灯闪烁一下,然后屏幕上输出“Hello World!"
2.流水灯
ps.接线方式基本一致,只是灯的数量不同
此处需要:arduino板,面包板跳线若干,6个LED灯,6个220欧电阻
int BASE = 2 ; //第一颗 LED 接的 I/O 脚
int NUM = 6; //LED 的总数
int i=0;
void setup()
{
for (int i = BASE; i < BASE + NUM; i ++)
{
pinMode(i, OUTPUT); //设定数字I/O脚为输出
}
}
void loop()
{
for (i = BASE; i < BASE + NUM; i =i+2)
{
digitalWrite(i, LOW); //设定数字I/O脚出为"低",即顺序熄灭
delay(200); //延时
}
for (i = BASE; i < BASE + NUM; i ++)
{
digitalWrite(i, HIGH); //设定数字I/O脚输出为"高",即顺序点亮
delay(200); //延时
}
}
上传后可看到效果为:六个LED灯从右往左依次点亮,再从右往左依次熄灭。
在此基础上进行修改
int BASE = 2 ; //第一颗 LED 接的 I/O 脚
int NUM = 4; //LED 的总数
int i=0;
void setup()
{
for (int i = BASE; i < BASE + NUM; i ++)
{
pinMode(i, OUTPUT); //设定数字I/O脚为输出
}
}
void loop()
{
for (i = BASE; i < BASE + NUM; i ++)
{
digitalWrite(i, HIGH); //从右往左点亮
delay(200); //延时
}
for (i = BASE+3; i < BASE + NUM; i --)
{
digitalWrite(i, LOW); //从左往右熄灭
delay(200); //延时
}
}
此处将六个灯减为四个灯,上传后可看到LED灯由右至左依次点亮,然后由左往右顺次熄灭。
3.交通灯
ps.两组接线图一致
int redled =10; //定义数字10 接口
int yellowled =7; //定义数字7 接口
int greenled =4; //定义数字4 接口
void setup()
{
pinMode(redled, OUTPUT);//定义红色小灯接口为输出接口
pinMode(yellowled, OUTPUT); //定义黄色小灯接口为输出接口
pinMode(greenled, OUTPUT); //定义绿色小灯接口为输出接口
}
void loop()
{
digitalWrite(redled, HIGH);//点亮红色小灯
delay(1000);//延时1 秒
digitalWrite(redled, LOW); //熄灭红色小灯
digitalWrite(yellowled, HIGH);//点亮黄色小灯
delay(200);//延时0.2 秒
digitalWrite(yellowled, LOW);//熄灭黄色小灯
digitalWrite(greenled, HIGH);//点亮绿色小灯
delay(1000);//延时1 秒
digitalWrite(greenled, LOW);//熄灭绿色小灯
}
此例程的效果是,红色小灯点亮一秒,熄灭,黄色小灯点亮0.2秒,熄灭,绿色小灯点亮1秒熄灭。这个过程循环。
在此基础上进行修改,使延时加长便于观察。并且按照红灯→红黄同亮→绿灯→黄灯→红灯,这样的循环来使LED灯的闪烁更符合现实。
修改后代码如下
int redled =10; //定义数字10 接口为红灯
int yellowled =7; //定义数字7 接口为黄灯
int greenled =4; //定义数字4 接口为绿灯
void setup()
{
pinMode(redled, OUTPUT);//定义红色小灯接口为输出接口
pinMode(yellowled, OUTPUT); //定义黄色小灯接口为输出接口
pinMode(greenled, OUTPUT); //定义绿色小灯接口为输出接口
}
void loop()
{
digitalWrite(redled, HIGH);// 红灯亮
delay(1200);//延时1.2 秒
digitalWrite(yellowled, HIGH);//在红灯亮1.2秒,黄灯亮
delay(800);//延时0.8 秒
digitalWrite(yellowled, LOW);
digitalWrite(redled, LOW);//黄灯红灯一起灭
digitalWrite(greenled, HIGH);//绿灯亮
delay(1200);//延时1.2 秒
digitalWrite(greenled, LOW);//绿灯灭
digitalWrite(yellowled, HIGH);//黄灯亮
delay(800);//延时0.8 秒
digitalWrite(yellowled, LOW);//黄灯灭
}
接线图如下
此时可以看到LED灯类似真实的交通灯规律闪烁。