亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

迷你LED立方体,54像素,WIFI和陀螺仪

发布时间:2021-01-15
分享到:

迷你LED立方体,54像素,WIFI和陀螺仪

发布时间:2021-01-15
分享到:

Pikocube是一个54像素的小LED立方体,一个ESP8285-01F WiFi MCU和一个ADXL345陀螺仪传感器。每个PCB的尺寸为25x25mm。可通过一侧的6个贴片焊盘闪光。计划是将立方体用作一个电子骰子来检测它何时被抛出,何时变得不活跃。

您需要的零件

  • 5x PCB
  • 45个WS2812 2020 LED
  • 5个0.1µF 0603电容器
  • 5个10 µF 0603电容器
  • 5x 0欧姆0603电阻
  • 一些电线

它仅将一个LED的DIN连接到另一个LED的DOUT。它包含两个介于5V和GND之间的电容器。根据WS2812的数据表,建议为每个LED使用一个电容器,但是九个LED的面积非常小,并且LED彼此之间相距不远,这就是为什么我只使用了两个电容器的原因。

为了将五个PCB连接在一起,我在所有四个边缘上都添加了一些焊盘,这些焊盘包含5V,GND,DIN,DOUT。有些配备了跳线垫,因为特别是对于顶部PCB,您不应该连接所有的垫-5V会被焊接到GND,那将是不好的……诚然,这些垫太小了,其尺寸仅为0.635 ×0.635mm,但稍有耐心,它将以某种方式工作。

该项目仅用于连接45个LED,因此在对Pikocube进行编程时可以非常有创意。我在大多数LED项目中都使用FastLED库,但是Neopixel库在很多情况下也可以使用。我编写了一个简单的函数,将圆形(?)矩阵映射到多维数据集上,得到一个12×5矩阵,其中第五行(y = 4,因为第一行是y = 0)只是顶部的中间像素,使用哪个x坐标的问题。
int get_pixel(int x, int y){
 int num = -1;
 int mat = x/3;
 if(y < 3){
    //bottom matrix 3x12
    if(x<3){
       //matrix 1
       if(y==1) num = 5 - x;
       else num = y * 3 + x;
    }
    else if(x<6){
       //matrix 2
       if(y==1) num = 17 - x;
       else num = y * 3 + x + 6;
    }
    else if(x<9){
       //matrix 3
       if(y==1) num = 29 - x;
       else num = y * 3 + x + 12;
    }
    else if(x<12){
       //matrix 4
       if(y==1) num = 41 - x;
       else num = y * 3 + x + 18;
    }
 }
 else if(y == 3){
    //top matrix 3x3
    if(x==0 || x==11) num = 38;
    if(x==1) num = 39;
    if(x==2 || x==3) num = 44;
    if(x==4) num = 43;
    if(x==5 || x==6) num = 42;
    if(x==7) num = 41;
    if(x==8 || x==9) num = 36;
    if(x==10) num = 37;
 }
 else if(y==4){
    //top middle led
    num = 40;
  }
 return num;
}

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论