i

Funktionstest von Audio: Mikrofon und Lautsprecher

Beep-Signale

Das folgende Beispiel lässt den Brick einmalig zwei kurze Beeps abspielen.

import lejos.hardware.Sound;
public class EV3BeepTest {
  public static void main(String[] args) {
    Sound.twoBeeps();	
  }
}
import lejos.nxt.Sound;
public class BeepTest {
  public static void main(String[] args) {
    Sound.twoBeeps();	
  }
}

Eigene Audiodatei abspielen - EV3

Abgesehen von dem Roboterprogramm, welches die WAV-Datei (hier: Beispiel.wav) abspielt, muss man sich seperat um die WAV-Datei kümmern. Die Einschränkungen für die WAV-Datei sind nicht mehr so stark wie beim NXT, dennoch sind folgende Aspekte zu beachten:

  • Format: Die WAV-Datei darf eine Abtastrate zwischen 8kHz und 48kHz verwenden. Je höher die Abtastrate, desto originalgetreuer werden insbesondere die hohen Töne wiedergegeben. Die Bittiefe darf 8- oder 16-bit betragen, je größer die Bittiefe, desto detailreicher (höher aufgelöst) wird jedes Sample gespeichert. Die Audiospur darf nicht stereo, sondern muss mono sein.
  • Größe: hohe Abtastrate, große Bittiefe und lange Spieldauer einer WAV-Datei sind die Faktoren und gleichzeitig Stellschrauben für den Speicherverbrauch (die Dateigröße). Eine zu große Datei (z.B. ein ganzes Lied voll aufgelöst) kann dazu führen, dass der EV3-Brick nicht mehr reagiert und das Roboterprogramm auch nicht das gewünschte Verhalten äußert. Ein Test mit 19MB schluf fehl, ein Test mit 1.4 MB (48kHz, 16-bit, 16 Sekunden) war erfolgreich. Im Zweifel also einfach mit einem vereinfachten Beipiel testen.
  • Upload: Die WAV-Datei muss zusätzlich zum Roboterprogramm auf den EV3-Brick geladen werden.

Entsprechend konvertieren kann man z.B. mit dem Programm Audacity. Der Transport auf den Brick erfolgt am einfachsten über die Shell (Windows->Eingabeaufforderung) jxjupload -u [dateiname] oder über das Eclipse-Plugin:

Upload der WAV-Datei mit Eclipse Plugin[1]
import lejos.hardware.Sound;
import java.io.File;
public class EV3WavTest {
  public static void main(String[] args) {
     Sound.playSample(new File("Beispiel2.wav"),100);
  }
}

Eigene Audiodatei abspielen - NXT

Abgesehen von dem Programm, welches die WAV-Datei (hier: Beispiel.wav) abspielt, muss man sich seperat um die WAV-Datei kümmern. Die Datei muss dafür als 8-Bit Monospur vorliegen und als PWM/PCM-WAV gespeichert sein. Entsprechend konvertieren kann man z.B. mit dem Programm Audacity. Der Transport auf den Brick erfolgt am einfachsten über die Shell (Windows->Eingabeaufforderung):

  • jxjupload -u [dateiname]
import lejos.nxt.Sound;
import java.io.File;
public class WavTest {
  public static void main(String[] args) {
     Sound.playSample(new File("Beispiel.wav"),100);
  }
}

Lautstärke messen

Das nachfolgende Programm Soundtest.java misst mithilfe des Sound-Sensors die Umgebungslautstärke und zeigt den Prozentwert auf dem Brick-Display an. Zur besseren Lesbarkeit auf dem Display ist eine Verzögerung von 200ms zwischen den Messungen eingebaut.

import lejos.nxt.*;
public class SoundTest
{
  public static void main (String args[]) throws Exception
  {
    SoundSensor sound = new SoundSensor(SensorPort.S1);
    while(true)
    {                           
      LCD.clear();      
      int val =sound.readValue();
      LCD.drawInt(val, 1, 1, 0);      
      Thread.sleep(200);
    }                   
  }  
}

Quellen

Suche

v
2.6.5.4.1
www.inf-schule.de/programmierung/robotik/messendarstellen/audio/funktionstest
www.inf-schule.de/2.6.5.4.1

Rückmeldung geben