от
Я построил набор музыкальных лестниц с питоном, датчиками движения и Raspberry Pi, а также веб-приложение, которое позволяет вам выбрать, какой тип звука инструмента вы хотите создать. Тип инструмента хранится в базе данных MySQL, которую я подключил к коду Python (который издает звуки, когда луч сломан) и к веб-приложению, которое позволяет пользователям выбирать тип инструмента из базы данных. Мне просто интересно, есть ли способ запроса базы данных из кода Python, который будет означать, только когда строка выбрана из базы данных, запустить определенный блок кода. Например, кто-то нажимает «Барабан» в веб-приложении. Инструмент Тип "Барабан" выбран из базы данных MySQL Drumsound.play () должен работать на коде Python. Есть ли способ, которым я мог бы сделать это на Python? Это для Raspberry Pi 3 с Python 2.7, MySQLdb5 и Apache2.
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",
    user="*****",
    pw="*****",
    db="stairs"
    )

cursor = mydb.cursor()
cursor.execute("SELECT variableValue FROM stairs WHERE variableValue = 
'instrumentType'")

import RPi.GPIO as GPIO # GPIO
import pygame.mixer # To make sound
pygame.mixer.init()

''' GPIO setup '''
GPIO.setmode(GPIO.BCM) # GPIO setmode
GPIO.setwarnings(False)

'''Define steps and pins here'''
step1 = 4


'''Motion sensor setup here'''
GPIO.setup(step1, GPIO.IN, GPIO.PUD_UP)


'''Piano files here'''
C1 = pygame.mixer.Sound("piano/C1.wav")


'''Drum files here'''
drum1 = pygame.mixer.Sound("drum/C1.wav")



def play(pin):
    sound = sound_pins[pin]
    print("Playing note from pin %s" % pin)
    sound.play()

'''Dictionary of steps and sounds'''
sound_pins = {
    step1: C1,
    step2: D,
    step3: E,
    step4: F,
    step5: G,
    step6: A,
    step7: B,
    step8: C2,
    }

for pin in sound_pins:
        GPIO.setup(pin, GPIO.IN, GPIO.PUD_UP)
        GPIO.add_event_detect(pin, GPIO.RISING, play, 100)
             

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Вы можете рассмотреть возможность использования словаря Python для хранения типа вашего «инструмента» в сравнении с функцией. Это позволяет вам создать отображение, на каком инструменте и на каком звуке играть. Вы можете спросить себя: «Это похоже на то, что я хочу, чтобы моя база данных делала?». Поскольку вы используете один и тот же
pygame.mixer.Sound("SomeWavePath")
, вы можете хранить эту связь между именами инструментов и их звуковыми файлами в самой базе данных. Таким образом, вы можете расширить свой выбор инструментов, просто добавив в базу данных. Позвольте мне также порекомендовать перейти на Python 3.x, так как версия 2.x скоро заканчивается (https://pythonclock.org/). Это также даст вам доступ к новым языковым функциям и более широкому спектру библиотечной поддержки, продвигающейся вперед. РЕДАКТИРОВАТЬ: E.g Сохранение отображения «instrument
...