Die erste echte Einbindung in ein Programm ist denkbar einfach.
Im Beispielprogramm "Example_10_Move2" für die M256_WiFi findet sich ab Zeile 324 das Modul "ACS Event Handler". Es scheint, als wäre das Programm ursprünglich für die M32 Platine geschrieben, denn es sind drei "Sound-Anweisungen" da drin, die auskommentiert sind. Siehe hier:
Code:
/**
* ACS Event Handler
*/
void acsStateChanged(void)
{
if(obstacle_left && obstacle_right)
statusLEDs.byte = 0b100100;
else
statusLEDs.byte = 0b000000;
statusLEDs.LED5 = obstacle_left;
statusLEDs.LED4 = (!obstacle_left);
statusLEDs.LED2 = obstacle_right;
statusLEDs.LED1 = (!obstacle_right);
updateStatusLEDs();
if(obstacle_left && obstacle_right)
{
// sound(160,20,0);
}
else
{
// if(obstacle_left)
// sound(120,10,0);
// if(obstacle_right)
// sound(140,10,0);
}
}
Diese Sound Anweisungen kann man einfach durch writeChar1(xxx) ersetzen und fertig ist die Laube!
Code:
/**
* ACS Event Handler
*/
void acsStateChanged(void)
{
if(obstacle_left && obstacle_right)
statusLEDs.byte = 0b100100;
else
statusLEDs.byte = 0b000000;
statusLEDs.LED5 = obstacle_left;
statusLEDs.LED4 = (!obstacle_left);
statusLEDs.LED2 = obstacle_right;
statusLEDs.LED1 = (!obstacle_right);
updateStatusLEDs();
if(obstacle_left && obstacle_right)
{
writeChar1(254); // Wow sound
}
else
{
if(obstacle_left)
writeChar1(221); // Beep left
if(obstacle_right)
writeChar1(222); // Beep right
}
}
Im Ergebnis ist der RP6 nun ziemlich "redselig", während er durch die Gegend kurvt. Das erinnert schon sehr an R2D2 (die Gattin nervt es schon!) 
Statt der Töne könnte er natürlich Wörter oder Sätze von sich geben, aber dann wäre das ständige Gequassel wohl gar nicht zu ertragen 
Gruß Uwe
Lesezeichen