ASURO Library  2.80
Makrodefinitionen | Funktionen
sound.c-Dateireferenz

Soundausgabe Funktionen. Mehr ...

#include "asuro.h"
Include-Abhängigkeitsdiagramm für sound.c:

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]freqFrequenz in Hz
[in]duration_msecLaenge in Millisekunden
[in]amplitudeAmplitude
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.

{
uint16_t wait_tics;
uint32_t n,k,period_usec,dauer_usec;
period_usec = 1000000L / freq;
dauer_usec = 1000 * (uint32_t) duration_msec;
k = dauer_usec / period_usec;
//IR Interuptfreq=36KHz
//Wavefreq=18KHz
wait_tics = 18000 / freq;
MotorSpeed (amplitude, amplitude);
for (n = 0; n < k; n++)
{
Sleep (wait_tics);
Sleep (wait_tics);
}
MotorSpeed (0, 0);
}