开启左侧

Arduino与WS2812/2813

[复制链接]
发表于 2017-4-14 14:18:53 | 显示全部楼层 |阅读模式
   我相信啊,其实很多人都玩过灯带,灯带很漂亮!我们学电子的有一个玩笑就是叫做“灯是电子系把妹的一种重要途径”。一般Arduino入门的学生来说,拿到手的第一种灯带一定是5050的灯珠,5050的灯珠一般使用来说,是四根线使用。正如下图所示:
b21bb051f8198618d2c4f2124aed2e738ad4e6a1.jpg
  我们看得出,其实5050的RGB灯珠内部就是三个发光二极管,为什么说是四根线使用呢?因为正如上图所示,我们可以把三个LED的负极(1,2,3)并联在一起,形成GND,然后每个LED的正极单独引出来,形成三个单独的正极。这就是四线控制,上面举得例子是一种共阴接法,当然还有就是共阳的(4,5,6)接在一起。但是无论怎么样,都是需要四根线,本文以共阴为分析。
  如果这是一根灯带的话,所有的LED都是这样并联起来(把每个灯的GND看成一组,三个正极看成另一组;灯与灯的GND并在一起,正极并在一起)这样就只能使一个灯带显示出一种颜色,淘宝上买到的5050灯珠大多数也就是这样的,这样导致了灯带相对单调。那么如果我要单独控制每一个灯的颜色呢?有人会说我可以单独把每个灯的三个正极引出来。一两个灯还好,如果你有成百上千的灯呢?那你需要的IO数量是巨大的,这时候,我们就需要单独给灯配置一个小的控制芯片,那我们只要控制小芯片,让小芯片去控制每个LED即可,这也就是WS2812/2813的原理。
   QQ截图20170414140356.png QQ截图20170414140708.png
  这是一个2812灯珠的引出端定义,我们发现2812其实是把控制芯片集成进了灯珠中,同时我也把每个定义的作用也贴了出来,读者自行理解哦~


  文章的标题是2812/2813,那么2812和2813的区别在于哪?
  在控制方式上,2812和2813都是属于单总线的控制方式,但是2812有一个缺点,就是只要一条灯带中有一个灯珠坏了,以这个灯珠为起点,后面的灯珠就都不会亮了,这是由2812的控制方式导致的,第一个灯珠接收控制器的数据,然后读取属于他的数据后,会把数据传给下一个灯珠,如果不能传输给下一个灯珠了,那后面的灯珠都不能收到数据了。就好比人的传话,我规定你传话只能传给你的下一个人,如果你的下一个人走了,但是你又不能跳过这个人,也就会导致,后面所有的人都不知道传的是什么。
  而2813则克服了这个问题,它采用双线与下一个设备通讯,就算一个灯珠坏了,但是另一根线还可以把数据传给下一个。就像那个走掉的人换了一个替补,你可以把数据传给替补,替补再把数据传给下一个人,2813的引脚定义如下图所示。
QQ截图20170414141357.png
  在文章末尾,我们先上传一个关于2812/2813的控制库,将在下一章中对库的使用进行一个详细的介绍


Adafruit_NeoPixel.zip

30.53 KB, 下载次数: 8

回复

使用道具 举报

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

本版积分规则

精彩课程推荐

关于我们

帮助中心

商务合作

点击这里给我发消息

关注微信公众号

Copyright © 2016-2017 i创学院 - 上海享渔教育科技有限公司 Powered by Discuz!     ( 沪ICP备16033954号-1 )