-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: suche Beispielprogramme für den RP6

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2008
    Alter
    19
    Beiträge
    5

    suche Beispielprogramme für den RP6

    Anzeige

    Hallo....

    zu Weihnachten habe ich einen neuen RP6 geschenkt bekommen.
    (ich hatte ihn mir so sehr gewünscht)

    Da ich von der C-Programierung keine Ahnung habe (bin erst 10),
    Suche ich fertige Beispielprogramme (außer dem Standard von der
    Arexx-Seite).

    Kann mir hier jemand helfen ? Vieleicht mit eigenen Programmen oder
    mit Links zu Seiten wo man Programme kostenlos herunterladen kann.

    Vielen Dank schon einmal vorab!!!

    Gruß Enni

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo enni,

    Glückwunsch zum neuen RP6!

    Ich weiß keine Seite, wo es nur so von fertigen Programmen für den RP6 wimmelt.
    Wenn du dir dieses RP6-Unterforum 'mal komplett ansiehst (ok, dauert ein bißchen, aber die Sylvesternacht ist lang ...), findest du da drin jede Menge Programme bzw. Codeschnipsel, die man gut verwenden kann.

    Auch wenn C erstmal nicht so selbsterklärend ist, würde ich aber doch durchstarten: Sieh dir die Demoprogramme an und ändere sie, um zu sehen, was man alles machen kann. Geh die Anleitung ganz durch und blätter auch 'mal durch die RP6 Library (RP6RobotBase.h, RP6RobotBaseLib.h, RP6RobotBaseLib.c), wenn du einen Funktionsaufruf in den Demos nicht verstehst.
    Auch wenn's mühsam ist: Es bringt besseren Erfolg, als fertige Programme zu sammeln.

    Wenn du dann Fragen hast, gibt es ja das Forum hier!

    Gruß Dirk

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2008
    Alter
    19
    Beiträge
    5
    Hallo Dirk,

    schönen Dank für dass Du mir Mut machst.

    Aber ich habe dabei 2 Probleme:
    1) meine Zeit, die ich im Internet surfen darf ist begrenzt !

    und

    2) von Programmierung habe ich keinen blassen Schimmer !
    z.B. wofür benötige ich die RP6LIB ?
    was ist eine *.pnproj Datei
    *.pnps Datei
    *.c Datei
    *.hex Datei > wobei das die Datei ist, die
    in den RP6 gelanden wird?!

    Einfach im Programmcode was ändern ohne zu wissen was man tut find
    ich nicht so gut. Vielleicht git es hier ja auch gute Lernhilfen im Netz.

    Nartürlich werde ich mich später mit der Programierung beschäftigen,
    aber im Moment wollte ich einfach nur Programmbeispiele austesten.

    Vielleicht kannst Du mir ja, oder jemand drittes ein Beispielprogramm
    zusenden.

    Gruß Enni

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Auch von mir herzlichen Glückwunsch zum RP6 :)

    Mit allgemeinen RP6-Programmen kann ich leider nicht wirklich dienen weil ich meist irgendwas spezielles angebaut und gesteuert habe. Trotzdem hier mal ein paar meiner Versuche:

    Die Statusleds blinken lassen:
    Code:
    #include "RP6RobotBaseLib.h"
    
    #define blinkLED6 statusLEDs.LED6=(getStopwatch1() & (1<<6)) && 1
    
    uint8_t blink3;
    
    int main(void)
    {
    	initRobotBase();
    	setLEDs(0);
    
    	//Zeitgeber für das Blinken starten
    	startStopwatch1();
    
    	while(true)
    	{
    		//LED1 blinkt langsam
    		statusLEDs.LED1 ^=(getStopwatch1() & (1<<9));
    
    		//LED2 blinkt schnell
    		statusLEDs.LED2=(getStopwatch1() & (1<<7)) && 1;
    
    		//LED3 blinkt variabel (0 bedeutet aus)
    		blink3=8;
    		statusLEDs.LED3=(getStopwatch1() & (1<<blink3)) && 1;
    
    		//LED4 flasht
    		statusLEDs.LED4=!(getStopwatch1() & (0b101<<6)) && 1;
    
    		//LED5 flackert
    		statusLEDs.LED5=(getStopwatch1() & (0b1001<<5)) && 1;
    
    		//LED6 blinkt mit #define
    		blinkLED6;
    
    		//LED-Status aktuallisieren
    		updateStatusLEDs();
    
    		//das funktioniert natürlich auch mit der pwrLED
    		if (!(getStopwatch1() & (9<<8)) && 1) powerON(); else powerOFF();
    	}
    	return 0;
    }
    Sanft beschleunigen und abbremsen:
    http://www.roboternetz.de/phpBB2/vie...=299733#299733

    Linienverfolgung mit eingebauten Lichtsensoren:
    http://www.roboternetz.de/phpBB2/vie...=354402#354402

    Erschreckend wenig was ich mit dem orginalen RP6 auf die Beine gestellt habe.
    Mit kleinen oder größeren Erweiterungen war ich fleißiger:
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=35643
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=41805
    http://www.roboternetz.de/phpBB2/zei...=362473#362473
    Nur mal ein paar Beispiele was man alles anstellen kann :)

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    z.B. wofür benötige ich die RP6LIB ?
    was ist eine *.pnproj Datei
    *.pnps Datei
    *.c Datei
    *.hex Datei
    Die RP6 Library sind vorgefertigte Funktionen und Programmteile, mit denen man die Funktionen des RP6 gut nutzen kann (müßte man sonst alles selbst programmieren ...).
    Der PN2 benutzt .pnproj Dateien zum Festlegen von "Projekten". Ein Projekt besteht aus den Dateien, die links im Fenster des PN2 erscheinen, wenn man z.B. ein Demoprogramm öffnet.
    Du kannst auch deine neuen Programme als Projekte öffnen und z.B. die eigentliche Programmdatei und weitere Library-Dateien als Projekt immer zusammen öffnen.
    Die PN2-Dateien kannst du auch mit einem Texteditor öffnen und verändern. Eigentlich erledigt das aber PN2 automatisch.
    Die .c Dateien sind die eigentlichen C-Programme oder Libraries.
    Die .hex Dateien entstehen, wenn man .c Dateien kompiliert, d.h. im PN2 auf make all klickt. Die .hex werden dann mit dem RP6Loader in den RP6 befördert.
    Einfach im Programmcode was ändern ohne zu wissen was man tut find ich nicht so gut.
    Doch, learning by doing ist gut und gibt sofort Erfolgserlebnisse. Ich lasse die Demos auch bei mir unverändert und kopiere ganze Beispiele und ändere die im neuen Verzeichnis. Wenn du das Mini-Tutorial in der RP6 Anleitung durcharbeitest und dann die Funktionsbeschreibung der Library, kannst du bald ein paar kleinere Änderungen oder eigene Ideen umsetzen.
    Ein C-Buch kannst du dann immer noch kaufen.

    Gruß Dirk

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2008
    Alter
    19
    Beiträge
    5
    Hallo Mic,

    vielen Dank für Deine Antwort.

    Ich habe versucht den Code für die "Statusleds blinken lassen" umzusetzten;

    Wie bin ich vorgegangen:
    - habe im Beispielverzeichnis einen neuen Ordner angelegt "Ex_LED_status";
    - habe die BAT-Dateien "make_all.bat + make_clean.bat" in den Ordner kopiert
    - habe eine neue makefile-Datei erstellte mit den Einträge
    "TARGET = Ex_LED_status
    RP6_LIB_PATH=../../RP6Lib
    RP6_LIB_PATH_OTHERS= $(RP6_LIB_PATH)/RP6base $(RP6_LIB_PATH)/RP6common
    SRC += $(RP6_LIB_PATH)/RP6base/RP6RobotBaseLib.c
    SRC += $(RP6_LIB_PATH)/RP6common/RP6uart.c
    SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CslaveTWI.c"
    - und zuletzt habe ich eine neue c-Datei "Ex_LED_status.c" mit dem Beispiel-Code.

    Diese Datei habe ich im Notepad geladen und habe mit den Tools "MAKE ALL" aus geführt; hierbei erhielt ich folgende Fehlermeldung:
    "> "C:\WinAVR-20070525\CD\RP6Examples\RP6BASE_EXAMPLES\Ex_LED_st atus\\make_all.bat"

    C:\WinAVR-20070525\CD\RP6Examples\RP6BASE_EXAMPLES\Ex_LED_st atus>set LANG=C

    C:\WinAVR-20070525\CD\RP6Examples\RP6BASE_EXAMPLES\Ex_LED_st atus>make all
    make: *** No rule to make target `all'. Stop.

    > Process Exit Code: 2
    > Time Taken: 00:00"

    Was habe ich falsch gemacht ? (WinAVR-20070525 Version)

    Gruß Enni

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    12.03.2008
    Ort
    Kiel
    Alter
    33
    Beiträge
    10
    Moin enni,
    hast du ein Projekt erstellt? Und dann den Programmcode reinkopiert? Ich benenne das Projekt und die Source-file (xyz.c) immer gleich.
    Dann solltest du dir eine make-file aus den Beispielen in dein erstelltes Verzeichnis kopieren. In der makefile editierst du NUR TARGET = xyz mit dem namen aus deinem Projekt, also TARGET = Ex_LED_status.
    Ich verwende übrigens die Beispiele bzw make-files von der Arrex-Seite, Version 20080915.
    Viel Spaß beim testen! Gruß

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2008
    Alter
    19
    Beiträge
    5
    Hallo Joseph,

    viel Dank für Deine Hilfe.
    Habe Deinen Rat befolgt und es hat sofort geklappt !!!

    Gruß Enni

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2008
    Alter
    19
    Beiträge
    5
    Hallo Dirk,

    auch Dir vielen Dank für Deine Meinung und Deine Tipps.
    Habe mich einwenig an das Thema herangetraut.


    Weiß Du wie man zwei Beispielprogramme in einem gemeinsamen
    Programm zusammen fassen kann ?

    Gruß Enni

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    07.11.2008
    Alter
    22
    Beiträge
    47
    Hi enni

    Ich hab den RP6 auch zu Weihnachten bekommen \/ . Also mal zu deiner Frage :*Weiß Du wie man zwei Beispielprogramme in einem gemeinsamen
    Programm zusammen fassen kann ?*
    kopier einfach den Programmcode von dem anderen Programm den du haben willst und erstelle in dem neuen Programm eine Funktion(void DeineFunktion(void), muss man manchmal auch nicht machen wenn man die Funktion schon aus dem anderem Programm rauskopiert)in der du den Programmcode Teil einfügst. Die Funktion rufst du dann je nachdem ob sie die ganze Zeit ausgeführt werden soll oder nur einmal, entweder in die main-Endllosschleife ein oder einfach irgendwo in main nach der initRobotBase() Funktion.
    Hier mal ein Programm wo der RP6 im Kreis fährt und ein Lauflicht veranstaltet:

    Code:
    #include "RP6RobotBaseLib.h"
    
    void bumpersStateChanged(void) //Falls der Roboter wo dagegenfährt
    {
    	if(bumper_left || bumper_right) 
    	{
    		moveAtSpeed(0,0);  // stop moving!
    		setLEDs(0b010000);
    		startStopwatch1();
    	}
    }
    
    void blink(void)
    {
    	if(getStopwatch1() > 500) // 500ms
    	{
    		statusLEDs.LED2 = !statusLEDs.LED2;  
    		statusLEDs.LED5 = !statusLEDs.LED5;
    		updateStatusLEDs();
    		setStopwatch1(0);
    	}
    }
    
    /*****************************************************************************/
    // Main:
    
    int main(void)
    {
    	initRobotBase();
    	setLEDs(0b111111);
    	mSleep(1500);
    	setLEDs(0b100001);
    
    	
    	BUMPERS_setStateChangedHandler(bumpersStateChanged);//Der Bumper Eventhandler
    
    	
    	powerON(); 	
    	
    	changeDirection(FWD);
    	uint8_t runningLight; // Die Variable Lauflicht
    
        
    	
    	moveAtSpeed(80,10);
    	
    	while(true) 
    	{
    		setLEDs(runningLight); 	// hier startet die Lauflicht Funktion aus RP6Base_LEDs.c
    							
    		runningLight <<= 1; 
    		if(runningLight > 32)
    			runningLight = 1; 	 
    
    		
    		mSleep(100); // und hier endet sie. 
    		
    		blink();// Das ist die Funktion das der Roboter stoppt wenn er wo dagegenfährt
    	
    		
    		
    		task_RP6System();// 
    	}
    	return 0;
    }

    mfg Panzerfan

    P.S:
    Das Programm ist nicht getestet(weil meine Akkus leer sind und sie grad aufladen) und auch nicht wirklich durchdacht also verzeiht mir wenn was nicht stimmt.
    Ich war´s nicht!!


Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •