PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen eingeben?



robob
30.12.2007, 19:44
Guten Abend,
ich habe noch eine Frage :-s : Wie kann ich während dem Laufenden Programm übers Terminal des rp6 Loader eine Zahl oder ein Wort eingeben, die der Roboter dann benützt, z.b. für die Drehzahl!

Danke für eure Hilfe!

robob

robob
30.12.2007, 20:05
warum antwortet niemand? versteht ihr die Frage nicht?

tfv
30.12.2007, 20:31
Ich bin noch neu hier, vielleicht hab ich auch Deine Frage nicht richtig verstanden.

Mir scheint aber, dass die Funktionen, die Du suchst, in RP6uart.c enthalten und dokumentiert sind. Auch verwendet nach meiner Erinnerung das Selbsttestprogramm genau diese Funktionalität für die Menüauswahl, sodass Du auch dort im Sourcecode an der entsprechenden Stelle nachsehen könntest.

Vielleicht hilfts Dir ja, ansonsten musst Du auf einen Profi warten. ;-)

tfv
30.12.2007, 20:37
Noch was gefunden: In diesem Beispielprogramm findet sich eigentlich alles, was Du suchst:

RP6BASE_EXAMPLES\Example_02_UART_02\RP6Base_Serial Interface_02.c

carlitoco
31.12.2007, 08:57
a. Welche motoren meinst du ?
-dem antrieb gibst du die drehzahl indem du dir die beispiele anschaust und naschaust welche kommandos dafür verandwortlich sind.
b. externen kannst du keine drehzal zuordnen du kannst ev ihnen mehr oder weniger strom zukommen lassen, wodurch sich die drehzal ändert wenn du langsame umdrehungne möchtest brauchst du ein getriebe, wenn du schritte möchtest, einen schrittmotor.

MfG calritoco ps -ich finde deine frage schwer zu benatworten, da du wenige anhaltspunkte lieferst - das ist dann etwa so wie

" Wie finde ich in meiner Zeitung den und den artikel"

!Das soll nich böse gemeint sein! :)

robob
31.12.2007, 11:07
das mit dem Motor war nur ein Beispiel; ich will halt so ein Programm schreiben:

Rp6 fragt: Wie heißt du
(namen eingeben)
Rp6: Hallo (name)

so in etwa


In dem Beispiel von tfv kommt genau dass vor! aber ich versteh es noch nicht welchen befehl ich dafür brauche :o

carlitoco
31.12.2007, 11:32
im prinzip brauchst du nur eine ausgabe "Hello World" ist klar...



#include "RP6RobotBaseLib.h"

initRobotBase();
while(true)
{
writeString_P("Hallo robob!\n Ich bin dein RP6\n");
mSleep(2000);
setLED(0b111111);
mSleep(1000);
}
return 0;
mach doch mal ein Tutorial für C/C++ ich bin auch anfänger ... diese gibt dir einen kleinen Einblick in die Programmierung, leren tut mann das dann so mit der zeit ... ich muss auch noch ständig nachschauen .was die undjenes bedeutet und wie eich etwas zu machen habe

- mühsahm ernärt sich das autodidaktische eichhörnchen :)

Dirk
31.12.2007, 11:44
Hallo robob,


Wie kann ich während dem Laufenden Programm übers Terminal des rp6 Loader eine Zahl oder ein Wort eingeben, die der Roboter dann benützt,...

Sieh dir 'mal das Selbsttest-Programm (RP6Base_SELFTEST.c) an!
Da sind gleich am Anfang Funktionen, die eine Benutzereingabe (z.B. das "x") einlesen. Die Eingabe kann man dann im Programm weiter verwenden.

Gruß Dirk

robob
31.12.2007, 11:46
Ah, ok!!! :-k!
Aber robby soll mich vorher fragen wie ich heiße, dann geb ich meinen Namen ins Terminal ein und dann soll er meinen Namen + Hallo antworten!
Geht das nicht?? :-s

Dirk
31.12.2007, 11:49
... doch klar, das geht!

Die Frage gibst du mit writeString_P("Wie heisst du?"); aus!

Gruß Dirk

robob
31.12.2007, 11:58
Ja und wenn er mich gefragt hat dann geb ich z.B: Robby ein und er sagt dann Hallo Robby!

robob
31.12.2007, 12:10
Wie kann ich es so machen dass er, rp6, darauf reagiert dass ich etwas eingeben hab. Z.B; wenn ich auf x eingebe fährt er los und wenn ich s eingebe bleibt er stehen?
-ich weiß ich kann manchmal nervig sein mit meinen fragen, aber ich hab es immer noch nich verstanden

roboterheld
31.12.2007, 12:26
gehe hier ins forum :
http://www.mikrocontroller.net/forum/mikrocontroller-elektronik


da findest du in über 6000 artikeln mit winavr-c die lösung, auch für dein eingabeproblem.

Dirk
31.12.2007, 12:35
Hallo robob,

für den RP6 gibt es da schon eine Reihe von Funktionen!
Probier sie einfach aus:

Aus der RP6uart.c ->
char readChar(void)
uint8_t readChars(char *buf, uint8_t numberOfChars)
uint8_t getBufferLength(void)
void clearReceptionBuffer(void)

Aus der Selftest-Demo (RP6Base_SELFTEST.c) ->
uint8_t getInputLine(void)
void enterString(void)

Wenn du eine 1. Version fertig hast, stell sie hier wieder ein!

Gruß Dirk

Stratege993
31.12.2007, 12:47
Gehe mal auf http://www.arexx.com/rp6/html/de/docs.htm und lade die aktuelle Anleitung runter. Wenn du dann unter 4.6.2.2 schaust auf Seite 81, müsste dir die Antwort vor der Nase liegen.
stratege993

robob
31.12.2007, 14:45
danke an alle! jetzt habe ich es endlich kapiert! :P

robob
31.12.2007, 14:49
Wenn du eine 1. Version fertig hast, stell sie hier wieder ein!

Gruß Dirk

Was meinst du mit 1. Version?

Dirk
31.12.2007, 15:24
Was meinst du mit 1. Version?

Naja, ich meinte:

Falls du Lust hast, dein fertiges Programm (das nach dem Namen fragt und dann "Hallo Name" sagt) hier 'mal zu zeigen, dann könntest du es hier einstellen.
Manchmal findet noch jemand eine Verbesserung oder einen kleineren Fehler.

Aber, wie gesagt,- nur wenn es für dich ok ist.

Gruß Dirk

robob
31.12.2007, 16:01
ja ok ich versuchs!

robob
12.01.2008, 21:04
ich weiß nicht was ich falsch mach!
das ist mein code:

#include "RP6RobotBaseLib.h"
void name(void) {

writeString(readChars);

}

int main(void)
{
initRobotBase();
uint8_t x;

writeString_P("Los!\n");
mSleep(10);
while(true)
{
mSleep(7000);

uint8_t readChars(char *buf, uint8_t numberOfChars);

if (readChars=="") {
writeString_P("Eingeben\n");

}
else {
writeString_P("hallo\n");
name();
}
}

return 0;
}


wenn ich dann was eingebe kommt das:

€Z '□«Í*´çQ□F— §4□‹pEÇd-À¿‰AŒQ@Ÿ+$BÐTc□‚!‡P×V…!rp}"R¿□Fk ãce□3

KayH
12.01.2008, 22:49
Schau Dir doch bitte nochmal eingehend das example_UART_02 an. Dort ist ALLES was Du fuer diese Aufgabe brauchst aufgezeigt.
Worauf zu achten ist:
- jede Variable die Du benoetigst sollte vor der Verwendung daklariert werden
- der spaeter auszugebende Name wird Zeichen fuer Zeichen eingelesen und in einem Char-Array gespeichert
- dieses Array wird an die Ausgabefunktion uebergeben und dann ausgegeben

Zu Deiner Frage: es wird nur Datenmuell ausgegeben, weil Du Deine Eingabe (1Zeichen) nirgendwo speicherst und etwas uninitialisiertes ausgibst.

HTH
Kay

PS: ich koennte Dir das Programm schreiben, aber durch den Lerneffekt hast Du langfristig mehr davon!

robob
13.01.2008, 07:19
doch bitte schreib mir mal so ein programm! :?

Dirk
13.01.2008, 11:25
Hallo robob,

sieh dir das Programm Example_Hallo_01 an! Es ist nur eine einfachere Version des RP6 Demo-Programms Example_02_UART_02.

Du kannst nur daraus lernen, wenn du es dir komplett vornimmst bis du alles verstanden hast. Danach kannst du Änderungen machen und das Programm weiter ausbauen.

Gruß Dirk

robob
16.01.2008, 15:46
ja daran sieht man das! aber das ist schon ein langer code! geht das nicht auch kürzer?

robob
17.01.2008, 17:55
Muss das wirklich so lang sein??????