这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【彩屏贪吃蛇小游戏】Let's Do第2期活动-进阶贴-游戏背景音乐播放

共1条 1/1 1 跳转至

【彩屏贪吃蛇小游戏】Let's Do第2期活动-进阶贴-游戏背景音乐播放

菜鸟
2024-08-18 20:29:24     打赏

一、

    扬声器是一种将电信号转化为声信号的装置,其中的电磁转换原理大家感兴趣可以找下相关资料了解。本文实现的功能是使用PICO驱动OWS扬声器发声。

    扬声器外部有两根引脚,将其中一根引脚接地,另一个引脚接信源就构成完成信号回路,信源频率大小、幅度将使扬声器发出不同音调及声音大小。经查找资料,原来PICO主控没有集成DAC功能,这意味着PICO难以实现驱动扬声器播放音乐这一功能,只能将其作为普通的蜂鸣器使用。而树莓派官方推出有一款PyBoard开发板,其集成有DAC专用芯片,PICO可以结合PyBoard使用就能够播放简单的音乐。

二、

2.1

硬件BOM表:

PICO开发板 1个

OWS扬声器 1个

BJT晶体管 PNP 1个

2.2

    PNP晶体管用于将信号放大,由于PICO主控不带有DAC,这里PNP晶体管也没有太大用途。但是这里会给出一套扬声器结合晶体管的放大电路方案,可应用于其他带有DAC的主控开发板。结合本次活动的小游戏开发背景,扬声器由一系列不等频率脉冲来驱动。

image.png

三、程序设计

    将PICO的21引脚设为信源输出引脚,将扬声器其中一个引脚连接至PICO GPIO21引脚,另一个引脚接地。

示例程序:

#include "pico/stdlib.h"
#include "perf_counter.h"
#include "bsp/bsp.h"
#include <stdio.h>
#include "RTE_Components.h"
#if defined(RTE_Compiler_EventRecorder) && defined(RTE_Compiler_IO_STDOUT_EVR)
#   include <EventRecorder.h>
#endif
#if defined(RTE_Script_PikaScript)
#   include "pikaScript.h"
#endif
void SysTick_Handler(void)
{
}
static void system_init(void)
{
    extern void SystemCoreClockUpdate();
 
    SystemCoreClockUpdate();
    init_cycle_counter(false);
 
#if defined(RTE_Compiler_EventRecorder) && defined(RTE_Compiler_IO_STDOUT_EVR)
    EventRecorderInitialize(0, 1);
#endif
    stdio_init_all();
 
    bsp_init();
}
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
void LED_Init(){
gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);
}
 
void LED_Run(){
gpio_put(LED_PIN, 1);
sleep_ms(250);
gpio_put(LED_PIN, 0);
sleep_ms(250);
printf("QuansirX.\n");
}
 
void user_pin_init(uint16_t pin){
gpio_init(pin);
gpio_set_dir(pin,GPIO_OUT);
gpio_set_pulls(pin,0,1);
}
 
void user_pin_run(uint16_t pin,uint16_t t){
gpio_put(pin,1);
delay_us(t);
gpio_put(pin,0);
delay_us(t);
 
}
 
int main(void)
{
    system_init();
user_pin_init(21);
 
    while (true) {
for(uint16_t i=0;i<250;i++){
user_pin_run(21,i);
}
}
}

四、实验效果

硬件连接图

image.png

灰色线连接GND,红色线连接GPIO21引脚,通电后可以听到嘀嘀嘀声音




关键词: 彩屏贪吃蛇     扬声器     背景音乐    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]