Das ganze ist recht einfach zu ändern:
Hier ist die original Funktion:
http://www.asurowiki.de/pmwiki/pub/html/sound_8c.html
Code:
Sound( uint16_t freq, uint16_t duration_msec, uint8_t amplitude)00069 {0070 uint16_t wait_tics;0071 uint32_t n,k,period_usec,dauer_usec;0072 0073 period_usec = 1000000L / freq;0074 dauer_usec = 1000 * (uint32_t) duration_msec;0075 k = dauer_usec / period_usec;0076 0077 //IR Interuptfreq=36KHz0078 //Wavefreq=18KHz0079 0080 wait_tics = 18000 / freq;0081 0082 MotorSpeed (amplitude, amplitude);0083 0084 for (n = 0; n < k; n++)0085 {0086 MotorDir (FWD, FWD);0087 Sleep (wait_tics);0088 MotorDir (RWD, RWD);0089 Sleep (wait_tics);0090 }00091 MotorSpeed (0, 0); 00092 }
Eigentlich doch recht offensichtlich, was die Funktion macht. Es werden beide Motoren zum erzeugen des selben Tons genutzt. Übergibt man dem rechten und linken Motor andere Parameter, sollten auch 2 verschiedene Töne bei raus kommen.
Einzig bei dem Sleep bzw. der For-Schleife muss man aufpassen, da man ja 2 Frequenzen hat. Das könnte etwas kniffliger werden, weil man 2 unterschiedliche Perioden hat. Hier müsste man vorher die Frequenzen filtern und entsprechend die waits anpassen.
Übernehmen wird dir die Arbeit aber vermutlich keiner.
Lesezeichen