kostenloser Webspace werbefrei: lima-city


So viele Sprachen, welche nur, U-Boot Projekt

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    nano-riff

    nano-riff hat kostenlosen Webspace.

    Guten Abend,

    Es gibt so viele Sprachen, als Neueinsteiger bin ich da total überfordert welche ist für mein Anliegen am besten.
    Ich höre immer Microcontroller werden mit Assembler, Basic oder C beschrieben.

    Zu meinem Vorhaben, ich entwickle seit gut 1 1/2 Jahren ein Tauchroboter, Hardware Seitig ist alles soweit da nur jetzt gehts an die Software.

    Was möchte ich machen:

    Ich möchte einen ATMega2560 mittels PC ansteuern der bis zu 8 Motoren, mehrere Sensoren (Temperatur, Wasserdruck...) ein Kompassmodul und einen Lagesensor auswertet das ganze soll über RS232 laufen.

    Kann man das mit Java Programmieren, java interessiert mich schon länger vor allem die Motivation dafür wer größer als bei Assembler oder Basic.

    Lieben Gruß Timon
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Prinzipiell wäre Java eine Option, aber ich würde dir trotzdem zu C raten, da du hier auf lange Sicht gesehen warscheinlich glücklicher mit wirst. C# ist in der Handhabung etwas leichter, besonders für Neulinge, aber da bin ich mir nicht sicher, ob du damit Erfolg haben wirst, ich wollts nur mal erwähnen.

    Es wäre allerdings praktisch, wenn du etwas näher beschreiben würdest, was der Roboter später genau tun soll. Willst du nur eine Art Fernsteuerung programmieren ? Oder gleich eine KI ?

    Liebe Grüße
    - VampireSilence
  4. Autor dieses Themas

    nano-riff

    nano-riff hat kostenlosen Webspace.

    Guten Morgen,

    KI möchte ich nicht es soll über den PC Ferngesteuert werden, soll so aussehen das ich auf meinem PC ein Programm habe das die Daten über Temperatur, Schräglage.... anzeigt und ich das ROV über Tastenbefehle evt. Joystick steuern kann.

    Hier mal den link zu meiner Seite, ist leider nicht mehr so aktuell da ich eine neue am aufbauen bin.

    www.rovs.de.vu
  5. Also auf der Microcontroller-Seite kannst du Java wohl vergessen, wenn dann nimmst du das für die Steuerungssoftware auf dem PC. Auf dem Controller kommt eigentlich nur C in Frage.
  6. Eigentlich nur C ist bei den Atmel AVRs nicht richtig.

    PC-Seitig ist, wie ja bereits vorher geschrieben, völlig egal, welche Sprache zu verwendest. Ich arbeite auch gerne mit PC/Microcontroller und setze dann am PC .Net ein, damit ich problemlosen Zugriff auf den seriellen Port habe, über den ich mit dem Microcontroller kommuniziere.

    Den Microcontroller hingegen kannst du natürlich mit dem freien und kostenlosen Crosscompiler gcc für AVR programmieren, dafür gibts massig Beispiele und Beispielcodes.
    Alternativ gibts aber auch andere Sprachen, die dann etwas Geld kosten. (Die IDEs & Compiler)
    Hier empfielt sich BascomAVR, ein Basic Compiler für die AtMegas mit sehr vielen Funktionen und tollen Librarys, kostet aber eben um die 80$.
    Dann gibt es noch MicroC, MicroBasic und MicroPascal von einer Russischen Entwicklerfirma, jedoch ist deren IDE und Compiler wohl nie über den Beta status hinausgekommen und arbeitet so alles andere als zuverlässig...

    Und wenn wir von Atmel AVRs sprechen, dann gibt es NATÜRLICH auch noch das Projekt Arduino, basiert aber auf dem oben genannten C und stellt für bestimmte Boards nur fertige Libs und Funktionen zur verfügung ;-)
  7. Die Frage ist wie hart deine Echtzeitbedingungen sind (bzw. ob überhaupt Notwendiglkeit besteht) , eine Kommunikation über irgendwelche Standard PC-Schnitstellen ist ja immer recht langsam und bedarf einer guten Flusskontrolle und Fehlertoleranz, du solltest also schon auf dem Leitrechner etwas haben womit du diese Dinge Hardware nah und nahezu echtzeitfest programmieren kannst, Java wird dafür vermutlich zu langsam sein.

    C brauchst du auf dem Device ohnehin, also könntest du die zeitkritischen Sachen ja auf dem Leitrechner ja in C implementieren und dann die Oberfläche usw. in einer beliebigen Scriptsprache mit C-Schnittstelle umsetzen.

    Es hängt am Ende auch von deiner Art zu arbeiten ab.
  8. Das mit dem "Zeitkritisch" würde ich mal außen vor lassen. Wenn man das wirklich mal gemacht hat, dann sieht man schnell, wozu sich 38Kbaud so eignen und wieviele Daten man damit doch ruck zuck durch die Gegend pusten kann.

    Ebenfalls ist die Behauptung, Bytecodeinterpretersprachen seien dafür zu "langsam" auf heutigen Computern hinfällig. Wie sprechen über Geräte mit 500MHZ und aufwärts, da spielen solche Dinge angesichts von Multithreading keine Rolle mehr.

    Zu guter letzt hängt die Fehlertoleranz mit von der gewählten Frequenz deines Microcontrollers ab, ich vermute mal, du willst 8 oder 16 MHZ einsetzen, dann sind 38Kbaud kein Problem. Wenn man einigermaßen kleine Datenpakete bastelt (bei deinem Anwendungsbeispiel ist das ja kein Problem) stellen die 0,01% Fehler dann auch kein großes Problem mehr da.

    Um gescheites Multithreading wirst du in deiner Steuerungssoftware nicht kommen, daher rate ich weniger zu C sondern eher zu einer modernen Programmiersprache ;-)
  9. Autor dieses Themas

    nano-riff

    nano-riff hat kostenlosen Webspace.

    Danke für die Zahlreichen Beiträge

    Zum Einsatz kommt dieser Controller
    http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=64&products_id=162

    schnell sollte die Übertragung schon sein da wir von mehreren hundert Metern Kabel reden.

    erasmuz schrieb:
    Um gescheites Multithreading wirst du in deiner Steuerungssoftware nicht kommen, daher rate ich weniger zu C sondern eher zu einer modernen Programmiersprache ;-)


    Was meinst du mit modernen Programmiersprachen, da ich mich noch so gut wie nicht mit den einzelnen Sprachen befasst habe und nur mal kurz die Beschreibung von Java gelesen hab mit Industrieanwendung, objektorientierte Programmiersprache und anscheinet auch leichter als C++ sein.
  10. Ich bin nicht sicher ob eine hohe Datenübertragungsrate über die vermutlich lange Leitung erreichbar ist, in rauher Umgebung und auf einer langen Leitung kann es mit RS232 zuweilen schonmal länger dauern, aber wie du sagst das merkt er wenn er es versucht.

    Am Ende kann man auch viel über die Intelligenz der gewählten Datenstrukturen und der tatsächlich zu versendenenden Daten machen, wer natürlich seine 8 Schrittmotoren seriell mit Einzelbytes ansteuert und das für jeden Schritt und Motor einzeln vor hat der wird Probleme bekommen, ganz egal wie schnell die Verbindung ist.

    Was mir aber gerade neu war ist das C eine Threadstruktur behindern würde ?
  11. fatfox schrieb:
    Was mir aber gerade neu war ist das C eine Threadstruktur behindern würde ?


    Das hab ich so nicht gesagt. Es geht um das gescheite Programmdesign. Wieso das Rad zig mal neu erfinden müssen, wenn es bereits Sprachen gibt, die deutlich besser dafür ausgelegt sind?
    C ist an sich veraltet und wurde immer weiter aufgebohrt, eine Weiterentwicklung kennen wir heute als C++ und wie nutzen wir C++ wirklich sinnvoll? Mit einem Framework, wie beispielsweise QT, welches dann haufenweise praktische Dinge mitbringt, die wir für unsere Arbeit brauchen.
    Wie ein einfacheres Handling von Threads, das delegaten der Daten usw.
    Wenn man das mal gemacht hat, dann kennt man die Probleme und man muss ja nicht aus allem ne Lebensaufgabe machen, manchmal sollte man sich auch einfach etwas Zeit sparen. Java halte ich hier aber auch nicht für optimal, weniger wegen der vorgeworfenen Langsamkeit, sonder eher wegen der Hardware-Abstraktion, die dir eventuell Probleme bei einer flotten Nutzung des Seriellen Ports bringen wird...
    Und der Serielle Port am PC ist nun mal DER Port, den man nutzt. Ob das das nun per USB-Seriell Umsetzer tut oder gleich ein eigenes USB-Device auf Basis eines weiteren Atmegas entwickelt: Man wird ewig bei diesem System der Datenübertragung fest hängen.

    Gleiches gilt für die OnBoard Firmware, wenn ich weiß, welche Aufgaben der Chip zu bewältigen hat, wie die in etwa aussehen, dann nehme ich die Programmiersprache, mit der ich das ganze am schnellsten und einfachsten realisieren und warten kann...

    Die Schrittmotoren vom PC für jeden Schritt einzeln anzusteuern ist Unsinn und wird sicher auch nicht so gemacht werden, besser vom PC den Anstellwinkel mitteilen lassen, sowie die Drehzahlen usw. usf.
    Das ist jetzt nicht das erste Uboot-Projekt, welches mit Atmegas realisiert werden soll ;-)
  12. Autor dieses Themas

    nano-riff

    nano-riff hat kostenlosen Webspace.

    Wegen der Übertragung das RS232 Signal wird auf RS485 umgewandelt, aber das brauch uns ja jetzt noch nicht kümmern.

    Genügend infos hab ich schon gefunden auch eine Open Source Software, aber da ich ja schon ein paar Jahren dran arbeite und die ersten Tausender geflossen sind würde ich das selbst machen.

    Zu den Aufgabe:

    Video:

    Webcam-Livebild
    Screenshot

    Sensoren:

    Temperaturen: Akkus, Wasser, Controller
    Druck: Aussendruckanzeige


    Aktoren:

    Beleuchtung links, Beleuchtung rechts, Positionslicht

    Navigation:

    Kompass: Himmelsrichtung(Zeiger), Gradanzeige
    Lageerkennung: Künstlicher Horizont

    Energie:

    Akkuspannungsanzeige (Balken)


    Da Java ungeeignet ist, ist mir klar viele Programmieren in Basic, mein Cousin lern in der Schule Assembler.
    Nur was nehm ich.

    Anderseits könnt ich auch die Open Source Software nehmen und dann in VisualBasic mir die Oberfläche neu gestalten.
    Hmm wie ist das bei OSX, VisualBasic ist doch für Windows
  13. nano-riff schrieb:
    Zu den Aufgabe:

    Video:

    Webcam-Livebild
    Screenshot


    Hier wird problematisch mit ner seriellen Übertragung. Ich würde das Videosignal völlig entkoppelt als reines Komponentenvideo übertragen und erst direkt am PC wieder mittels TV-Karte digitalisieren...


    Sensoren:
    Temperaturen: Akkus, Wasser, Controller
    Druck: Aussendruckanzeige

    Aktoren:
    Beleuchtung links, Beleuchtung rechts, Positionslicht

    Navigation:
    Kompass: Himmelsrichtung(Zeiger), Gradanzeige
    Lageerkennung: Künstlicher Horizont

    Energie:
    Akkuspannungsanzeige (Balken)


    Die Frage ist hier eigentlich nur noch, wie oft und direkt die Daten aktualisiert werden sollen und welche Zeit bis dein Befehl "vom Klick" aus zum Microcontroller geht noch akzeptabel ist. Wenn dir hier Millisekunden reichen, dann ist das Seriell machbar.
    Die Frage ist eben nur, wie oft die Daten aktualisiert werden sollen. Am einfachsten ist es natürlich, all die Daten in ein Paket zu packen und dieses dann 10mal in der Sekunde an den PC zu senden...


    Da Java ungeeignet ist, ist mir klar viele Programmieren in Basic, mein Cousin lern in der Schule Assembler.
    Nur was nehm ich.


    OpenSource Software direkt für den Einsatz wirst du vermutlich nicht finden, dass du später das ein- oder andere Teilfragment so oder so ähnlich verwenden wirst ist vermutlich klar.


    Anderseits könnt ich auch die Open Source Software nehmen und dann in VisualBasic mir die Oberfläche neu gestalten.
    Hmm wie ist das bei OSX, VisualBasic ist doch für Windows


    OSX eignet sich nicht nicht wirklich für die Programmierung und Steuerung von Microcontrollern oder generell für Anwendungsentwicklung. OSX sieht schön aus, das muss reichen ;-)


    Beitrag zuletzt geändert: 25.3.2010 0:23:13 von erasmuz
  14. Autor dieses Themas

    nano-riff

    nano-riff hat kostenlosen Webspace.



    OpenSource Software direkt für den Einsatz wirst du vermutlich nicht finden, dass du später das ein- oder andere Teilfragment so oder so ähnlich verwenden wirst ist vermutlich klar.



    Da diese Software für den Controller und die Aufgaben entwickelt wurde klappt das schon.
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!