风筝
发表于: 2019-4-9 20:29:46 | 显示全部楼层

在这个初学者项目中,我们通过搭建LED点阵以及使用Arduino开发板来制作一个二进制时钟。


本篇文章将向您介绍LED多路复用以及如何利用该技术制作LED阵列,可用于许多不同项目。在本例中,我们将制作一个二进制时钟


所需的硬件

●    BC547 NPN晶体管

●    红色LED指示灯

●    150欧电阻

●    680欧电阻

●    Arduino Uno Rev. 3开发板

●    面包板


如何设置LED多路复用

这是一种用于创建LED点阵的非常简单的技术,其中每个单独的二极管可以被寻址,然后被打开和关闭。您首先必须决定是要构建共阴极还是共阳极点阵。虽然电路略有不同,但两种方法的原理基本相同:

circuit diagram.png

创建LED点阵的电路图。


如您所见,我们正在为该项目构建一个共阴极点阵。因此,LED的阴极连接在一起,然后通过NPN晶体管连接到GND。电阻器R1至R4是LED的限流电阻,R5至R10是晶体管的限流电阻。


如何寻址单个LED

该点阵中的每个二极管都有自己的地址,可以单独打开和关闭。如果您在处理LED时遇到问题,可以将上图中的数组划分为行和列,并为每个数组分配如下名称:

matrix.png

通过将电路分成行和列来寻址矩阵内的每个LED。


要打开LED9,需要在晶体管D的基极提供电压,并将3行连接到电源。您可以通过在当前激活的LED之间快速切换来使其看起来像多个LED。


制作二进制时钟

让我们充分利用LED点阵,然后使用Arduino Uno制作二进制时钟来打开和关闭LED、DS3231和实时时钟模块来保持时间。


首先根据上图搭建LED点阵。它看起来有点乱,但连接LED需要所有跳线:

constructing your LED matrix.jpeg

搭建LED点阵。


因为这是一个简单的LED点阵,它使用Arduino开发板的10个I / O端口。所以一定要使用有足够引脚的。如果要减少必要行数,可以使用二进制到十进制转换。


第1到4行连接到Arduino引脚2到5,6列连接到引脚6到11。您可以在下面看到这些连接。

Connect the LED.jpeg

将LED连接到Arduino。


固件

首先编写一个小测试草图,将点阵中的每个LED依次打开。如果所有LED以正确的顺序点亮,则点阵连接正确。

  1. void setup()
  2. {
  3.   pinMode(2, OUTPUT);  // 1
  4.   pinMode(3, OUTPUT);  // 2
  5.   pinMode(4, OUTPUT);  // 3
  6.   pinMode(5, OUTPUT);  // 4
  7.   pinMode(6, OUTPUT);  // A
  8.   pinMode(7, OUTPUT);  // B
  9.   pinMode(8, OUTPUT);  // C
  10.   pinMode(9, OUTPUT);  // D
  11.   pinMode(10, OUTPUT); // E
  12.   pinMode(11, OUTPUT); // F
  13. }
  14. void loop()
  15. {
  16.   for(int i = 6; i < 12; i++)
  17.   {
  18.         digitalWrite(i, 1);
  19.    
  20.         for(int u = 2; u < 6; u++)
  21.         {
  22.               digitalWrite(u, 1);
  23.               delay(250);
  24.               digitalWrite(u, 0);
  25.         }

  26.         digitalWrite(i, 0);
  27.   }
  28. }
复制代码

如上所述,固件连接DS3231 RTC模块接口,然后读取时间。它将值转换为二进制,并将相应的LED切换为ON。


您需要从Github下载用于Arduino IDE的库文件。上传代码后,您的Arduino应显示正确的时间 - 在本例中,时间为21:45:11。

Our completed binary clock.jpeg

我们完成的二进制时钟


为什么创客使用LED点阵?

LED点阵在许多应用中非常有用,例如这种简单的二进制时钟。重要的是要了解晶体管如何作为开关工作,以及如何单独控制元件阵列中的每个LED。


然而,这种方法远非完美,因为它占用了许多I/O端口,并且同时能打开LED的数量有限制。但它很容易理解和搭建。


如果你想减少必要的I / O行数,你可以尝试使用BCD解码器,如CD4028B(PDF),你可以看看其他技术,如Charlieplexing,或者你可以使用一个完全不同的方法(例如,可寻址的LED灯条)。

跳转到指定楼层
时空扭曲
发表于: 2019-5-3 08:50:09 | 显示全部楼层

我只看到测试LED的代码  没有看见时钟代码呢   然后DS3231模块也没有连接进去的电路图    如能解答  万分感激  一直在找二进制时钟制作教程
回复

使用道具 举报

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

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-22 15:23 , Processed in 0.053935 second(s), 10 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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