极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 迷你强

Arduino入门教程--第三课--多个LED的闪烁

  [复制链接]
发表于 2013-7-10 16:12:45 | 显示全部楼层
本帖最后由 弘毅 于 2013-7-10 16:14 编辑
Mr.Roe 发表于 2013-7-10 15:37
回复好神速!程序就是复制一楼的~点不亮,好捉急~


看到了,你那个蓝色的GND线。。因为跨了面包板中部。这两边的线是不通的,你需要用一根短跳线连起来两边,你看那个丝印,蓝色的线在面包板中间部分,是断开的。
回复 支持 反对

使用道具 举报

发表于 2013-7-10 16:24:03 | 显示全部楼层
弘毅 发表于 2013-7-10 16:12
看到了,你那个蓝色的GND线。。因为跨了面包板中部。这两边的线是不通的,你需要用一根短跳线连起来两边 ...



原来是这样,我自己排错发现换另一边就亮了,还以为是面包版有质量问题~~T - T 谢谢大大~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-8-7 17:05:47 | 显示全部楼层
本帖最后由 chaoser 于 2013-8-7 17:08 编辑
南方之南 发表于 2012-10-24 10:40
void style1 ()
{
  unsigned char i,j;


这个没人回复,我来吧。

看了下程序,虽然很崎岖,但大概明白了意思:

首先,7个LED从中间向两侧依次对称点亮,再由两侧向中间依次熄灭。之后,从1到7闪烁一下点亮,再依次熄灭。

那么我来重新实现一下。不过我用的是2~8号引脚,方便起见,头两个引脚还是空着吧。

  1. /* 程序功能:
  2. 首先,7个LED从中间向两侧依次对称点亮,再由两侧向中间依次熄灭。
  3. 之后,从1到7闪烁一下点亮,再依次熄灭。 */

  4. void setup() { for (int i=2; i<=8; i++) {pinMode(i,OUTPUT);}}

  5. void loop() {
  6.   int i;
  7.   for (i=0; i<=3; i++) {
  8.     digitalWrite(5+i,HIGH);
  9.     digitalWrite(5-i,HIGH);
  10.     delay(500);
  11.   }
  12.   for (i=3; i>=0; i--) {
  13.     digitalWrite(5+i,LOW);
  14.     digitalWrite(5-i,LOW);
  15.     delay(500);
  16.   }
  17.   for (i=2; i<=8; i++) {
  18.     digitalWrite(i,HIGH);
  19.     delay(200);
  20.     digitalWrite(i,LOW);
  21.     delay(200);
  22.     digitalWrite(i,HIGH);
  23.     delay(200);
  24.   }
  25.   for (i=2; i<=8; i++) {
  26.     digitalWrite(i,LOW);
  27.     delay(400);
  28.   }
  29. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2013-9-1 15:09:57 | 显示全部楼层
迷你强 发表于 2012-8-19 15:02
一样的啊,只要将所有点亮led的语句一起写出来就行了

给个例程吧/*

强哥,问你一个问题,17到21行,当一个x被赋值之后运行digitalwrite(x,high)led直接就亮了么?还是运行完时间再亮,如果是high之后直接亮,然后再去重新给x赋值,如果处理器很慢,是不是就可以认为不是一块点亮的呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-4 09:33:00 | 显示全部楼层
其实的确不是一起点亮的,他们之间有0.00几毫秒的延时。。。但是对人来说,没区别,计算机的原理就是这样,一个处理核心,单位时间内只能处理一件事情
回复 支持 反对

使用道具 举报

发表于 2013-9-8 01:57:00 | 显示全部楼层
本帖最后由 迷你强 于 2013-9-9 09:11 编辑
  1. int led[4]={1,2,3,4};

  2. void setup()
  3. {
  4.         for(int i=0;i<4;i++)
  5.                 pinMode(led[i],OUTPUT);
  6.         Serial.begin(9600);
  7.   /* add setup code here */

  8. }

  9. void loop()
  10. {
  11.         void fun(int );
  12.         int num=15;
  13.         for(num=15;num>0;num--)
  14.                 fun(num);
  15.         /*Serial.read(num);
  16.         if(Serial.available(num))*/
  17.        
  18.   /* add main program code here */

  19. }

  20. void fun(int num)
  21. {
  22.         int a[4],n=0;
  23.         while(!(num/2)&&!(num%2))
  24.         {
  25.                 if(num%2==1)
  26.                         a[n]=1;
  27.                 else
  28.                         a[n]=0;
  29.                 n++;
  30.                 num=num/2;
  31.         }
  32.         for(int i=0;i<4;i++)
  33.         {       
  34.                 if(a[i]=1)
  35.                         digitalWrite(led[i],HIGH);
  36.                 else
  37.                         continue;
  38.         }
  39.         delay(5000);
  40.         for(int j=0;i<4;i++)
  41.         {digitalWrite(led[i],LOW);}
  42.         delay(1000);
  43. }
复制代码
我想让灯泡像二进制一样的有顺序的亮,可是不行   指点一下是算法哪里出问题了
回复 支持 反对

使用道具 举报

发表于 2013-10-9 17:03:34 | 显示全部楼层
嗯!不错的教程,受教了!
回复 支持 反对

使用道具 举报

发表于 2013-10-12 22:52:26 | 显示全部楼层
迷你强 发表于 2012-8-19 15:02
一样的啊,只要将所有点亮led的语句一起写出来就行了

给个例程吧/*

强哥问个问题;就是关于这题的一个片段。
  for (int x=2; x<=7; x++)   //通过循环的方式依次让每个引脚的led在点亮
  {
    digitalWrite(x,HIGH);
  }
delay(500);                   //同时点亮等待0.5秒

请问执行顺序是不是先一个灯一个灯的瞬间亮了一下熄了,然后等执行完7之后,再一起亮0-5s?
回复 支持 反对

使用道具 举报

发表于 2013-10-19 21:18:12 | 显示全部楼层
学习了 非常受用
回复 支持 反对

使用道具 举报

发表于 2013-11-7 21:03:18 | 显示全部楼层
为什么都看不到作业演示呢{:soso_e154:}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-8 15:04:23 | 显示全部楼层
363999595 发表于 2013-11-7 21:03
为什么都看不到作业演示呢

估计懒。。。
回复 支持 反对

使用道具 举报

发表于 2013-11-30 13:12:49 | 显示全部楼层
我是新手想学,谢谢!
验证码太麻烦!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-3 11:27:33 | 显示全部楼层
新月 发表于 2013-11-30 13:12
我是新手想学,谢谢!
验证码太麻烦!


验证码的问题,要恨就恨广告党吧~!
回复 支持 反对

使用道具 举报

发表于 2014-1-3 12:06:29 | 显示全部楼层
/*
作者:极客工坊
时间:2012年5月24日
IDE版本号:1.0.1
发布地址:www.geek-workshop.com
作用:让六个led依次点亮熄灭
*/
void setup()
{
  for (int i=2; i<=4; i++)    //通过循环的方式设置2-7号引脚为输出状态
  {
    pinMode(i,OUTPUT);
  }
}
void loop()
{
  for (int x=2; x<=4; x++)   //通过循环的方式依次让每个引脚的led在1秒内完成明灭
  {
    digitalWrite(x,HIGH);
    delay(500);
    digitalWrite(x,LOW);
    delay(500);
  }
}
这样怎么不行,求解
回复 支持 反对

使用道具 举报

发表于 2014-1-3 13:15:07 | 显示全部楼层
  1. * 程序功能:
  2. 作用:让三个点依次点亮熄灭
  3. */
  4. void setup()  {for(int i=2; i
  5. <=4; i++) pinMode(i;OUTPUT);}

  6. void loop()
  7. {
  8.   for (int x=2;x=4;x++)
  9. {
  10.      digitalWrite(x,HIGH)
  11.      delay(100)
  12.      digitalWrite(x,LOW)
  13.      delay(100);
  14. }
  15. }
复制代码
怎么不行求解
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2022-11-29 05:59 , Processed in 0.067867 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表