Arduino Uno R4首发:告白专用板(WiFi版)

描述

十二年磨一剑,今年Arduino官方终于发布了Ardui Uno R4,上一版Arduino Uno R3还是2011年发布的。

WS2812

相较于12年前的R3,R4的硬件,确实提升了一大截:

WS2812

主控芯片终于从8位的AVR升级到了32位的Arm cortex M4。芯片是瑞萨的,谁叫人家给Arduino基金会投钱了,还是大把大把的。

另外,这次终于推出了带有WiFi功能的版本,闪亮登场:

WS2812

WiFi功能,由一块ESP32-S3-Mini提供,全面吊打主控芯片:

WS2812

吐槽归吐槽,还是第一时间抢购了一块Arduino Uno R4 WiFi版,因为只有WiFi版,板载一个LED点阵。不过这个点阵,还真是个点阵,直接怼了10个引脚上去,可真是虱多不痒,引脚多了放开手脚用啊:

WS2812

这要换个WS2812阵列,不香吗?


板子到手后,和上任大哥对比了一下:

WS2812

大小一样,扩展板可以直接使用,这点不错。

先点个灯玩玩,毕竟有8*12个灯可以点,又不用额外接线,还是不错的。

点灯代码如下:

#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;

// 参考:https://juejin.cn/post/7128690033669701639
unsigned char Light[8][8] = //'全亮'
{
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
};
 
unsigned char Dark[8][8] = //'全灭'
{
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
};

unsigned char bigheart[8][8] = //'大心'
{
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 1, 1, 0, 0, 1, 1, 0,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  0, 1, 1, 1, 1, 1, 1, 0,
  0, 0, 1, 1, 1, 1, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
};
 
unsigned char smallheart[8][8] = //'小心'
{
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 1, 0, 0, 1, 0, 0,
  0, 1, 1, 1, 1, 1, 1, 0,
  0, 1, 1, 1, 1, 1, 1, 0,
  0, 0, 1, 1, 1, 1, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
};
unsigned char I[8][8] = //'I'
{
  0, 1, 1, 1, 1, 1, 1, 0, 
  0, 1, 0, 1, 1, 0, 1, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0, 
  0, 1, 0, 1, 1, 0, 1, 0,
  0, 1, 1, 1, 1, 1, 1, 0,
};
unsigned char L[8][8] = //'L'
{
  0, 0, 1, 1, 1, 1, 0, 0, 
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 1,
  0, 0, 1, 1, 1, 1, 1, 1,
};
unsigned char O[8][8] = //'O'
{
  0, 0, 1, 1, 1, 1, 0, 0, 
  0, 1, 0, 0, 0, 0, 1, 0,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  0, 1, 0, 0, 0, 0, 1, 0,
  0, 0, 1, 1, 1, 1, 0, 0,
};
unsigned char V[8][8] = //'V'
{
  0, 0, 0, 0, 0, 0, 0, 0, 
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  0, 1, 0, 0, 0, 0, 1, 0,
  0, 1, 0, 0, 0, 0, 1, 0,
  0, 0, 1, 0, 0, 1, 0, 0,
  0, 0, 1, 0, 0, 1, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
};
unsigned char E[8][8] = //'E'
{
  0, 0, 0, 0, 0, 0, 0, 0, 
  0, 1, 1, 1, 1, 1, 1, 0,
  0, 1, 0, 0, 0, 0, 0, 0,
  0, 1, 0, 0, 0, 0, 0, 0,
  0, 1, 1, 1, 1, 1, 1, 0,
  0, 1, 0, 0, 0, 0, 0, 0,
  0, 1, 0, 0, 0, 0, 0, 0,
  0, 1, 1, 1, 1, 1, 1, 0,
};
unsigned char U[8][8] = //'U'
{
  1, 0, 0, 0, 0, 0, 0, 1, 
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 1, 0, 0, 0, 0, 1, 1,
  0, 1, 1, 0, 0, 0, 1, 1,
  0, 0, 1, 1, 1, 1, 0, 0,
};
 
void setup() {
  Serial.begin(115200);
  matrix.begin();
  Clear();
  delay(3000);
}
void loop() {
  //主代码循环运行:
  unsigned int d = 500;
  unsigned int d2 = 100;
  Display(I);delay(d);Clear();
  Display(L);delay(d);Clear();
  Display(O);delay(d);Clear();
  Display(V);delay(d);Clear();
  Display(E);delay(d);Clear();
  Display(U);delay(d);Clear();
  for(int i=0;i< 5;i++) {
    Display(bigheart);delay(d2);Clear();
    Display(smallheart);delay(d2);Clear();
  }
  uint8_t arr[NUM_LEDS] = {1};
  for(int i=0;i< NUM_LEDS;i++)
  {
    arr[i] = 1;
  }
  for(int i=0;i< 5;i++) {
    Display(bigheart);delay(d2);Clear();
    Display(smallheart);delay(d2);Clear();
    matrix.loadPixels(arr, NUM_LEDS);delay(d2);Clear();
  }
}

void Display(unsigned char lattice[8][8])//显示函数
{
  uint8_t arr[NUM_LEDS] = {0};
  for(int r = 0; r < 8; r++)
  {
    for(int c = 0; c < 8; c++)
    {
      arr[r*12+c+2] = lattice[r][c];
    }
  }
  matrix.loadPixels(arr, NUM_LEDS);
}

void Clear()//清除函数
{
  uint8_t arr[NUM_LEDS] = {0};
  matrix.loadPixels(arr, NUM_LEDS);
}

上述代码,参考8*8的点阵图形数据,扩展到8 * 12的,然后使用Arduino 官方提供的专用点灯库点亮。

点完灯如下:

WS2812

视频演示:

效果还是不错的,赶紧来一块,告白你心爱的Ta吧!!!

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分