PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Control 1.4 mit JAVA?



adso
15.11.2008, 16:38
Hallo ersteinmal

Ich las im Forum schon einigemale und habe einige Ideen gesammelt. Zu meiner Vergangenheit: Ich machte erste Erfahrungen mit dem Asuro, leider wurden am Asuro sehr Kosten gespart. Somit sind die Sensoren sehr schlecht und die Mechanik sehr einfach gehalten. Jetzt habe ich ein Studium zum Ingenieur eingeschlagen und habe bereits einige Erfahrungen mit Industrierobotern (leider nur als Übung) gemacht. In der Schule lernen wir zudem JAVA zu programmieren.

Jetzt habe ich mir ein RN-Control 1.4 mit einigem Zubehör, darunter ein ISP-Programmierkabel (Parallelport) bestellt und werde ein Roboter aufbauen. Er sollte einige Sensoren haben, modular aufgebaut sein und verschiedene Aufgaben erledigen können (genau das ist ja der Vorteil von Robotern). Vorstellen würde ich mir da Linienfolgung, Zimmer durchsuchen oder ähnliches.

Doch nun zum Start: Literatur habe ich mir schon gekauft (Roboter selbst bauen, …) und möchte erstmals einige einfache Experimente bauen (LED ansteuern, …). Die einzigen Programmiersprachen die ich gefunden habe dazu sind Basic und C++. Da ich schon einige Grundkenntnisse mit C habe, würde ich es sicherlich beforzugen. Leider habe ich jedoch noch nichts von JAVA gelesen. Hat schon jemand Erfahrung mit JAVA (auch Eclipse) oder muss ich auf C zurückgreifen?

Gruss
Adso

askazo
15.11.2008, 17:01
Hier (http://www.harbaum.org/till/nanovm/index.shtml") gibt es eine Java VM, die auf einem ATMega8 läuft. Java auf AVR geht also.
Ob es allerdings sinnvoll ist, ist ne andere Sache...

Die Standardsprache für Mikrocontroller-Programmierung ist C. Für Deine Ingenieurkarriere wäre es wohl m.E. sinnvoller, wenn Du Dich mit C beschäftigen würdest. Vor allem, wenn Du Dich später im Berufsleben auch mit Mikrocontrollern beschäftigen möchtest.
Außerdem findest Du für C wesentlich mehr Support und frei verwendbaren Code, z.B. für SPI-Schnittstelle o.ä.

Gruß,
askazo

adso
20.11.2008, 20:39
Wow, danke für die schnelle Antwort.

Nun eine eigentlich doof klingende Frage: Wenn ich Java kenne, was für Unterschiede gibt es in einem Programm zu C++. Nach Internet ist die Syntax fast gleich und Java ist bekanntlich von C++ abgeleitet.
Hat jemand ein beispielprogramm in Java und gleichzeitig in Java?

Somit könnte ich schnell auch C++ lernen und somit wäre es für mich kein Problem.

Gruss
Euer Adso

askazo
21.11.2008, 09:48
Ich kann kein Java, von daher kann ich Dir hier keine 100%ige Auskunft geben. Ich habe mir aber gerade mal ein paar Codeschnippsel von Java angeschaut - das sieht C++ schon sehr, sehr ähnlich. Soweit ich das gelesen habe, sind bei Java nur solche Sachen wie dynamische Speicherverwaltung oder überladen von Operatoren weggelassen. Solche Sachen braucht man bei µC-Programmierung sowieso sehr selten. Der "schlimmste" Unterschied ist wohl, dass es bei Java keine Zeiger gibt, die bei C/C++ relativ häufig eingesetzt werden. Man kann auch ohne auskommen, gelegentlich sind sie aber sehr hilfreich. Aber die Zeigerarithmetik kann man sich eigentlich auch recht leicht aneignen.
Einen Controller in C++ zzu programmieren, dürfte nach kurzer Einarbeitung für Dich eigentlich kein Problem sein. Der AVR-gcc-Compiler unterstütz C++ auch fast komplett, bis auf die new- und delete-Operatoren.

Wenn Du Dich vom Objektorientierten loslösen kannst, kannst Du auch reines C programmieren. Das ist wie gesagt der Standard für Mikrocontroller und dazu wirst Du auch hier die meiste Unterstützung bekommen.

Gruß,
askazo

thewulf00
21.11.2008, 12:40
Der größte Unterschied ist das Kompilat.
C++ ist eine Compilersprache, d.h. der geschriebene Code wird compiliert und das Produkt der Compilierung wird dann ohne weiteres auf dem µC oder PC ausgeführt.
Java ist eine Mischform aus Compiler- und Interpretersprache, d.h. der geschriebene Java-Code wird zu einem Zwischencode (sog. Bytecode) compiliert, der dann wiederum auf dem Zielgerät interpretiert (d.h. von einem weiteren Programm ausgeführt) wird. Der Vorteil davon ist, dass ein einmal compiliertes Java-Programm auf jeder Architektur und jedem Betriebssystem läuft (Windows, Linux, Arm, Mac), (sofern es dort eine Java-VM gibt).
Das merkt man immer daran, dass man ein Java-Programm nur ausführen kann, wenn man eine Java-VM auf dem Rechner installiert hat, aber ein C++-Programm funktioniert ohne jede weitere Software.

Das wäre für den µC dann auch der Fall. D.h. Du schreibst ein Java-Programm und überträgst es in den Speicher, wo bereits die VM liegt, die das Programm dann lädt und interpretiert. Das bedeutet aber automatisch den Verlust einiger der Vorteile, die einen µC von einem PC unterscheiden: Zeit- und hardwarenahe Programmierung.

adso
22.11.2008, 16:15
OK, in dem Fall:
Java für Programme auf den Computern (oder Handys)
C++ für Microcontroller

Dabei muss ich nur die "wenigen" Unterschiede beachten. C++ werde ich wahrscheinlich auch schnell gelernt haben. Habe mir bereits bei RN Wissen das C Tutorial angeschaut. Es gibt wirklich nicht viele Unterschiede und mit einem Programm mit automatischer Syntax-Überprüfung sollte das schon gehen.

Gruss
Euer Adso