一、项目灵感来源:
新年伊始收到的这份立体年历摆件,满是浓浓的中国贺喜韵味!那时正琢磨着,若这些盈满喜气的纸片角色能活灵活现动起来,还能伴着动作念叨吉祥话该多妙。恰逢 DFROBOT为行空板M10推出新品扩展板 —— 行空板M10扩展板组合(含电机IO扩展板、金手指扩展板、800mAh电池扩展板),这念想竟真有了着落。


二、项目功能:
1. 程序运行后,行空板屏幕显示恭贺新春背景图,与此同时新春 BGM 奏响,彩色流水灯闪烁,舵机同步驱动财神与寿星摆件做出动态动作。
2.当彩色流水灯停止流动后,财神率先恭贺新春,随后寿星老儿跟上送上祝福。
三、项目过程:
1.硬件连接说明:
1.1 行空板与M10电机扩展板:行空板与M10电机扩展板对应插槽插接,为舵机、RGB灯带外设提供驱动。
1.2 舵机连接:将两个舵机,对应接入M10电机扩展板的舵机接口,借助此功能,驱动财神、寿星纸片角色完成动态动作。
1.3 RGB灯带连接:把RGB灯带连接至行空板,通过程序控制实现彩色流水灯闪烁效果。
1.4 音频设备连接:将USB扬声器连接行空板USB接口,利用行空板音频输出功能,播放新春BGM。

2.素材采集
从猴子音悦网站下载新春 BGM,再在讯飞配音平台,将该背景音乐与 AI 人声进行合成 。
3.程序编写


3.效果展示

优化:拍完演示视频才发现财神和寿星摇晃的节奏不太对,所以单独给财神重新做了一个。

代码
# -*- coding: UTF-8 -*-
# MindPlus
# Python
import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/nick-unihiker_wifi-thirdex")
import time
from unihiker import GUI
from unihiker import Audio
from pinpong.board import Board
from pinpong.board import Servo
from pinpong.board import NeoPixel
from pinpong.board import Board,Pin
from pinpong.extension.unihiker import *
# 事件回调函数
def u_thread1_function():
for index in range(10):
np1.rainbow(0,20,1,360)
time.sleep(1)
np1.rainbow(0,20,360,1)
time.sleep(1)
def u_thread2_function():
for index in range(5):
time.sleep(2)
servo2.write_angle(60)
time.sleep(1)
servo2.write_angle(120)
time.sleep(2)
servo2.write_angle(90)
def u_thread3_function():
for index in range(5):
time.sleep(2)
servo1.write_angle(60)
time.sleep(1)
servo1.write_angle(120)
time.sleep(2)
servo1.write_angle(90)
u_gui=GUI()
Board().begin()
u_audio = Audio()
a=u_gui.draw_image(image="1.jpg",x=0,y=0)
servo1 = Servo(Pin((Pin.P0)))
servo2 = Servo(Pin((Pin.P3)))
servo1.write_angle(90)
servo2.write_angle(90)
np1 = NeoPixel(Pin((Pin.P4)),21)
np1.brightness(128)
thread1=u_gui.start_thread(u_thread1_function)
thread2=u_gui.start_thread(u_thread2_function)
thread3=u_gui.start_thread(u_thread3_function)
u_audio.play("开头.mp3")
time.sleep(1)
a.config(image="财神.jpg")
thread2=u_gui.start_thread(u_thread2_function)
u_audio.play("财神.mp3")
time.sleep(3)
a.config(image="寿星.jpg")
thread3=u_gui.start_thread(u_thread3_function)
u_audio.play("寿星.mp3")
while True:
pass
评论