PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einsteiger: Programmiersprachen Wahl und Frage zu Asuro



Leo98
04.02.2015, 21:59
Hallo,
ich bin völlig neu in der Robotik und habe mich bis jetzt nur ein bisschen eingelesen! Ich wollte mir für den Anfang den Bausatz Asuro zulegen, da dieser angeblich Löterfahrungen bringt und er gut für Anfänger geeignet sei. Aber ich habe gelesen, dass der Asuro leider nur mit C programmiert werden kann und dass der Speicherplatz auf dem board nicht für eine Python Programmierung ausreicht! Also nun zu meiner eigentlichen Frage: Kann man auf dem Asuro ein raspberry pi 2 bauen und diesen dann mit Python programmieren? Ich bin deswegen so auf Python aus, da ich mir bereits ein Lehrbuch dazu gekauft habe und mir die Sprache C (natürlich nach ein wenig einlesen) sehr schwer erscheint! Wenn ich nochmal von neu anfangen würdet welche Sprache würdet ihr lernen und welche Lehrbücher wären empfehlenswert?

robosapiens
04.02.2015, 22:12
Willkommen in Forum,

die Frage ist zunächst was möchtest du genau machen? Möchtest du einen Microcontroller programmieren, beispielsweise die von Atmel dann würde ich dir definitiv Bascom als programmiersprache ans Herz legen, die ist super für den Einstieg, besonders lernst du mit dieser Programmiersprache, einem kleinen Atmel Microcontroller und wenigen elektronischen Bauteilen schnell etwas über die Programmierweise als auch über den Themenbereich Elektrotechnik, der nicht ganz unerheblich für die Robotik ist :)
Ich persönlich habe mich mit Bascom zuerst beschäftigt und programmiere nun mein Raspberry/Banana Pi in Python - genau diese Reihenfolge würde auch ich dir vorschlagen.

P.S. Dieses Thema wurde mehr als ausreichend im Forum diskutiert, einfach mal suchen!

Leo98
04.02.2015, 22:28
Also haben sie 2 Sprachen nacheinander gelernt? Oder unterscheiden sich die zwei Sprachen nicht so sehr voneinander? Oh sorry ich habe schon gesucht aber nichts zu asuro mit raspberry pi gefunden!

PS.: Welche Lehrbücher oder Starterpacks wären denn zu empfehlen?

Danke für die schnelle Antwort

Valen
04.02.2015, 23:36
Mit Gaffertape kan man ja fast alles auf den Asuro kleben. Aber richtig darauf montieren ist schwer. Den Asuro hat kaum Bolzlöcher wo man etwas fixieren kann. Den experimentierplatten oder erweiterungen sind meistens mit nur leichte stechverbindungen auf den PCB gemacht.

Dabei ist Asuro auf 5 volt bassiert, und ist den RPi ein 3.3 volt gerät. Wenn mann sie kommunizieren lassen möchte brauchst du ein Spannungswandler für die datenaustausch.

Peter(TOO)
05.02.2015, 00:48
Hallo,

Also haben sie 2 Sprachen nacheinander gelernt? Oder unterscheiden sich die zwei Sprachen nicht so sehr voneinander?
Nun, das ist der normale Weg!
Ich habe vor 40 Jahren mal mit 6502 Assembler angefangen, Dan folgten Wang-BASIC und danach CBASIC unter CP/M und 8080 Assembler. Dann kam Z80 Assembler. Das nächste war der PET mit einem MS-BASIC. Dann kam der APPLE ][ mit seinem Integer BASIC und einem MS-BASIC. Weiter ging es mit UCSD Pascal auf dem Apple und später Turbo Pascal auf dem IBM-PC. Dazwischen lag noch ein BASIC auf einem National Semiconductor Chip, da gab es Mitte der 80er so eine On-Chip Variante. Mit dem IBM-PC kam dann zuerst 8086 Assembler hinzu, später auch C.
Es folgten 8051 Assembler und PL/M51

FORTH war auch noch irgendwo Mitte der 80er und irgendwo war noch 6800- und 6301-Assembler.
Anfang 90er kamen dann die Hitachi, heute Renesas, H8/300- und H8/500-Assembler hinzu. Da kam dann auch Fuzzi Logic hinzu, auch eine Art Programmiersprache.
Irgendwo bei Windows kamen noch Visual BASIC und C++ hinzu.
Jetzt bin ich bei den PIC- und ARM-Prozessoren dran.

Achja, für einige spezielle Aufgaben habe ich auch eigene einfache Programmiersprachen entworfen und entsprechende Compiler gebaut. z.B. für einen speziellen Kreutzschienenverteiler mit um die 1'000 I/Os. Da wurde aus der Verbindungsliste, mit zusätzlichen möglichen logischen Verknüpfungen, ein Maschinenprogramm compiliert.

Und irgend etwas habe ich sicher noch vergessen.

Mit dem oben angeführten habe ich Projekte durchgezogen, d.h. Programmieren aus dem Kopf ohne jeden Befehl nachschlagen zu müssen.

In andere Programmiersprachen wie Cobol, Fortran, APL usw. habe ich mich eingelesen und kann auch entsprechende Programme einigermassen lesen, habe mit diesen aber nie etwas umgesetzt.

Bei den prozeduralen Sprachen sind so die ersten 2-3 noch etwas mühsam, weitere sind dann relativ einfach zu erlernen, das Konzept ist immer gleich, nur die Syntax und die Schlüsselworte sind unterschiedlich.

C++ und VB sind dann Objekt Orientierte Sprachen. Hier hängt es auch noch vom persönlichen Programmierstil ab, wie leicht man da rein findet. Objekt Orientiert geht auch in Assembler, nur besteht da kein Zwang und man kann immer auch mal schnell eine Routine schreiben, welche da quer schiesst. Ich hatte schon in Assemblerprogrammen z.B. die Funktionen für einen ADC in ein eigenes Modul gepackt und nur ein paar definierte Aufrufe dafür definiert. Irgendwelches direktes Gefummel aus anderen Modulen am ADC gab es dann einfach nicht. Ist auch einfacher zu Pflegen, wenn sich am ADC etwas ändert. Objekt Orientiert funktioniert da nicht anders, nur hat man entsprechende Unterstützung durch die Sprache.

Beim Assembler ist es ähnlich. Bei den Von Neumann Architekturen gibt es eigentlich nur zwei Lager, Intel und Motorola.
Bei Harvard-Architekturen muss man etwas umdenken, wobei schon der 8051 eigentlich eine Harvard-Architektur hat und 8080 und 8086 teilweise auch (im I/O-Bereich).

Neben den prozeduralen Sprachen gibt es noch andere, vor allem aus dem Bereich KI, welche gänzlich andere Ansätze verwenden. Z.B. wird bei LISP nicht zwischen Daten und Programmcode unterschieden. Das bringt dann aber die Stärke beim Lernen der KI-Maschine, das Programm kann verändert werden, wie die Daten in normalen Sprachen.

MfG Peter(TOO)

Leo98
05.02.2015, 09:49
Also meinen sie ich sollte mit Bascom beginnen und dann langsam mit python weiter machen? Könnten sie ein Starterset oder Lehrbuch zu bascom empfehlen?
Oder doch lieber mit assembler?

oberallgeier
05.02.2015, 10:30
Mit Gaffertape kan man ja fast alles auf den Asuro kleben. Aber richtig darauf montieren ist schwer ...Kleiner Zusatz:
Mein asuro (die originale Hardware) hat EIN Bohrloch mittig zwischen Controller und Gatterbaustein IC3 CD4081. Das hält bei mir abwechselnd diese oder jene Zusatzplatine . . . nur für den RasPi wärs etwas knapp bemessen. Trotzdem könnt man den RasPi sicher drauf befestigen.

... Dabei ist Asuro auf 5 volt bassiert, und ist den RPi ein 3.3 volt gerät. Wenn mann sie kommunizieren lassen möchte brauchst du ein Spannungswandler für die datenaustausch.Ähhhh - die Spannungsversorgung des RasPi sind 5 V; aber ich glaube der asuro hätte mit dem knappen Ampere die der Himbeerkuchen braucht schon sein Limit voll erreicht, vermutlich sogar deutlich überzogen. Zum Kommunizieren zwischen RasPi und (m)einem 5-V-Controller - bei meinem Archie - habe ich einfache Spannungsteiler genommen. Klappt problemlos.


... das ist der normale Weg ... vor 40 Jahren mal mit 6502 Assembler angefangen ... UCSD Pascal auf dem Apple ...CP/M ... was für Zeiten! Ich habe heut noch ein Z80er-System im Keller (und ein Z80-ICE!!), mit 2 kleinen Floppylaufwerken und allen dazugehörigen Disketten. Und an UCSD habe ich die schrecklichsten Erinnerungen - immer wieder kamen ausführlichste Hilfen zum Vorschein.
Eine Sprache fehlt mir in Deiner Liste, Peter, LISP. Ich hatte mir in LISP mehrere Offsets zu AutoCAD geschrieben - damals etwa die CAD-Version 3 oder so, später bis ACAD12. Fünfhundert, später sicher weit über tausend Zeilen, die mir für eng definierte CAD-Konstruktionen alle möglichen Werkstattbezeichnungen, Zugaben, Markierungen etc. mit einem Klick (na ja, mit einem CAD-Befehl) erledigten. Viel Programmierarbeit - und sehr viel Zeitersparnis bei der Anwendung. Und seit LISP verstehe ich auch die UPN von meinem HP-Taschenrechner (immer noch der 42S).

Peter(TOO)
05.02.2015, 11:32
Hallo Geier,



Und seit LISP verstehe ich auch die UPN von meinem HP-Taschenrechner (immer noch der 42S).


UPN lernst du auch mit FORTH ;-)

MfG Peter(TOO)

markusj
05.02.2015, 12:29
Mal der Reihe nach:
Auf den ASURO einen RPi zu schnallen macht recht wenig Sinn. Der ASURO hat keine Sensoren die viel Rechenleistung zur Auswertung benötigen, und außerdem keine ausreichende Stromversorgung. RPi und Konsorten machen erst Sinn bei größeren/komplexeren Robotikprojekten.

Was den Einstieg ins Programmieren angeht. Die zwei wichtigsten Konzepte sind die prozedurale Programmierung (Pascal, C, Basic/BASCOM etc.) und objektorientierte Programmierung (Delphi, Java, C++, Python uvm.) Wenn du diese Konzepte verstanden hast und in der Lage bist, Gedanken und Probleme so zu strukturieren dass ein Computer damit klarkommt, ist jede weitere Programmiersprache innerhalb weniger Tage oder Wochen schnell erlernt. Da geht es dann im wesentlichen um Feinheiten in der Syntax und Funktionsweise.

Der schwierigste Schritt ist nicht das erlernen einer Programmiersprache sondern, sondern der Fähigkeit in den Strukturen und Ausdrucksmöglichkeiten zu denken die dir eine Programmiersprache zur Verfügung stellt.

Was Python oder Java dir im Gegensatz zu C/C++ abnimmt ist die Speicherverwaltung. Davon abgesehen ist C jetzt nicht wirklich komplizierter als Python.

mfG
Markus

PS: Üblicherweise duzt man sich in Foren ;)

Leo98
05.02.2015, 13:26
Kann man den asuro mit Bascom programmieren? Weil dann würde ich mich für diese Sprache entscheiden!! Welche Lektüren könntet ihr emfehlen?

robosapiens
05.02.2015, 14:28
Ob man den asuro mit bascom Programmieren kann, weiß ich nicht... Wenn der asuro einen isp Anschluss hat, geht das auf jeden Fall!


Ich kann dir wärmstens folgende Bücher emofehlen:
- Roboter selbst bauen von Uli Sommer
- bascom-Avr von Klaus kühnel

Mit den beiden Büchern hast du ein sehr großes Spektrum abgedeckt. Um die Bücher richtig benutzen zu können musst du dir noch die Vollversion von bascom sowie zwei oder drei kostenpflichtige Bibliotheken kaufen.

oberallgeier
05.02.2015, 16:56
Kann man den asuro mit Bascom programmieren? Weil dann würde ich mich für diese Sprache entscheiden!! ...Zum asuro gehören Bibliotheken. Diese Bibliotheken enthalten verschiedene, grundlegende Funktionen des asuro, die immer wieder kommen. Dies sind z.B. Timer/Takt für die IR-Datenverbindung, die Anbindung der Motoren, die Ansteuerung des UART bzw. die dafür nötige Schnittstelle zur IR-Datenverbindung usf. Soweit ich es kenne sind alle Bibliotheken a) in C und b) für den ATmega8/8Mhz.

Ich bin nicht sicher, dass es solche Bibliotheken in Bascom gibt. Natürlich kann man alles das selbst in Bascom programmieren, was andere in C in die frei verfügbaren Bibliotheken gepackt haben. Dann muss man sich von Anfang an klar sein, dass man erheblich mehr Arbeit, Kenntnisse und Fähigkeiten einbringen muss als wenn man die vorhandenen Bibliotheken nutzt. Für einen Anfänger dürfte das dann ein ziemlich anspruchsvolles Projekt werden. Aber vielleicht meldet sich jemand, der schon Bascomroutinen für den asuro hat.

Leo98
05.02.2015, 17:06
Oke vielen dank für die vielen Antworten!

radbruch
05.02.2015, 21:35
Hallo

Den asuro kann man natürlich auch in Bascom programmieren:

http://www.arexx.com/forum/viewtopic.php?t=468
http://wiesolator.de/index.php?area=Robotik&topic=Asuro

Obwohl Bascom gelegentlich etwas zickig ist kann ich es für Einsteiger durchaus empfehlen.

Gruß

mic

Besserwessi
05.02.2015, 22:20
Im Prinzip könnte man den Asuro wohl mit BASCOM programmieren, aber ggf. wird der Speicher schnell knapp. Der C_Code von GCC kommt in der Regel mit deutlich weniger Platz aus.

Der Raspi ist einfach nicht gut für den Akkubetrieb geeignet - dafür ist der Stromverbrauch zu hoch. Die Kombination mit der ASURO Platine würde dann immer noch bedeuten, dass man den Ausuro so programmieren muss das er auf externe Befehle reagiert.

Wenn man wirklich µC Programmieren will ist C eigentlich die Sprache der Wahl. Man muss die Sprache nicht lieben - es gibt genügend Gründe sie zu hassen - aber so wirklich kommt man nicht drum herum, wenn man sich ernsthaft mit µC befassen will.
Auch BASCOM hat so seine Macken - insbesondere die Einschränkung auf eine Rechenoperation.