sound.c-Dateireferenz

Soundausgabe Funktionen. Mehr ...

#include "asuro.h"

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define BEEP   sound (1000, 100, 255)

Funktionen

void Sound (uint16_t freq, uint16_t duration_msec, uint8_t amplitude)
 Soundausgabe ueber die Motoren.


Ausführliche Beschreibung

Soundausgabe Funktionen.

Mit den Motoren des ASUROs lassen sich auch Töne erzeugen.
Das Prinzip dahinter ist folgendes:
Die Frequenz des Tons wird durch umschalten der Motor Drehrichtung bestimmt.
Die Lautstärke wird über die Geschwindigkeit der Motoren bestimmt.
Theoretisch liessen sich damit auch Stereo Signale erzeugen, da es ja zwei
Motoren gibt, die sich auch getrennt ansteuern lassen. Dazu müsste die
Sound Funktion allerdings umgeschrieben werden.

Siehe auch:
Define fuer die Steuerung der Motoren in asuro.h
FWD, RWD
Version:
sto2 - 01.09.2006 - stochri
first version

V001 - 09.02.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)

V002 - 18.02.2007 - Sternthaler
+++ Alle Funktionen
Einheitliche Formatierung zu den anderen Sourcen.

V003 - 26.06.2007 - stochri
Bugfix Fehler in der Soundlaenge (max. 250ms)

Definiert in Datei sound.c.


Makro-Dokumentation

#define BEEP   sound (1000, 100, 255)

Definiert in Zeile 94 der Datei sound.c.


Dokumentation der Funktionen

void Sound ( uint16_t  freq,
uint16_t  duration_msec,
uint8_t  amplitude 
)

Soundausgabe ueber die Motoren.

Parameter:
[in] freq Frequenz in Hz
[in] duration_msec Laenge in Millisekunden
[in] amplitude Amplitude
Rückgabe:
nichts
Beispiel:
(Nur zur Demonstration der Parameter/Returnwerte)
  // Laesst den Asuro einen Ton von 1kHz für eine 1/2 Sekunde
  // mit max. Amplitude (255) spielen.
  Sound (1000, 500, 255);

Definiert in Zeile 65 der Datei sound.c.

00069 {
00070   uint16_t wait_tics;
00071   uint32_t n,k,period_usec,dauer_usec;
00072 
00073   period_usec = 1000000L / freq;
00074   dauer_usec = 1000 * (uint32_t) duration_msec;
00075   k = dauer_usec / period_usec;
00076 
00077   //IR Interuptfreq=36KHz
00078   //Wavefreq=18KHz
00079 
00080   wait_tics = 18000 / freq;
00081 
00082   MotorSpeed (amplitude, amplitude);
00083 
00084   for (n = 0; n < k; n++)
00085   {
00086     MotorDir (FWD, FWD);
00087     Sleep (wait_tics);
00088     MotorDir (RWD, RWD);
00089     Sleep (wait_tics);
00090   }
00091   MotorSpeed (0, 0);
00092 }


Erzeugt am Sun Nov 18 18:24:53 2007 für ASURO Library von  doxygen 1.5.1-p1