Je recherche un expert dans le domaine de l'arduino (carte Arduino avec utilisation des sons)

donc avec ton tuto @J-M-L , je devrais ne plus avoir d'erreur comme en rapport avec la ligne

arduinoData = serial.Serial(port="COM5", baudrate=9600, bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE) 
from playsound import playsound
import serial

arduinoData = serial.Serial(port="COM5", baudrate=9600, bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE)
print("COM5")

var2 = arduinoData.readline()
print(var2)

while(1):
    var2 = arduinoData.readline().decode('ascii').strip()
    print(var2)
       
    if (var2=="un"):
        playsound('un.wav')
        print('playing sound using  playsound')

    if (var2=="one"):
        playsound('one.wav')
        print('playing sound using  playsound')

    if (var2=="deux"):
        playsound('deux.wav')
        print('playing sound using  playsound')

c'est ca ?

et apres pour mon message d'erreur lors du téléversement, comment je peux faire ?

Tu peux remplacer tout ça par :

      playsound(var2+'.wav')
      print(f'playing sound {var2}.wav using playsound')

en faisant attention à l'indentation que je n'ai pas pu reproduire correctement.

d'accord c'est pour que ce soit plus simple pour moi ?

from playsound import playsound
import sys, threading, queue, serial
import serial.tools.list_ports
baudRate = 115200
arduinoQueue = queue.Queue()

def selectArduino():
    ports = serial.tools.list_ports.comports()
    choices = []
    print('PORT\tDEVICE\t\t\tMANUFACTURER')
    for index,value in enumerate(sorted(ports)):
        if (value.hwid != 'n/a'):
            choices.append(index)
            print(index, '\t', value.name, '\t', value.manufacturer) 
    choice = -1
    while choice not in choices:
        answer = input("➜ Select your port: ")
        if answer.isnumeric() and int(answer) <= int(max(choices)):
            choice = int(answer)
    print('selecting: ', ports[choice].device)
    return ports[choice].device

def configureArduino():
    global arduinoPort
    arduinoPort = selectArduino()
    global arduino
    arduino = serial.Serial(arduinoPort, baudrate=baudRate, timeout=.1)

def listenToArduino():
    message = b''
    while True:
        incoming = arduino.read()
        if (incoming == b'\n'):
            arduinoQueue.put(message.decode('utf-8').strip().upper())
            message = b''
        else:
            if ((incoming != b'') and (incoming != b'\r')):
                 message += incoming
                               
configureArduino() 
print("Waiting for Arduino")
while True:
    if not arduinoQueue.empty():
        if arduinoQueue.get() == "OK":
            break
print("Arduino Ready")

while True:
    if not arduinoQueue.empty():
        var2 = arduinoQueue.get()

        if (var2=="francais"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="anglais"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound') 
        
        if (var2=="un"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')

        if (var2=="one"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')

        if (var2=="deux"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="two"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="trois"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="three"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="quatre"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="four"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="cinq"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="five"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="six"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')
            
        if (var2=="sixanglais"):
            playsound(var2+'.wav')
            print(f'playing sound {var2}.wav using playsound')

Comme ca c'est bon ? ou pas

Pour simplifier le code : Python permet d'avoir une syntaxe très légère, il faut en profiter

et pour ca tu penses que c'est ok?

J'ai essayé d'adapter le tuto de @J-M-L

Tout ceci est remplaçable par :

        playsound(var2+'.wav')
        print(f'playing sound {var2}.wav using playsound')

C'est vrai je suis débile

J'espère que ça correspond bien au tuto @J-M-L et que ça va faire que ça va fonctionner demain :crossed_fingers:

j'ai preparé le code

mais je ne comprends pas comment le mettre par rapport a ce que je veux faire

@J-M-L

 arduinoQueue.get()

c'est ce qui permet de récuperer les informations envoyées par la carte arduino ? on est d'accord ?

Oui ça extrait le message

D'accord est ce que tu pourras regarder sur ma question mon post

J’ai déplacé vos remarques ici car elles sont plus en regard de votre projet que du tuto

Je suis en déplacement aujourd’hui - juste sur mon iPhone donc pas sûr que je pourrai regarder en détail mais en gros il vous suffit d’importer la bibliothèque qui gère les sons au début du code python et de mettre votre code qui joue le son dans la fonction

def handleArduinoMessage(aMessage):
    print("<= [" + aMessage + "]")

Côté arduino in faut faire un println() (attention il faut le passage à la ligne donc pas juste un print) du N° de la face supérieure du dé.

Si vous appelez la même fonction qui joue un son dans la Fonction

def handleLocalMessage(aMessage):

Alors vous pouvez aussi tester votre code python et l’audio en local en tapant un chiffre de 1 à 6 au clavier de votre PC

d'accord merci je vais tester

et comment on fait du coup pour lancer tout ca ?

Oui, c'est justement ce que l'on essaye de t'expliquer, si tu fais un téléversement, on ne veut pas que ton programme Python tourne!
Tu ne dois pas avoir ton IDE qui essaye de téléverser ou utilise le moniteur série en même temps que ton programme Python s'exécute

C'est quoi "tout ça"?
Si c'est le programme Python, puisque tu as obtenu un message d'erreur du au programme, tu l'a déjà lancé?

Donc je televerse sur la carte Arduino et je ferme ide et je lance ensuite python ?

J'ai pas eu le temps de le lancer aujourd'hui je ferai ça demain matin :confused:

On est pas mal occupé

Si tu veux être sûre de ne pas avoir de conflit sur le port série, oui.