Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

Der RP6

Programmierung

Hier geht es um die Programmierung des Roboters RP6 und seiner Erweiterungsplatinen RP6 CONTROL M32 und RP6 CCPRO M128.

Den Grundlagenartikel zum RP6 findet ihr hier: RP6

Beschreibung

Der RP6 und die M32 können frei in C programmiert werden. Dies wird durch die umfangreiche Funktionsbibliothek und die detailliert beschriebene Anleitung auch Anfängern sehr leicht gemacht. Die Software, die zur Programmierung verwendet wird, ist ausschließlich Freeware und kann entweder der CD entnommen oder aus dem Internet (hier) heruntergeladen werden.

RP6 Base

Ein Programm für die RP6 Base kann zum Beispiel so aussehen:



#include "RP6RobotBaseLib.h" // IMMER einbinden	

int main(void)
{
	initRobotBase(); // Den Roboter initialisieren

	setLEDs(0b111111); // Alle LEDs anschalten
	moveAtSpeed(100,100); // Mit Geschwindigkeit 100 auf beiden Motoren fahren
	mSleep(2000); // 2 Sekunden warten
	Stop(); // Anhalten

	while(true)
	{
               task_motionControl; // Geschwindigkeit regeln
	}
	return 0; 

}

In dem Programm würde der RP6 als erstes alle LEDs anschalten und für 2 Sekunden mit der selben Geschwindigkeit auf beiden Motoren fahren und dann stehen bleiben.

M32

Noch ein Beispiel für die M32:



// Includes:

#include "RP6ControlLib.h" 		// IMMER einbinden!!!


int main(void)
{
	initRP6Control(); // IMMER als ERSTES aufrufen!!!
	initLCD(); // Das LCD starten. Muss IMMER aufgerufen werden, BEVOR das LCD verwendet wird!
	setLEDs(0b1111); // Alle LEDs ein
	mSleep(500); // Eine halbe Sekunde warten
	setLEDs(0b0000); // Alle LEDs aus
	sound(180,80,25); // 2 mal Piepsen
	sound(220,80,0);
	showScreenLCD("################", "################"); // Etwas auf dem Display zeigen
	mSleep(1500); // Warten
	showScreenLCD("<<RP6  Control>>", "<<LC - DISPLAY>>"); //
	mSleep(2500); // Warten
	showScreenLCD("Hello World", "Example Program");
	mSleep(2500); //Warten
	clearLCD(); // Das LCD löschen
		
	while(true) 
	{
	     mSleep(1500); // Ewig warten...
	}
	return 0;
}


CCPRO M128

Die CCPRO M128 wird in Basic oder CompactC programmiert, hier ein Beispiel:

CompactC:


// WICHTIG: Immer die RP6CCLib mit einbinden:
#include "../../RP6CCLib/RP6CCLib.cc"

void main(void)
{
    // WICHTIG! Immer als erstes aufrufen:
    RP6_CCPRO_Init(); // Auf Startsignal warten, LCD und andere Dinge initialisieren !
    showScreenLCD("RP6 CCPRO M128", "Hello World!");  // Zwei Zeilen Text mit dem LCD anzeigen:
    // Zweimal piepsen:
    beep(200,300,100);   // Format: beep (<tonhöhe>, <dauer>, <pause>)
    beep(100,100,100); 
    AbsDelay(1000); // 1 Sekunde Pause:

    // Untere Zeile im LCD löschen:
    clearPosLCD(1,0,16);

    // Lauflicht:
    byte runLight, dir;   // Variablen deklarieren
    runLight = 1;  // Lauflicht Variable
    dir = 0;       // Laufrichtung des Lauflichtes
    while(true)
    {
		// LEDs setzen:
		setLEDs(runLight);

        // Laufrichtung wechseln wenn die äusseren LEDs erreicht wurden:
		if(runLight >= 16) {
            dir = 1;
            // Laufrichtung im LCD anzeigen:
            setCursorPosLCD(1,4);
            printLCD("<<<<----");
        }
		else if (runLight <= 1) {
			dir = 0;
            // Laufrichtung im LCD anzeigen:
            setCursorPosLCD(1,4);
            printLCD("---->>>>");
        }

		// LED Bit weiter "shiften" - nach links oder rechts, je nach Richtung:
		if(dir == 0)
			runLight = runLight << 1;
		else
			runLight = runLight >> 1;

        // 150ms Pause:
        AbsDelay(150);
    }
}

RP6Loader

Hier eine Tabelle der (mir) bekannten RP6Loader Versionen des RP6:

ZIP-Datum Version Bemerkungen Examples
03.08.2007 1.1c ab Win2k SP4 (XP, VISTA, W7)
05.09.2007 1.1e - JRE1.5 JRE5, Version für Win98SE/ME
07.09.2007 1.1c wie 03.08.2007 (?)
28.09.2007 1.2 ab 1.2: \n wird gesendet ab 16.10.2007
30.09.2007 1.2 wie 28.09.2007 (?)
17.12.2007 1.4 - BETA ab 1.4: neuer Encodertest neuer Selftest!
23.12.2007 1.4 - BETA spezielle Testversion
28.03.2008 1.4c diese Version gibt's auch für Linux 64bit

RP6 Demo-Programme

Die RP6 Demo Programme sind hier zu finden.

RP6 Library

Hier eine Tabelle der (mir) bekannten Library Versionen des RP6:

ZIP-Datum VERSION_ RP6 RP6Control RP6LIB_VERSION RP6Config.h BaseLib ControlLib UartLib MasterTWI SlaveTWI
07.06.2007 1.0 1.0 1.0 nein 1.0_16.05.07 1.0_10.04.07 1.0_16.05.07 1.0_10.04.07 1.0_16.05.07 1.0_16.05.07
08.07.2007 1.0 1.0 1.0 nein 1.0_16.05.07 1.0_10.04.07 1.0_16.05.07 1.0_10.04.07 1.0_16.05.07 1.0_16.05.07
31.07.2007 1.1 1.1 1.0 nein 1.1_27.07.07 1.1_27.07.07 1.0_16.05.07 1.0_10.04.07 1.0_16.05.07 1.0_16.05.07
07.08.2007 1.2 1.2_07.08.07 1.0 nein 1.2_07.08.07 1.2_07.08.07 1.0_16.05.07 1.0_10.04.07 1.0_16.05.07 1.0_16.05.07
11.08.2007 1.2 1.2_07.08.07 1.0 nein 1.2_07.08.07 1.2_07.08.07 1.0_16.05.07 1.0_10.04.07 1.0_16.05.07 1.0_16.05.07
28.09.2007 1.3 1.3_25.09.07 1.1 nein 1.2_07.08.07 1.3_25.09.07 1.1 1.1_10.09.07 1.0_16.05.07 1.0_16.05.07
16.10.2007 1.3 1.3_25.09.07 1.1 13 1.2_07.08.07 1.3_25.09.07 1.1 1.1_10.09.07 1.0_16.05.07 1.0_16.05.07
10.05.2008 1.4 1.4_29.04.08 1.1 13 1.2_07.08.07 1.4_29.04.08 1.1 1.1_10.09.07 1.0_16.05.07 1.0_16.05.07
15.09.2008 1.5 1.5_12.09.08 1.2 13 1.2_07.08.07 1.4_29.04.08 1.1 1.1_10.09.07 1.0_16.05.07 1.0_16.05.07
13.03.2010 1.5 1.5_12.09.08 1.3beta 15 1.3beta

In der 1. Spalte findet ihr das Datum der RP6Examples.zip Datei, in der die Library enthalten ist. Die 2. Spalte nennt die Version, die im Dateinamen der VERSION_x.x.txt Datei als x.x vorkommt. In der 3. und 4. Spalte steht die Versionsangabe der RP6Library und RP6ControlLibrary laut Angabe in der VERSION_x.x.txt Datei.

In der 5. Spalte gebe ich den Wert der Konstante RP6LIB_VERSION an. Es gibt sie erst ab den Examples vom 16.10.2007. In den Spalten 6 bis 11 führe ich nacheinander die Versionsnummern und ggf. das in der Datei genannte Datum der Header-Datei/Library an: RP6Config.h, BaseLib, ControlLib, UartLib, MasterTWI, SlaveTWI.

Die jeweils aktuelle Library ist in den Demo-Programmen auf der AREXX Homepage enthalten. Link siehe oben! Die RP6Control Library in der Version 1.3beta vom 13.03.2010 könnt ihr hier finden.

RP6RobotBase Library

Timer-Nutzung

RP6Control Library

Timer-Nutzung

Die RP6uart Library

Die RP6I2Cmaster/slaveTWI Library

Erfahrungsberichte

...in Arbeit...(kann aber gerne ergänzt werden)



Siehe auch

Weblinks

Autoren

--Sloti 22:23, 29. Dez 2007 (CET)

--Tobias1 18:30, 06. April 2010 (CET)

--Dirk 20:50, 31. Juli 2011 (CET)


LiFePO4 Speicher Test