本帖最后由 HonestQiao 于 2023-7-11 14:08 编辑
千呼万唤十二年,Arduino官方今年终于发布了新一代的Ardui Uno R4,距离R3发布已经12年了。
相较于2011年发布的R3,R4的硬件,看起来,似乎提升了一大截:
核心芯片从8位的AVR,升级到了32位的Arm cortex M4。
用的芯片是瑞萨的RA4M1,据说最近推得很猛。另外,瑞萨还给Arduino基金赞助了,相当相当大的赞助。
更好的消息是,这次终于推出了自带WiFi模块的版本,不用再搭一个WiFi小片片了:
这个WiFi功能,由一块ESP32-S3-Mini提供,看了就有点莫名其妙,因为这块ESP32-S3-Mini可以全面吊打主控芯片RA4M1:
不过,还是第一时间在DFRobot抢购了一块Arduino Uno R4 WiFi版。
WiFi版还板载一个LED点阵,可不不用接线就点灯玩。
不过这个点阵,强迫症看了挺着急的,直接看图,你说急不急?
这都3202年了,WS2812B都满地跑了,就不能给力一点吗?
R4板子到手后,和R3对比了一下:
好在大小一样,Arduino接口一样,扩展板可以直接使用,不用二次投资了。
既然有LED点阵,吐槽归吐槽,吐完好好点个灯玩玩。
这个点阵是8*12个的,显示汉字会比较拮据,但显示英文和简单的图形,还是可以的。
想一想,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的点阵图形数据,再实际点亮LED的时候,扩展到8 * 12的,然后使用官方提供的专用点灯调用点亮。
编译下载运行后,具体效果如下:
视频效果:【打开声音效果更好】
整体看来,这个效果还是挺好的。
天气炎热,宅在家里,不如把这个R4给点好了,向你心爱的Ta,来一场告白吧!!!
|