View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Programmer le pcDuino : Mesure Analogique et Synthèse vocale : L'appui sur un BP déclenche un message en synthèse vocale annonçant le résultat d'une mesure analogique.

Par X. HINAULT - Juin 2013

Ce que l'on va faire ici

  • Dans ce code, l'appui sur un bouton poussoir va déclencher un message en synthèse vocale, qui annoncera le résultat de la mesure analogique sur une broche analogique du pcDuino. Ce code pose les bases pour l'annonce vocale de résultats de mesure intégrant notamment des variables !
  • La résistance variable symbolise ici un capteur analogique et permet de tester simplement la mesure analogique : en pratique, il pourra s'agir de n'importe quel capteur analogique et le message pourra être adapté en conséquence.
  • Une utilisation potentiellement très intéressante est l'annonce vocale d'alerte lorsqu'une valeur critique d'une grandeur mesurée est dépassée.. çà ouvre pas mal d'idées...

Pré-requis

Schéma fonctionnel

  • L'entrée numérique déclenche la mesure analogique puis la synthèse vocale.

/mes_images/montages_pcduino/analog/pcduino_rvarx1_A2_bp_2_speak_schema.png

  • Pour plus de détails sur la synthèse vocale avec la librairie Pyduino Multimedia, voir la fonction speak()

Matériel nécessaire

Système

  • Le pcDuino
  • une sortie son opérationnelle :
    • soit la sortie audio HDMI connectée à un écran HDMI
    • soit la sortie audio jack intégrée si elle existe (raspberryPi)
    • soit une carte son USB disposant d'une sortie audio

E/S

  • une plaque d'essai pour montage sans soudures,
  • des straps,
  • un bouton poussoir pour CI,
  • une résistance variable,

Instructions de montage

  • Connecter un bouton poussoir entre la broche 2 (configurée en entrée avec rappel au plus) et le 0V
  • Connecter la sortie variable de la résistance variable à la broche A2, la deux autres broches de la résistance variable étant connectées entre le 0V et le 3.3V.

Le montage à réaliser

Le fichier *.py

Copier/coller ce code dans l'éditeur Geany :


#!/usr/bin/python
# -*- coding: utf-8 -*-

# exemple pyDUino - par X. HINAULT - www.mon-club-elec.fr
# Juin 2013 - Tous droits réservés - GPLv3
# voir : https://github.com/sensor56/pyDuino

# appui BP annonce resultat mesure analogique

#from pyduino import * # importe les fonctions Arduino pour Python
from pyduinoMultimedia import * # importe les fonctions Arduino pour Python

# entete declarative
BP=2  # declare la broche a utiliser
APPUI=LOW # valeur broche lors appui

#--- setup ---
def setup():
        pinMode(BP,PULLUP) # met la broche en entree avec rappel au plus actif
        Serial.println("La broche 2 est en entree avec rappel au plus actif !")

# -- fin setup --

# -- loop --
def loop():

        if(digitalRead(BP)==APPUI): # si appui

                Serial.println("Appui BP!")
                mesure=analogRead(A2) # mesure analogique sur la broche A2
                Serial.println("Mesure brute A2 = " + str(mesure))

                mesuremV=analogReadmV(A2)  # mesure en millivolts.
                Serial.println("Mesure mV A2 = " + str(mesuremV))

                # message synthese vocale
                message=("La mesure analogique sur la broche A2 vaut  " + str(mesure)
                + ". Sur une plage de mesure 12 bits. qui ses tend de 0 a 4095."
                +" soit une tension de " + str(mesuremV) + " millivolts.")

                print ("\nMessage en synthese vocale : ")
                print message

                speak(message) # synthese vocale

                delay(250)  # anti-rebond

        delay(100) # pause entre 2 lecture du BP

# -- fin loop --

#--- obligatoire pour lancement du code --
if __name__=="__main__": # pour rendre le code executable
        setup() # appelle la fonction main
        while(1): loop() # appelle fonction loop sans fin

 

Ce code est également disponible ici : https://raw.github.com/sensor56/pyduino-exemples/master/3a.AnalogInput/analogReadSpeakBp.py

Utilisation

  • Vérifier au besoin le bon fonctionnement de la sortie audio au préalable (par exemple en générant un son avec Audacity...)
  • Appuyer sur le bouton exécuter dans Geany
  • Une fenêtre de Terminal vide doit apparaître : lors d'un appui sur le bouton poussoir, un message vocale donne le résultat de la mesure analogique !

Discussion technique

  • Un code compact pour un résultat plus que correct ! Remarquer l'utilisation des . pour ralentir la diction ainsi que la possibilité de mettre une longue chaîne composée sur plusieurs lignes en utilisant les ( ) : simple !