| |
Allgemeines
Hier wird eine Möglichkeit zur direkten Programmierung des ROBO Interfaces
in Renesas C beschrieben. Programmiert wird in jedem Fall auf dem PC. Da ein
Test auf dem ROBO Interface kaum möglich ist, wird hier ein mehrstufiges
Vorgehen vorgestellt :
- Erstellen der Anwendung mit einer Teilmenge von VC++ 6.0 auf dem PC
Testen mit den Debug-Mitteln der IDE von VC++ 6.0.
Hierzu wird ein VC++ Rahmenprogramm "SimRenesas" fest vorgegeben,
in das eine C++ Source mit der eigentlichen Anwendung eingefügt wird. es
muß zwingend UCHAR main() {} enthalten. Der Zugriff auf die
Interface-Funktionen erfolgt über die Funktionsbibliothek roboFish.H / CPP,
die eine klassenlose Version der Klasse CFishFace ist. Sie baut aber direkt
auf der FtLib von fischertechnik auf (CFishFace baut auf umFish40.DLL auf).
roboFish verfügt wie CFishFace über "RobMotoren" und Counter zur
Positionierung in Anzahl Impulsen.
- Compilieren der Anwendung in einer Renesas C Umgebung
"RunRenesas".
RunRenesas enthält die gleiche Funktionsbibliothek roboFish.H / C wie (1.)
diesmal in einer Version, die auf FtCComp von fischertechnik aufbaut. Die
Extension der Source muß dazu von .CPP in .C geändert werden. Die Source
wird mit Project | Add Files... in das Project eingefüft.
Achtung : Das File ProgNr.INC des Projektes RunRenesaas enthält die
Festlegung in welchen Speicherbereich das Programm geladen werden soll.
Standard ist RAM1. Bei Bedarf ist das auf FLASH1 bzw. FLASH2 zu ändern.
- Laden in das ROBO Interface mit dem Tool FtLoader aus dem Paket
FtCComp UND Starten.
Hinweis : Da die C++ Source der Anwendung von (1.) möglichst ohne
Änderungen in (2.) eingebracht werden sollten, ist bei der Auswahl der
Sprachmenge restriktiv vorzugehen. Als Datentypen werden z.Zt. folgende
eingesetzt : UCHAR, UINT, int, BOOL. Die unterschiedliche Datenlänge auf den
Systemen stört nicht weiter, da der Bereich von 16bit wohl nicht überschritten
werden wird. Die normale C Sprachmenge ist in beiden Umgebungen verfügbar.
Weitere include's sind sorgfältig zu überlegen, ebenso weitere Datentypen.
Hinweis2 : Der Distanzsensor wird jetzt auch unterstützt.
Beteiligte Komponenten
- VC++ 6.0 von Microsoft.
- FtLib von www.fischertechnik.de/de/computing/download.html
- Das VC++ Projekt SimRenesas aus roboFish.ZIP
- Renesas C über fischertechnik Downloads oder Knobloch
- FtCComp über fischertechnik Downloads
- Das Renesas C Projekt RunRenesas aus roboFish.ZIP
Beispiel : Lichtsucher - Hindernis aus ROBO Mobile Set
UCHAR main() {
UCHAR Inputs;
InitFish();
do {
Inputs = GetInputs();
if((Inputs & 0x0C) == 0x0C) Ausweichen90();
else if(Inputs & 0x04) AusweichenLinks();
else if(Inputs & 0x08) AusweichenRechts();
else if((Inputs & 0xC0) == 0xC0) Vorwarts();
else if(Inputs & 0x40) Linkskurve();
else if(Inputs & 0x80) Rechtskurve();
else Lichtsuche();
} while(1);
FinishFish();
return 0;
}
void Lichtsuche() {
UINT i;
Links();
for(i = 0; i < 10; i++) {
if(GetInputs() & 0xC0) return;
WaitForHigh(iImpRechts);
}
Rechts();
for(i = 0; i < 10; i++) {
if(GetInputs() & 0xC0) return;
WaitForHigh(iImpRechts);
}
Stopp();
}
void AusweichenLinks() {
Stopp();
Pause(1000);
Ruckwarts();
WaitForChange(iImpRechts, 10, iTasHinten);
Links();
WaitForChange(iImpRechts, 2);
Stopp();
Pause(500);
} |
Programm HindernisLicht.C (Ausschnitt)
Die Programmstruktur entspricht dem ROBO Pro Programm. Lediglich die drei Sub's
Licht, Hindernis und Fahren im Hauptprogramm wurden aufgelöst, so ist es
deutlich übersichtlicher. Anstelle von if((Inputs & 0x0C) können die
Hindernistaster auch explizit abgefragt werden : if(GetInput(3) &&
GetInput(4)), ist einfacher zu durchschauen.
Weitere Details auf Programmieren und Debuggen
Downloads
In roboFish.ZIP sind die Projekte
SimRenesas und RunRenesas einschließlich der erforderlichen FtLib
bzw. der .h/.c Files enthalten, nicht aber die Tools. Neu (16.05.08) Sind
verschiedene Programme für den ROBO Explorer mit Distanzsensor.
Die genannten Projekte enthalten jeweils die gleichen Beispiel Projekte
:
HanoiRobot(Turm von Hanoi mit Rekursion),
PoorSlave(Funk),
Stanze (nach eTec Module)
Tresor mit CodeTasten
Stand : 17.06.2010
|