Micrófono

Introducción

Robobo puede identificar notas musicales, palmadas o conocer el nivel de ruido ambiente mediante el micrófono del Smartphone. Este módulo no está implementado en el simulador.

Elementos de programación

1. Clase Note

Representa una nota detectada por Robobo.
Atributos:

        • name (string): La nota musical en formato texto, según la nomenclatura inglesa, que es:
DO DO# RE RE# MI FA FA# SOL SOL# LA
C Cs D Ds E F Fs G Gs S
        • duration (int): La duración de la nota en milisegundos.

2. Método readLastNote

readLastNote()
Lee la última nota detectada por el sensor de notas.

Devuelve:
• La nota (Note). Ver Clase Note.

Ejemplo de Uso

El siguiente programa genera notas musicales desde MI hasta RE, utilizando el método playNote. Luego, esas notas se leen con el método readLastNote y se dice en voz alta la nota detectada. Al ejecutar este programa, se puede observar como para algunas notas emitidas (sostenidas), no se dice nada.

from robobopy.Robobo import Robobo

rob = Robobo("10.113.26.150")
rob.connect()

note_to_play = 52

while note_to_play <= 64:
    rob.playNote(note_to_play, 1)

    note_to_play+=1
    read_note = rob.readLastNote()
    if read_note == 'C':
        rob.sayText('Acabo de oir un DO')
    else:
        if read_note == 'D':
            rob.sayText('Acabo de oir un RE')
        else:
            if read_note == 'E':
                rob.sayText('Acabo de oir un MI')
            else:
                if read_note == 'F':
                    rob.sayText('Acabo de oir un FA')
                else:
                    if read_note == 'G':
                        rob.sayText('Acabo de oir un SOL')
                    else:
                        if read_note == 'A':
                            rob.sayText('Acabo de oir un LA')
                        else:
                            if read_note == 'B':
                                rob.sayText('Acabo de oir un SI')
    rob.wait(1)

3. Método whenANoteIsDetected

whenANoteIsDetected(callback)
Establece la función callback que se llama cuando se detecta una nueva nota.

Parámetros:
callback (fun): La función callback que será llamada.

Ejemplo de Uso

El siguiente programa hace que Robobo diga que acaba de oír la nota Do si efectivamente esta nota ha sonado y haciendo uso del método whenANoteIsDetected.

from robobopy.Robobo import Robobo

def fun():
    if rob.readLastNote() == 'C':
        rob.sayText('Acabo de oir un DO')

rob = Robobo('10.113.26.150')
rob.connect()

rob.whenANoteIsDetected(fun)

# el programa se mantiene en ejecución continua
while True:
    rob.wait(0.1)

4. Método readClapCounter

readClapCounter()
Lee el número de palmadas registrado desde el último reinicio.

Devuelve:
• El número de palmadas (int).

5. Método resetClapCounter

resetClapCounter()
Reinicia el contador de palmadas.

Ejemplo de Uso

El siguiente programa detecta cuando se realizan dos o más palmadas consecutivas (en menos de dos segundos), lo cual hace que Robobo emita un sonido de alegría y ponga la expresión de sorpresa. Para ello se utiliza una variable como temporizador el cual se reinicia cada 2 segundos y el método readClapCounter. Si damos una única palmada, no ocurre nada.

from robobopy.Robobo import Robobo
from robobopy.utils.Sounds import Sounds
from robobopy.utils.Emotions import Emotions

rob = Robobo('10.113.26.150')
rob.connect()

timer = 0
while True:
    if timer < 2:
        if rob.readClapCounter() > 1:
            rob.playSound(Sounds.LAUGH)
            rob.setEmotionTo(Emotions.SURPRISED)
            rob.wait(0.5)
            rob.resetClapCounter()
    else:
        timer = 0
        rob.resetClapCounter()
        rob.setEmotionTo(Emotions.NORMAL)
    rob.wait(1)
    timer+=1

6. Método whenClapIsDetected

whenClapDetected(callback)
Establece la función callback que se llama cuando se detecta una nueva palmada.

Parámetros:
callback (fun): La función callback que será llamada.

Ejemplo de Uso

El siguiente programa hace que Robobo se detenga y diga, «Me has mandado parar» cuando detecta una palmada.

from robobopy.Robobo import Robobo

def clap():
    rob.stopMotors()
    rob.sayText('Me has mandado parar')

rob = Robobo('10.113.26.150')
rob.connect()

rob.moveWheels(20,20)
rob.whenClapIsDetected(clap)

# el programa se mantiene en ejecución continua
while True:
    rob.wait(0.1)

7. Método readNoiseLevel

readNoiseLevel()
Lee el nivel de presión de sonido (SPL, por sus siglas en inglés), que es una medida del ruido ambiente.

Devuelve:
• El valor de SPL en decibelios (float).

Ejemplo de Uso

El siguiente programa hace que Robobo diga el nivel de ruido de manera continua y lo categorice en nivel de ruido alto, medio o bajo en función de los decibelios detectados por el método readNoiseLevel.

from robobopy.Robobo import Robobo

rob = Robobo('10.113.26.150')
rob.connect()

while True:
    noise_level = rob.readNoiseLevel()
    rob.sayText(noise_level)

    if noise_level >= 70:
        rob.sayText('El nivel de ruido es muy alto')
    elif noise_level >= 40 and noise_level < 70:
        rob.sayText('El nivel de ruido es medio')
    elif noise_level > 20 and noise_level > 40:
        rob.sayText('El nivel de ruido es bajo')
    else:
        rob.sayText('El nivel de ruido es muy bajo')
rob.wait(1)
Robobo
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.