Nota
Hola, ¡bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete más profundamente en Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
¿Por qué unirse?
Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances exclusivos: Accede anticipadamente a nuevos anuncios de productos y adelantos exclusivos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones y sorteos festivos: Participa en sorteos y promociones navideñas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.
4.1.2 Reproductor de Música
Introducción
En el proyecto 3.1.3 Módulo de Audio, hicimos que el altavoz reprodujera una canción. Ahora añadimos 3 botones para controlar la reproducción/pausa y el volumen de la música.
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.
Es muy conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ELEMENTOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
- |
|
Diagrama Esquemático
Nombre T-Board |
cableado físico |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO27 |
Pin 13 |
2 |
27 |
Procedimientos Experimentales
Paso 1: Construye el circuito.
Después de construir el circuito según el diagrama anterior, conecta el cable de audio en el conector de audio de 3.5mm de la Raspberry Pi.
Paso 2: Accede a la carpeta del código.
cd ~/raphael-kit/python/
Paso 3: Ejecuta.
python3 4.1.2_MusicPlayer.py
Después de que el código se ejecute, la Raspberry Pi reproducirá el archivo my_music.mp3 en el directorio ~/raphael-kit/music.
El Botón 1 pausa/reproduce la música.
El Botón 2 disminuye el volumen.
El Botón 3 aumenta el volumen.
Si deseas subir otros archivos de música a la Raspberry Pi, puedes consultar Software Filezilla.
Código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/python. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
from pygame import mixer
import RPi.GPIO as GPIO
import time
import os
user = os.getlogin()
user_home = os.path.expanduser(f'~{user}')
BtnPin1 = 18
BtnPin2 = 17
BtnPin3 = 27
volume = 0.7
status = False
upPressed = False
downPressed = False
playPressed = False
def setup():
mixer.init()
GPIO.setmode(GPIO.BCM)
GPIO.setup(BtnPin1, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(BtnPin2, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(BtnPin3, GPIO.IN, GPIO.PUD_UP)
def clip(x,min,max):
if x < min:
return min
elif x > max:
return max
return x
def play(pin):
global playPressed
playPressed = True
def volDown(pin):
global downPressed
downPressed = True
def volUp(pin):
global upPressed
upPressed = True
def main():
global volume, status
global downPressed, upPressed, playPressed
mixer.music.load(f'{user_home}/raphael-kit/music/my_music.mp3')
mixer.music.set_volume(volume)
mixer.music.play()
GPIO.add_event_detect(BtnPin1, GPIO.FALLING, callback=play)
GPIO.add_event_detect(BtnPin2, GPIO.FALLING, callback=volDown)
GPIO.add_event_detect(BtnPin3, GPIO.FALLING, callback=volUp)
while True:
if upPressed:
volume = volume + 0.1
upPressed = False
if downPressed:
volume = volume - 0.1
downPressed = False
if playPressed:
if status:
mixer.music.pause()
status = not status
else:
mixer.music.unpause()
status = not status
playPressed = False
time.sleep(0.5)
volume = clip(volume,0.2,1)
mixer.music.set_volume(volume)
time.sleep(0.1)
def destroy():
# Release resource
GPIO.cleanup()
mixer.music.stop()
# If run this script directly, do:
if __name__ == '__main__':
setup()
try:
main()
# When 'Ctrl+C' is pressed, the program
# destroy() will be executed.
except KeyboardInterrupt:
destroy()
Explicación del Código
from pygame import mixer
mixer.init()
Importa el método Mixer de la biblioteca pygame e inicializa el método.
BtnPin1 = 18
BtnPin2 = 17
BtnPin3 = 27
volume = 0.7
Define los puertos de los tres botones y establece el volumen inicial en 0.7.
upPressed = False
downPressed = False
playPressed = False
UpPressed, downPressed y playPressed son todas banderas de interrupción, la tarea correspondiente se ejecutará cuando sean True.
def clip(x,min,max):
if x < min:
return min
elif x > max:
return max
return x
La función clip() se utiliza para establecer los límites superior e inferior de los parámetros de entrada.
GPIO.add_event_detect(BtnPin1, GPIO.FALLING, callback=play)
GPIO.add_event_detect(BtnPin2, GPIO.FALLING, callback=volDown)
GPIO.add_event_detect(BtnPin3, GPIO.FALLING, callback=volUp)
Configura los eventos de detección de teclas de BtnPin1, BtnPin2 y BtnPin3.
Cuando se presiona
BtnPin1, se ejecuta la función de interrupciónplay().Cuando se presiona
BtnPin2, se ejecuta la función de interrupciónvolDown().Cuando se presiona
BtnPin3, se ejecuta la función de interrupciónvolUp().
Imagen del Fenómeno