Hallo

Recht einfach kann man beim Probot die Antriebsplatine austauschen:

Bild hier  
http://www.youtube.com/watch?v=Z7VJT-kw9VQ

Die Steuerplatine treibt die Motoren der umgebauten Servos über die orginalen Servoplatinen an. Die Potis dienen nun zum Kalibrieren des Nullpunkts (am Anfang des Videos). Leider haben meine Omniwheels fast keinen Grip auf dem Laminat.

Das kleine Demo erzeugt die Servoimpulse asurolike mit Sleep():
Code:
// Erster Test mit Omniwheels                                           19.10.09 mic

#include "asuro-probot.h"
#include "asuro-probot.c"

void omniwheels(char x, char y, char z, int t)
{
	int i;
	while(t--)
	{
		PORTB |= (1<<PB1);
		Sleep(36+x);
		PORTB &= ~(1<<PB1);
		PORTB |= (1<<PB2);
		Sleep(36+y);
		PORTB &= ~(1<<PB2);
		PORTB |= (1<<PB4);
		Sleep(36+z);
		PORTB &= ~(1<<PB4);
		for(i=15; i--; Sleep(36));
	}
}
int main(void)
{
	Init();
	PORTC |= 3; // Odo-PullUps simulieren für PollSwitch()
	PORTB &= ~(1<<PB5 | 1<<PB4 | 1<<PB2 | 1<<PB1);
	while(!PollSwitch());
	while(PollSwitch());
	StatusLED(RED);

   while(!PollSwitch()) // kalibrieren
   {
		omniwheels(0,0,0,10);
	}
	while(PollSwitch()); //fertig
	StatusLED(YELLOW);
	Beep(200);
	Msleep(200);
	Beep(1000);

   while(1) // Demo
   {
      omniwheels(2,2,2,200);
      Beep(100);
      omniwheels(-2,-2,-2,300);
      Beep(200);
      omniwheels(5,5,5,400);
      Beep(100);
      omniwheels(-7,-7,-7,400);
      Beep(200);
      Msleep(200);
      Beep(200);
      omniwheels(2,-2,0,300);
      Beep(200);
      omniwheels(4,-4,0,300);
      Beep(200);
      omniwheels(0,5,-3,300);
      Beep(200);
      omniwheels(5,3,-5,300);
      Beep(200);
      Msleep(200);
      Beep(200);
   }
}
Gruß

mic