驴友花雕
发表于 2022-11-10 07:11:02
点击下载库文件
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/RGB-matrix-Panel
https://github.com/adafruit/Adafruit_BusIO
驴友花雕
发表于 2022-11-10 08:29:02
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S
室内全彩8扫电子屏(HX-P6-16X32-A)
项目程序之一:点亮32x16 RGB LED矩阵
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S
室内全彩8扫电子屏(HX-P6-16X32-A)
项目程序之一:点亮32x16 RGB LED矩阵
*/
#include <Adafruit_GFX.h> // Core graphics library
#include <RGBmatrixPanel.h> // Hardware-specific library
#define CLK 8// MUST be on PORTB! (Use pin 11 on Mega)
#define LAT A3
#define OE9
#define A A0
#define B A1
#define C A2
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
void setup() {
matrix.begin();
}
void loop() {
// draw a pixel in solid white
matrix.drawPixel(0, 0, matrix.Color333(7, 7, 7));
delay(500);
// fix the screen with green
matrix.fillRect(0, 0, 32, 16, matrix.Color333(0, 7, 0));
delay(500);
// draw a box in yellow
matrix.drawRect(0, 0, 32, 16, matrix.Color333(7, 7, 0));
delay(500);
// draw an 'X' in red
matrix.drawLine(0, 0, 31, 15, matrix.Color333(7, 0, 0));
matrix.drawLine(31, 0, 0, 15, matrix.Color333(7, 0, 0));
delay(500);
// draw a blue circle
matrix.drawCircle(7, 7, 7, matrix.Color333(0, 0, 7));
delay(500);
// fill a violet circle
matrix.fillCircle(23, 7, 7, matrix.Color333(7, 0, 7));
delay(500);
// fill the screen with 'black'
matrix.fillScreen(matrix.Color333(0, 0, 0));
// draw some text!
matrix.setCursor(1, 0); // start at top left, with one pixel of spacing
matrix.setTextSize(1); // size 1 == 8 pixels high
// print each letter with a rainbow color
matrix.setTextColor(matrix.Color333(7, 0, 0));
matrix.print('1');
matrix.setTextColor(matrix.Color333(7, 4, 0));
matrix.print('6');
matrix.setTextColor(matrix.Color333(7, 7, 0));
matrix.print('x');
matrix.setTextColor(matrix.Color333(4, 7, 0));
matrix.print('3');
matrix.setTextColor(matrix.Color333(0, 7, 0));
matrix.print('2');
matrix.setCursor(1, 9); // next line
matrix.setTextColor(matrix.Color333(0, 7, 7));
matrix.print('*');
matrix.setTextColor(matrix.Color333(0, 4, 7));
matrix.print('R');
matrix.setTextColor(matrix.Color333(0, 0, 7));
matrix.print('G');
matrix.setTextColor(matrix.Color333(4, 0, 7));
matrix.print('B');
matrix.setTextColor(matrix.Color333(7, 0, 4));
matrix.print("*");
delay(5000);
}
驴友花雕
发表于 2022-11-10 08:33:08
实验场景图
驴友花雕
发表于 2022-11-10 08:35:55
本帖最后由 驴友花雕 于 2022-11-10 20:25 编辑
实验场景图动态图
LED模组会轮流显示:一个白点、全屏绿色、全屏黄色、一个黄色的矩形框、一个红色的X、一个蓝色的圆、一个填充紫圆、英文字。
驴友花雕
发表于 2022-11-10 18:41:52
实验接线图
驴友花雕
发表于 2022-11-10 18:45:20
实验场景图
驴友花雕
发表于 2022-11-10 19:36:49
上次自制的HUB08接口的扩展板,适合32x16像素的P10单红(1R)V706单元板模组
【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组
https://www.arduino.cn/forum.php?mod=viewthread&tid=91889&fromuid=61537
驴友花雕
发表于 2022-11-10 19:58:37
HUB75接口,是个兼容大部分市面LED单元板的通用型接口,具体接线定义有些不同,比如HUB75B\HUB75E等。
这次自制的扩展板,只是专门匹配Arduino UNO开发板的专用板,由于性能限制,最多只能使用32x16,或者32x32的简单控制。
下一张扩展板,准备尝试搭配ESP32开发板,以适应大部分P5\P4\P3的单元板模组,主要规格可能有32x32\64x32\64x64,还有128x64等。
驴友花雕
发表于 2022-11-10 21:44:41
程序说明:
1、引导驱动库
#include <adafruit_gfx.h> //核心图形库
#include <rgbmatrixpanel.h> //硬件特定库
2、绘制单个像素
//用固体白色画一个像素
matrix.DrawPixel(0,0,matrix.Color333(7,7,7));
3、绘制一个非常大的矩形来用绿色填充屏幕。前两个参数是左上角点,然后是宽度(以像素为单位)和高度(以像素为单位),最后是颜色
//用绿色修复屏幕
matrix.FilleRect(0,0,32,16,matrix.Color333(0,7,0));
4、接下来,我们将只绘制一个矩形的轮廓,用黄色
//用黄色画一个盒子
matrix.drawRect(0,0,32,16,matrix.Color333(7,7,0));
5、绘制线条。drawLine 过程将用您想要的任何颜色绘制一条线,我们用它来绘制一个大 X
//用红色绘制'x'
matrix.DrawLine(0,0,0,31,15,Matrix.Color333(7,0,0));
matrix.drawline(31,0,0,15,matrix.Color333(7,0,0));
6、接下来绘制的形状是圆形。您可以使用 drawCircle 绘制圆的轮廓,也可以使用 fillCircle 填充圆。前两个参数是中心点,第三个参数是以像素为单位的半径,最后是要使用的颜色。
//填充紫罗兰圆圈
matrix.fillcircle(23,7,7,matrix.Color333(7,0,7));
驴友花雕
发表于 2022-11-10 21:52:51
本帖最后由 驴友花雕 于 2022-11-10 21:57 编辑
7、fillScreen 允许您用一种颜色填充整个屏幕
//用“黑色”填充屏幕
matrix.FillScreen(Matrix.Color333(0,0,0));
8、最后,我们将顶部显示的文本绘制为演示图像。我们可以使用打印功能,您将在串行中熟悉该功能。您可以使用打印来打印字符串、数字、变量等。但是,我们需要在开始之前设置打印!首先,我们必须使用 setCursor 设置光标位置,这是第一个字符的左上角像素的位置,这可以是任何地方,但请注意,文本字符默认为 8 像素高。接下来的setTextSize允许您将大小设置为1(8像素高)或2(对于非常大的文本为16像素高!),您可能只想现在坚持使用1。最后,我们可以使用 setTextColor 设置文本的颜色。完成所有这些操作后,我们可以使用print('1') 打印字符 “1”。
//画一些文字!
matrix.setcursor(1,0); //从左上开始,有一个像素的间距
matrix.setTextsize(1); //尺寸1 == 8像素高
//用彩虹颜色打印每个字母
matrix.setTextColor(Matrix.Color333(7,0,0));
matrix.print('1');
matrix.setTextColor(Matrix.Color333(7,4,0));
matrix.print('6');
matrix.setTextColor(Matrix.Color333(7,7,0));
matrix.print('x');
matrix.setTextColor(Matrix.Color333(4,7,0));
matrix.print('3');
matrix.setTextColor(matrix.color333(0,7,0));
matrix.print('2');
matrix.setcursor(1,9); //下一行
matrix.setTextColor(Matrix.Color333(0,7,7));
matrix.print('*');
matrix.setTextColor(Matrix.Color333(0,4,7));
matrix.print('r');
matrix.setTextColor(matrix.color333(0,0,7));
matrix.print('g');
matrix.setTextColor(Matrix.Color333(4,0,7));
matrix.print('b');
matrix.setTextColor(Matrix.Color333(7,0,4));
matrix.print(“*”);
驴友花雕
发表于 2022-11-10 22:08:54
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S
室内全彩8扫电子屏(HX-P6-16X32-A)
项目程序之二:尝试在 512 像素上显示 512 种颜色
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S
室内全彩8扫电子屏(HX-P6-16X32-A)
项目程序之二:尝试在 512 像素上显示 512 种颜色
*/
#include <RGBmatrixPanel.h>
// Most of the signal pins are configurable, but the CLK pin has some
// special constraints.On 8-bit AVR boards it must be on PORTB...
// Pin 8 works on the Arduino Uno & compatibles (e.g. Adafruit Metro),
// Pin 11 works on the Arduino Mega.On 32-bit SAMD boards it must be
// on the same PORT as the RGB data pins (D2-D7)...
// Pin 8 works on the Adafruit Metro M0 or Arduino Zero,
// Pin A4 works on the Adafruit Metro M4 (if using the Adafruit RGB
// Matrix Shield, cut trace between CLK pads and run a wire to A4).
#define CLK8 // USE THIS ON ARDUINO UNO, ADAFRUIT METRO M0, etc.
//#define CLK A4 // USE THIS ON METRO M4 (not M0)
//#define CLK 11 // USE THIS ON ARDUINO MEGA
#define OE 9
#define LAT A3
#define A A0
#define B A1
#define C A2
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
void setup() {
matrix.begin();
uint8_t r=0, g=0, b=0;
// Draw top half
for(uint8_t x=0; x<32; x++) {
for(uint8_t y=0; y<8; y++) {
matrix.drawPixel(x, y, matrix.Color333(r, g, b));
r++;
if(r == 8) {
r = 0;
g++;
if(g == 8) {
g = 0;
b++;
}
}
}
}
// Draw bottom half
for(uint8_t x=0; x<32; x++) {
for(uint8_t y=8; y<16; y++) {
matrix.drawPixel(x, y, matrix.Color333(r, g, b));
r++;
if(r == 8) {
r = 0;
g++;
if(g == 8) {
g = 0;
b++;
}
}
}
}
}
void loop() {
// Do nothing -- image doesn't change
}
驴友花雕
发表于 2022-11-10 22:13:02
上传后,使用 16x32 面板,应该看到以下内容:
这是一个测试模式,在 512 像素上显示 512 种颜色(共 4096 种颜色)。由于没有真正优雅的方式来在二维中显示三维色彩空间 (R/G/B),因此只有重复的红色/绿色网格和增加的蓝色。无论如何,这向您展示了您可以实现的颜色范围!其中最有用的一行是:
matrix.drawPixel(x, y, matrix.Color333(r, g, b));
这就是我们实际绘制到显示器的地方。此代码一次只绘制一个像素。x 和 y 坐标是显示器的各个像素。(0,0) 在左上角,(31, 15) 在右下角(请记住,我们从 0 开始计数!要创建颜色,您需要使用辅助函数 Color333,它将采用三个 3 位数字并将它们组合成一个打包整数。例如,第一个参数 r 的范围可以从 0 到 7。对于 g和 b 也是如此。要使像素是纯红色的,r将为7,g,b将为0。要制作白色像素,请将全部设置为 7。要制作黑色(关闭)像素,请将颜色设置为 0。类似的函数 Color444 接受三个 4 位数字,最多 4096 种颜色。
驴友花雕
发表于 2022-11-11 07:28:38
找到一张16x32 RGB LED 矩阵参考原理图
驴友花雕
发表于 2022-11-12 16:26:11
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S
室内全彩8扫电子屏(HX-P6-16X32-A)
项目程序之三:点与线的简单控制
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S
室内全彩8扫电子屏(HX-P6-16X32-A)
项目程序之三:点与线的简单控制
*/
#include <Adafruit_GFX.h> //核心图形库
#include <RGBmatrixPanel.h> //硬件特定库
#define CLK 8 //必须在这个端口上! (在Mega上使用PIN 11)
#define LAT A3
#define OE9
#define A A0
#define B A1
#define C A2
//最后一个参数='false'禁用双屏障
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
void setup() {
matrix.begin(); //矩阵开始(启动)
}
void loop() {
//用红色在0,0处画一个像素
matrix.drawPixel(0, 0, matrix.Color333(7, 0, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
//用绿色在31,0处画一个像素
matrix.drawPixel(31, 0, matrix.Color333(0, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
//用蓝色在31,15处画一个像素
matrix.drawPixel(31, 15, matrix.Color333(0, 0, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
//用白色在0,15处画一个像素
matrix.drawPixel(0, 15, matrix.Color333(5, 5, 5));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
//用四种颜色在单元板四角各画一个像素
matrix.drawPixel(0, 0, matrix.Color333(7, 0, 0));
matrix.drawPixel(31, 0, matrix.Color333(0, 7, 0));
matrix.drawPixel(31, 15, matrix.Color333(0, 0, 7));
matrix.drawPixel(0, 15, matrix.Color333(5, 5, 5));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 31, 0, matrix.Color333(7, 0, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(31, 0, 31, 15, matrix.Color333(0, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 15, 31, 15, matrix.Color333(0, 0, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 0, 15, matrix.Color333(5, 5, 5));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 31, 0, matrix.Color333(7, 0, 0));
matrix.drawLine(31, 0, 31, 15, matrix.Color333(0, 7, 0));
matrix.drawLine(0, 15, 31, 15, matrix.Color333(0, 0, 7));
matrix.drawLine(0, 0, 0, 15, matrix.Color333(5, 5, 5));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 31, 15, matrix.Color333(4, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(31, 0, 0, 15, matrix.Color333(4, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 31, 15, matrix.Color333(0, 7, 4));
matrix.drawLine(31, 0, 0, 15, matrix.Color333(0, 7, 4));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 31, 0, matrix.Color333(7, 0, 0));
matrix.drawLine(31, 0, 31, 15, matrix.Color333(0, 7, 0));
matrix.drawLine(0, 15, 31, 15, matrix.Color333(0, 0, 7));
matrix.drawLine(0, 0, 0, 15, matrix.Color333(5, 5, 5));
matrix.drawLine(0, 0, 31, 15, matrix.Color333(0, 7, 0));
matrix.drawLine(31, 0, 0, 15, matrix.Color333(0, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 31, 0, matrix.Color333(7, 0, 0));
matrix.drawLine(31, 0, 31, 15, matrix.Color333(7, 0, 0));
matrix.drawLine(0, 15, 31, 15, matrix.Color333(7, 0, 0));
matrix.drawLine(0, 0, 0, 15, matrix.Color333(7, 0, 0));
matrix.drawLine(0, 0, 31, 15, matrix.Color333(7, 0, 0));
matrix.drawLine(31, 0, 0, 15, matrix.Color333(7, 0, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 31, 0, matrix.Color333(0, 7, 0));
matrix.drawLine(31, 0, 31, 15, matrix.Color333(0, 7, 0));
matrix.drawLine(0, 15, 31, 15, matrix.Color333(0, 7, 0));
matrix.drawLine(0, 0, 0, 15, matrix.Color333(0, 7, 0));
matrix.drawLine(0, 0, 31, 15, matrix.Color333(0, 7, 0));
matrix.drawLine(31, 0, 0, 15, matrix.Color333(0, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
matrix.drawLine(0, 0, 31, 0, matrix.Color333(0, 0, 7));
matrix.drawLine(31, 0, 31, 15, matrix.Color333(0, 0, 7));
matrix.drawLine(0, 15, 31, 15, matrix.Color333(0, 0, 7));
matrix.drawLine(0, 0, 0, 15, matrix.Color333(0, 0, 7));
matrix.drawLine(0, 0, 31, 15, matrix.Color333(0, 0, 7));
matrix.drawLine(31, 0, 0, 15, matrix.Color333(0, 0, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(500);
}
驴友花雕
发表于 2022-11-12 16:52:49
实验场景图
驴友花雕
发表于 2022-11-12 16:57:07
实验场景图动态图
驴友花雕
发表于 2022-11-12 18:33:55
实验的视频记录
优酷:https://v.youku.com/v_show/id_XNTkxOTYzNzk4MA==.html?spm=a2hcb.playlsit.page.1
B站:https://www.bilibili.com/video/BV1AD4y147BJ/?vd_source=98c6b1fc23b2787403d97f8d3cc0b7e5
https://www.bilibili.com/video/BV1AD4y147BJ/?vd_source=98c6b1fc23b2787403d97f8d3cc0b7e5
驴友花雕
发表于 2022-11-12 18:36:25
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S
室内全彩8扫电子屏(HX-P6-16X32-A)
项目程序之四:空心矩形与实心矩形的多彩转换
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S
室内全彩8扫电子屏(HX-P6-16X32-A)
项目程序之四:空心矩形与实心矩形的多彩转换
*/
#include <Adafruit_GFX.h> //核心图形库
#include <RGBmatrixPanel.h> //硬件特定库
#define CLK 8 //必须在这个端口上! (在Mega上使用PIN 11)
#define LAT A3
#define OE9
#define A A0
#define B A1
#define C A2
//最后一个参数='false'禁用双屏障
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
void setup() {
matrix.begin(); //矩阵开始(启动)
}
void loop() {
matrix.drawRect(15, 7, 2, 2, matrix.Color333(7, 7, 0));
delay(500);
matrix.drawRect(14, 6, 4, 4, matrix.Color333(7, 7, 0));
delay(500);
matrix.drawRect(13, 5, 6, 6, matrix.Color333(7, 7, 0));
delay(500);
matrix.drawRect(12, 4, 8, 8, matrix.Color333(7, 7, 0));
delay(500);
matrix.drawRect(11, 3, 10, 10, matrix.Color333(7, 7, 0));
delay(500);
matrix.drawRect(10, 2, 12, 12, matrix.Color333(7, 7, 0));
delay(500);
matrix.drawRect(9, 1, 14, 14, matrix.Color333(7, 7, 0));
delay(500);
matrix.drawRect(8, 0, 16, 16, matrix.Color333(7, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(8, 0, 16, 16, matrix.Color333(7, 0, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(8, 0, 16, 16, matrix.Color333(0, 0, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(8, 0, 16, 16, matrix.Color333(0, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(8, 0, 16, 16, matrix.Color333(0, 7, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(9, 1, 14, 14,matrix.Color333(0, 7, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(10, 2, 12, 12, matrix.Color333(0, 7, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(11, 3, 10, 10,matrix.Color333(0, 7, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(12, 4, 8, 8,matrix.Color333(0, 7, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(14, 6, 4, 4, matrix.Color333(0, 7, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillRect(15, 7, 2, 2,matrix.Color333(0, 7, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillScreen(matrix.Color333(7, 0, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillScreen(matrix.Color333(0, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.fillScreen(matrix.Color333(0, 0, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.drawRect(0, 0, 32, 16, matrix.Color333(7, 0, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.drawRect(0, 0, 32, 16, matrix.Color333(0, 7, 0));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
matrix.drawRect(0, 0, 32, 16, matrix.Color333(0, 0, 7));
delay(500);
matrix.fillScreen(matrix.Color333(0, 0, 0));
delay(50);
}
驴友花雕
发表于 2022-11-12 18:40:23
实验场景图
驴友花雕
发表于 2022-11-12 18:46:43
实验场景图动态图
驴友花雕
发表于 2022-11-12 20:07:10
实验的视频记录
优酷:https://v.youku.com/v_show/id_XNTkxNzg4MDQ1Ng==.html?spm=a2hcb.playlsit.page.1
B站:https://www.bilibili.com/video/BV1ud4y1c7Df/?vd_source=98c6b1fc23b2787403d97f8d3cc0b7e5
https://v.youku.com/v_show/id_XNTkxNzg4MDQ1Ng==.html?spm=a2hcb.playlsit.page.1