IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Créer un son d'une fréquence déterminée avec un programme Python et Arduino


Sujet :

Arduino

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Créer un son d'une fréquence déterminée avec un programme Python et Arduino
    Bonjour

    Je suis débutant et je souhaiterais commander Arduino avec python.
    Si allumer une diode, la faire clignoter, mesurer une température avec l'aide d'un capteur, .... est relativement simple
    créer un son d'une fréquence déterminée me semble impossible après de nombreuses recherches.
    Connaissez vous un moyen d'y parvenir en python ?
    Merci d'avance
    Cdlt

  2. #2
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Points : 2 790
    Points
    2 790
    Par défaut
    Bonjour ,

    je ne comprends pas exactement ce que tu veux faire, mais voila une piste.

    Tu as également des exemples de sketch traitant ce sujet dans l'IDE Arduino en sélectionnant "Fichier>>Exemple>>02.Digital".

    Amicalement,
    naute

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Merci d'avoir répondu
    En fait je souhaiterais faire la même chose en python mais pas en ide arduino.
    J’utilise déjà le module pyfirmata de python pour allumer des diodes , lire des entrées , ...
    mais je suis bloqué pour envoyer un signal sur un buzzer d'une fréquence donnée, le tout avec python.
    En utilisant la sortie pwm je crée un signal en créneau de rapport cyclique donné ... mais pas de fréquence donnée.
    Cdlt

  4. #4
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Points : 2 790
    Points
    2 790
    Par défaut
    Quelques questions avant d'aller plus loin :
    • Pilotes-tu bien un Arduino avec un PC par l'intermédiaire d'un script Python ?
    • Est-ce que le buzzer est bien raccordé à une broche GPIO de l'Arduino ?
    • Est-ce que le script Python doit fournir lui-même le signal ou est-ce qu'il doit demander à l'Arduino de synthétiser le signal en lui envoyant, par exemple, la valeur de la fréquence souhaitée ?
    • Peux-tu donner le but de la manip ? Ça peut aider à trouver la bonne solution.

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonsoir

    Il faut changer de stratégie et développer le programme de l'Arduino complétement.
    Avec pyfirmata, l'Arduino reçoit un programme standard avec un certain nombre d'actions possibles. Les commandes sont envoyées et reçue par le port série transitant par l'USB. Or ce programme standard ne permet pas de générer une fréquence variable (ce n'est juste pas prévu dans le protocole firmata). Et le faire en envoyant rapidement des commandes on et off sera trop imprécis pour donner un résultat acceptable, voir juste trop lent.

    En terme de performance côté Arduino le firmata c'est comme jouer au solitaire sur un ordi de gamer. L'Arduino est limité à 1/100ème ou 1/1000ème de ce qu'il est capable de faire. (Estimation au doigt mouillé )

    Il te faut faire comme dans le tuto Pilotage d'un Arduino depuis un PC avec Boa Constructor, c'est à dire développer un programme Arduino qui lit des commandes venant de l'ordi et qui les exécutent. C'est à dire que le programme qui contrôle la génération de son devra être embarqué, générique et contrôlé par le programme du PC. Toutes les commandes que tu souhaiterais pouvoir envoyer depuis le PC doivent être prévue dans le programme Arduino et chacune doit implémenter l'action prévue éventuellement avec des paramètres qui sont envoyés dans les commandes.

    Bonne programmation

    Delias

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour
    Merci Delias pour ton post.
    Je ne suis pas sûr d'avoir tout compris mais je vais regarder attentivement le document cité.

    En fait je suis professeur de physique chime et dans le nouveau programme de seconde nous devons, à un moment donné, programmer en python (logiciel conseillé) et à un autre moment utiliser un microcontrôleur notamment pour créer un son.
    Le microcontrôleur le plus répandu dans mon lycée étant l’Arduino, je souhaitais donc lier les deux.

    La fonction "tone" en langage Arduino permet de créer un son d'une fréquence donnée, mais pour un élève cela rajoute encore un "langage de programmation". L'idée serait donc que l’élève cherche, à partir de la fréquence du son, la période ... et programme en python afin de générer le son correspondant (en créant un signal adapté).

    Merci en tous cas d'avoir consacré un peu de temps.
    Cdlt

  7. #7
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Points : 2 790
    Points
    2 790
    Par défaut
    Bonjour .

    Citation Envoyé par nsmax Voir le message
    nous devons, à un moment donné, programmer en python (logiciel conseillé)
    Un choix de plus en plus répandu.

    Citation Envoyé par nsmax Voir le message
    et à un autre moment utiliser un microcontrôleur notamment pour créer un son.
    La phrase semble indiquer que le son doit bien être synthétisé par le microcontrôleur.

    Citation Envoyé par nsmax Voir le message
    Le microcontrôleur le plus répandu dans mon lycée étant l’Arduino
    On peut en conclure que le langage Arduino n'est pas inconnu dans ton lycée.

    Citation Envoyé par nsmax Voir le message
    La fonction "tone" en langage Arduino permet de créer un son d'une fréquence donnée
    Les 3/4 du boulot sont donc déjà faits.

    Citation Envoyé par nsmax Voir le message
    mais pour un élève cela rajoute encore un "langage de programmation".
    Comme dit plus haut, le langage Arduino semble déjà utilisé par une partie des lycéens, lesquels pourront aider les autres, ce qui est valorisant et peut créer une certaine émulation. De plus, quelque soit le microcontrôleur que tu utiliseras, il te faudras apprendre son langage de programmation. Qu'est-ce que tu dirais si tu avais pris du PIC à programmer en assembleur.

    Citation Envoyé par nsmax Voir le message
    ... et programme en python afin de générer le son correspondant (en créant un signal adapté).
    Envoyer un signal sonore par la liaison série va monopoliser cette liaison à plein temps, ce qui n'est pas souhaitable.

    Delias a raison : tu dois faire travailler l'Arduino et n'utiliser le script python que pour envoyer des "ordres" ou pour traiter d'éventuelles données retournées.

    Amicalement,
    naute

Discussions similaires

  1. intéragir avec un logiciel avec un programme python
    Par johnraikonen dans le forum Général Python
    Réponses: 9
    Dernier message: 11/09/2011, 19h50
  2. jouer un son d'une fréquence donnée en C++/CLI
    Par jlg_47 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 19/07/2009, 23h55
  3. Créer les relations dans une base access avec ADOQuery
    Par codial dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/03/2007, 09h31
  4. Son dans une page Web avec Firefox
    Par diod dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 02/12/2005, 17h49
  5. [Plugin] Créer un modèle et lier un éditeur avec une vue
    Par freekk91 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 27/03/2005, 20h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo