一、洛阳牡丹文化艺术节项目简介
洛阳牡丹,作为中国传统文化的重要符号,以其独特的美丽和深厚的文化内涵,吸引了无数人的目光。每年的洛阳牡丹文化艺术节,都是展示洛阳牡丹风采和文化魅力的重要平台。通过结合K10行空板的显示屏、语音识别、语音合成功能,我制作了一款宣传洛阳牡丹的电子作品,旨在让更多人了解和喜爱这一传统文化瑰宝。
二、洛阳牡丹文化艺术节项目来源
(一)洛阳牡丹文化艺术节的历史背景
洛阳牡丹文化艺术节起源于唐代,已有千年历史。唐代时期,洛阳牡丹已经成为宫廷和贵族花园中的珍品,受到皇室和文人墨客的喜爱。宋代以后,洛阳牡丹逐渐普及到民间,并形成了每年一度的牡丹文化艺术节。洛阳牡丹文化艺术节不仅是一个展示牡丹花卉的盛会,更是一个集文化、艺术、旅游于一体的综合性活动。
(二)洛阳牡丹文化艺术节的主要活动
洛阳牡丹文化艺术节期间,洛阳各地会举办丰富多彩的活动,吸引了大量游客和摄影爱好者。主要活动包括:
1. 牡丹花会:牡丹花会是牡丹文化艺术节的核心活动,各地的牡丹园会展示各种品种的牡丹花卉,游客可以在这里欣赏到绚丽多彩的牡丹花海。牡丹花会通常在每年的4月中旬举行,正值牡丹盛开的季节。
2. 牡丹文化展览:牡丹文化展览展示了与牡丹相关的历史文化、诗词、绘画、雕刻等艺术作品,向游客展示牡丹在中国传统文化中的重要地位和深远影响。
3. 牡丹诗词朗诵会:牡丹诗词朗诵会是牡丹文化艺术节的重要文化活动之一,诗人和文学爱好者们会在这里朗诵与牡丹相关的诗词,表达对牡丹的赞美和热爱。
4. 牡丹摄影大赛:牡丹摄影大赛吸引了众多摄影爱好者参与,他们用镜头记录下牡丹的美丽瞬间,通过摄影作品展示牡丹的迷人风采。
5. 牡丹工艺品展览:牡丹工艺品展览展示了各种以牡丹为主题的工艺品,如刺绣、陶瓷、雕刻等,展示了牡丹文化在中国传统工艺中的广泛应用。
(三)洛阳牡丹文化艺术节的文化意义
洛阳牡丹文化艺术节不仅是一个展示牡丹花卉的盛会,更是一个传承和弘扬中国传统文化的重要平台。牡丹在中国传统文化中象征着富贵、繁荣和幸福,被誉为“花中之王”。通过牡丹文化艺术节,洛阳向世界展示了其深厚的文化底蕴和独特的文化魅力。牡丹文化艺术节不仅吸引了大量游客,还促进了当地旅游业的发展,带动了经济增长。同时,牡丹文化艺术节也成为洛阳人民文化生活的重要组成部分,丰富了市民的文化生活,增强了文化自信。

三、洛阳牡丹文化艺术节项目目标与原理
本项目旨在通过利用K10行空板的显示屏、语音识别、语音合成等功能,结合洛阳牡丹文化艺术节,制作一个宣传洛阳牡丹的电子作品。具体实现目标如下:
1. 通过本项目的制作,让学生可以了解K10行空板屏幕显示、语音识别和语音合成功能的基本使用方法及原理。
2. 通过实际操作,掌握硬件与Mind+编程交互的技巧,学会从简到繁规划设计、调试和完善作品。
3. 通过搜集和制作与洛阳牡丹相关的素材和作品,对孩子进行中国传统文化教育,培养他们的数字化学习与创新能力及计算思维。
4. 通过这种形式,建立一种日常创意-开源制作-制作短视频-宣传引流的模式,为建设家乡尽自己的一份力量,树立家国情怀。
四、洛阳牡丹文化艺术节使用器材
K10行空板一块(含tf卡)
数据线一根
掌控板IO扩展板IO电机驱动扩展板一块(含电源)
带编码器直流减速电机一个
继电器一个
雾化器一个(含电源)
花朵开合器(自己制作)
杜邦线若干

五、洛阳牡丹文化艺术节项目制作过程
(一)前期准备
在项目制作前期,我进行了充分的准备工作。首先,我对洛阳牡丹文化艺术节进行了深入的调研和资料收集,整理了大量与牡丹相关的图片、诗词、绘画、故事等素材。这些素材将用于开发电子作品的内容。同时,我对K10行空板的性能和功能进行了详细的了解,包括其显示屏、语音识别和语音合成功能的基本使用方法及原理。
(二)硬件搭建
硬件搭建是项目制作的重要环节。我按照设计要求,准备好K10行空板、数据线、掌控板IO扩展板IO电机驱动扩展板、TT马达、继电器和雾化器等器材,并进行了规范的连接和固定。具体步骤如下:
1. 将K10行空板与数据线连接,确保电源供应稳定。
2. 将掌控板IO扩展板IO电机驱动扩展板与K10行空板连接,确保各硬件模块之间的通信正常。
3. 将TT马达连接到IO扩展板上的M1口上,将TT马达和花朵开合器相连,确保硬件设备的正常运行。
4. 继电器和雾化器相连,测试正常后连接到P0上。

(三)程序设计
程序设计是项目制作的核心环节。我利用Mind+编程软件,结合K10行空板的功能特点,进行了宣传洛阳牡丹电子作品的程序设计。主要步骤包括:
1. 屏幕显示程序设计
2. 语音识别与合成程序设计
3. 交互逻辑设计
(四)程序流程图

代码如下:
/*!
* MindPlus
* esp32s3bit
*
*/
#include "asr.h"
#include <IOBOX_Motor.h>
#include "unihiker_k10.h"
#include "arduino_image_cache.h"
// 动态变量
volatile float mind_n_ShiJian, mind_n_MuDan;
// 函数声明
void DF_HuaXiang();
void DF_QingFeng();
// 创建对象
UNIHIKER_K10 k10;
uint8_t screen_dir=2;
ASR asr;
Music music;
IOBOX_Motor motor_ib;
// 主程序开始
void setup() {
pinMode(P0, OUTPUT);
k10.begin();
k10.initScreen(screen_dir);
k10.creatCanvas();
asr.setAsrSpeed(2);
asr.asrInit(CONTINUOUS, CN_MODE, 12000);
while(asr._asrState == 0){delay(100);}
k10.initSDFile();
digitalWrite(P0, LOW);
k10.setScreenBackground(0x000000);
k10.canvas->canvasText("欢迎来洛阳欣赏牡丹", 13, 0xFF0000);
k10.canvas->canvasDrawBitmap(0,0,240,200,image_data1);
k10.canvas->updateCanvas();
delay(1000);
asr.speak("欢迎来洛阳欣赏牡丹");
asr.addASRCommand(0+1, "luo yang");
asr.addASRCommand(1+1, "qing feng");
asr.addASRCommand(2+1, "hua xiang");
}
void loop() {
if (asr.isWakeUp()) {
k10.canvas->canvasText("识别中,请说命令词:", 5, 5, 0xFF0000, k10.canvas->eCNAndENFont24, 20, true);
k10.canvas->canvasDrawBitmap(0,0,240,320,image_data2);
k10.canvas->updateCanvas();
}
else {
k10.canvas->canvasText("休眠中…", 5, 5, 0xFF0000, k10.canvas->eCNAndENFont24, 20, true);
k10.canvas->canvasText("请说“你好小新”", 5, 40, 0x333333, k10.canvas->eCNAndENFont24, 20, true);
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(0+1)) {
asr.speak("洛阳地脉花最宜 牡丹尤为天下奇");
delay(4000);
}
if (asr.isDetectCmdID(1+1)) {
DF_QingFeng();
asr.speak("唯有牡丹真国色 花开时节动京城");
delay(4000);
}
if (asr.isDetectCmdID(2+1)) {
asr.speak("竟夸天下无双艳 独立人间第一香");
music.playTFCardAudio("S:/music.wav");
DF_HuaXiang();
}
}
// 自定义函数
void DF_HuaXiang() {
digitalWrite(P0, HIGH);
k10.canvas->canvasClear();
for (int index = 0; index < 5; index++) {
mind_n_ShiJian = 0.1;
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data3);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data4);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data5);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data6);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data7);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data8);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data9);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data10);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data11);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data12);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data13);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data14);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data15);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data16);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data17);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data18);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data19);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data20);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data21);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data22);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data23);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
k10.canvas->canvasDrawBitmap(0,0,240,300,image_data24);
k10.canvas->updateCanvas();
delay(mind_n_ShiJian * 1000);
}
}
void DF_QingFeng() {
for (int index = 0; index < 10; index++) {
motor_ib.motorRun(motor_ib.M1, motor_ib.CW, 100);
delay(500);
motor_ib.motorRun(motor_ib.M1, motor_ib.CCW, 100);
mind_n_MuDan = 1;
delay(500);
}
motor_ib.motorStop(motor_ib.M1);
}图形化程序如下:


(四)素材制作与整合
为了丰富电子作品的内容,我搜集和制作了大量与洛阳牡丹相关的素材。这些素材包括精美的牡丹图片、动人的牡丹诗词、动听的音乐等。我将这些素材融入电子作品中,为用户呈现出一个充满洛阳牡丹元素的宣传世界。具体步骤如下:
1. 搜集与洛阳牡丹相关的图片和诗词,制作展示内容。
2. 设计电子作品的界面,将牡丹图片和诗词元素融入其中,增强作品的视觉效果和文化氛围。
3. 进行多次调试和优化,确保界面的美观和展示内容的准确性。
(五)调试与完善
在项目制作过程中,我进行了多次的调试和完善工作。我针对硬件连接、软件开发、素材整合等方面进行了全面的测试,发现并解决了多个潜在的问题。
六、结语
通过本次洛阳牡丹宣传电子作品的制作,我不仅实现了预期的目标,还收获了许多宝贵的经验和教训。我深刻认识到,传统文化的传承与创新需要现代科技手段的支撑,而现代科技手段的发展也离不开传统文化的滋养。未来,我将继续探索更多传统文化与现代科技相结合的可能性,为传承和弘扬中国传统文化贡献更多的力量。

附件

返回首页
回到顶部


评论