#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. |
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.
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.
void Sound | ( | uint16_t | freq, | |
uint16_t | duration_msec, | |||
uint8_t | amplitude | |||
) |
Soundausgabe ueber die Motoren.
[in] | freq | Frequenz in Hz |
[in] | duration_msec | Laenge in Millisekunden |
[in] | amplitude | Amplitude |
// 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 }