Neuling

Hallo,
ich bin ziemlicher Neuling in Sachen Arduino und hätte ein par Fragen:
Direkt zum Anfang habe ich mir ein zweirädriges Fahrzeug gekauft. Dieses funktioniert super, aber alle Verbindungen der verschiedenen Komponenten (wie Motor shield, Batteriehalterung, ...) auf dem Gefährt sind nicht so toll gelungen (Angeklebt).
Mir war nicht so wirklich klar, wie viel schwieriger es ist diese Teile zusammenzubauen als z.B. Lego. Gibt es eine Grundausstattung/Set mit Winkelstücken, Abstandshaltern, Schrauben/Muttern, Platten, Motoren .... mit dem mir das erstellen einer neuen Maschine leichter fällt? Mit denen man z.B. besser ein Grundgerüst erstellen kann. (und ja, ich habe keine Möglichkeit 3D zu drucken)

Welche Tutorials zum Programmieren findet ihr am Hilfreichsten zum Einstieg? Meine Programme waren immer sehr Linear und ich würde gerne mit besser reagierenden Systemen arbeiten.

Vielen Dank um Voraus!
Grüße,
Timo

Nicht jeder Anfänger brauch gleich ein 3D Drucker.
Was gefällt dir an dem Arduino System nicht, reagiert es zu langsam?

  1. Ich bin gerade aus dem Abi und Informatik liegt leider 3 Jahre zurück. Und auch damals haben wir nicht sehr viel mit Java gemacht. Ich müsste daher sicherlich einiges an Grundprinzipien wiederholen/lernen. Bis jetzt waren meine Programme eine Zusammensetzung aus stupide gelernten Phrasen, Beispielsegmenten und Quellen aus dem Internet.
  2. Ja, das beschreibt es ganz gut.
    Ist es möglich multithread zu arbeiten? (Mit interrupt habe ich schon was probiert)

Arduino wird mit C/C++ programmiert nicht mit Java.

Nein kein Multitread. Arduino UNO hat einen 8Bit Controller (CPU, 2kByte RAM 32k Flash für das Programm und ein wenig Interfaceperipherie in einem IC) wie kannst Du dies mit einem PC (32 oder 63 Bite CPU mit bis 4GHz und 2 bis 8 GByte RAM ecc...) und einem Betriebssystem vergleichen?

Um einfache bis mittelschwere Sachen zu machen braucht es kein Betriebssystem oder Giga große Speicher oder Parameter.
Ein LED zum blinken zu lassen kannst Du mit einem Arduino in 5 Minuten programmieren. Versuch das mal mit einem PC.

Zu Deinem Fahrzeug: Kommt darauf an wieviel Du ausgeben willst. Je mehr desto besser/schöner werden die Bausätze. zB MAKEBLOCK

Grüße Uwe

hi,

willkommen im forum! grüß Dich aus wien.

HÖR AUF !!!

aber nicht mit arduino, sondern vorerst mit dem fahrzeug, das ja wahrscheinlich auch nicht ganz so billig war.

lies im forum mit, bestelle Dir ganz entspannt ein paar teile um billiges geld bei ebay in china (LEDs, widerstandsset, schieberegister 74HC595, treiber ULN2803, vielleicht ein meterchen WS2812, oder ein einsteigerset mit allem möglichen um 20 euro), warte 4 wochen bis alles da ist und geh' mit Deinem neuen wissen aus dem forum das ganze langsam an.

wenn Du jetzt das fahrzeug zusammensetzt. hast Du wahrscheinlich bald eine leiche zuhause herumliegen. schade drum. wenn Du wartest, erfährst Du nebenbei, wie Du es besser machst, als in der (schlechten, falls vorhandenen) beschreibung. vor allem, wie Du die einzelnen komponenten auch einzeln testest und erst dann zusammensetzt. dadurch weißt Du dann auch, wo es hakt...

viel spaß, und gruß stefan

Ich habe schon erwartet, dass so eine Antwort kommt :slight_smile: Im letzten Jahr habe ich gemacht, was du gesagt hast. Von einem Kleinanzeigler habe ich alles aufgekauft (Sensorkit, Lötzeug und den Arduino selber). Nebenbei konnte ich immer damit "spielen" wobei in der 12. Klasse nicht immer Zeit dafür war. Ich habe einige Sensoren ausgelesen und Motoren sowie ein LCD betrieben.
Klar muss ich zugeben, dass das noch nicht reicht. Das Fahrzeug habe ich nur gekauft weil es gerade so günstig war. Mit Motoren und Alukarosserie hat es lediglich 16€ gekostet. Die von Uwe genannten Kits sind da preislich ganz wo anders :slight_smile:

Nach welcher "Anleitung" würdet ihr jetzt vorgehen um mit den Sensoren und anderen Bestandteilen besser umzugehen und um die Grundkenntnisse sicherzustellen?

Grundkenntnisse sind schon vorhanden, die muss man nicht mehr sicherstellen sondern anwenden.

Ich kann auch nicht programmieren aber ein Haus mit Bussystem zu versorgen und andere kleine Projekte hab ich hinbekommen.
Es ist alles geschnipsel ausm Internet, den man für seine Projekte anpasst.

Schreib konkret auf was du haben willst, womit und was du schon hast, dann kann man genaueres sagen.

Es nützt ja wohl nichts wenn ich dir Beispiele für ein Bussystem gebe aber du das Gefährt garnicht mit Bussystem ausstatten willst.

Wenn der Arduino eh zu langsam ist, solltest du dieses Forum "meiden" und sich mit dem Raspberry beschäftigen, der hat nämlich etwas mehr Geschwindigkeit drauf.

Ich habe jetzt mal mit c++ auf dieser Seite angefangen: http://www.sololearn.com/
Wieviel c++ und wieviel c brauche ich? Was ist wichtiger?
danach wende ich mich dann wieder dem arduino zu.
Für die Konstruktionen habe ich jetzt eine Acrylglasplatte und eine Heißluftpistole gekauft.
Vielen Dank für die bisherige Hilfe.

Wieviel c++ und wieviel c brauche ich? Was ist wichtiger?

c und c++ ist kein Gegensatz, c ist eher die Grundlage für c++.

Bei deinem link kommt man wohl nur nach sign-in über das Inhaltsverzeichnis hinaus. Das hab ich mir erspart. Ich schätze mal, das du alles mit

   cout << "Hello World" << endl;

beim Arduino durch

   Serial.println("Hello World");

ersetzen musst, und für Arduino-Spezifisches besser die Reference und Beispiele durchsiehst.
Ansonsten ist so ein Kurs sicher nicht verkehrt und sinnvoll.

Was du bei C++ erst mal ignorieren kannst sind die Klassen. Du musst natürlich wissen was eine Klasse und was ein Objekt ist, und du solltest wissen wie man Objekte erstellt. Vor allem statisch und nicht dynamisch (mit new/delete) wie es auf dem PC oft gemacht wird. Darüber stolpern hier Leute immer wieder. Aber du musst erst mal nicht wissen wie man eine Klasse intern programmiert. Da gibt es auch auf dem Arduino schnell Sachen wo ganz einfache Klassen sehr schön sind, aber es ist erst mal nicht nötig.

Was erst mal sehr, sehr wichtig ist sind Funktionen, Arrays und auch einfache structs. Da gibt es zwischen C und C++ zum Teil ein paar ganz subtile Unterschiede, aber das ist egal. Diese drei Dinge sind die Grundlage von vielen Arduino Programmen. Vor allem structs werden dabei fälschlicherweise von vielen Anfängern ignoriert, was dann in schlecht strukturierten und lesbaren Programmen resultiert.
Eine einfache Struktur ist es zusammengehörige Variablen in ein struct zu packen (z.B. eine oder mehrere Zeiten und ein Pin) und dann ein Array aus structs zu machen. Und dann mit einer for-Schleife über die structs zu iterieren.

Ein C Teil den man auf dem Arduino öfters braucht ist die Behandlung von Strings. Da gibt es zwar die Arduino String Klasse für vieles, aber klassische C String Funktionen bieten in vielen Fällen mehr Sachen an. Das ist anfangs sehr gewöhnungsbedürftig, aber sehr mächtig.
Aber wenn du z.B. erst mal keine Kommunikation zwischen Arduino und PC machst kannst du das auch erst mal ignorieren.

Was du bei C++ erst mal ignorieren kannst sind die Klassen. Du musst natürlich wissen was eine Klasse und was ein Objekt ist, und du solltest wissen wie man Objekte erstellt. Vor allem statisch ...

Wenn du dir libraries anschaust, siehst du oft, dass sie als class definiert sind, aber dann nur eine einzige Instanz davon haben. (Mehr als 1 LCD Display schafft ein Arduino meist nicht, mehr als eine Echtzeit-Uhr macht keinen Sinn) Von daher kann man auch sagen: Das einzige was du von C++ über den C - Standard hinaus lernen solltest, sind Klassen. :wink:
Aber wenn du vor Jahren mal Java gemacht hast, ist das ja eigentlich nichts Neues. Ausser dass bei C++ auch viel ohne Klassen geht.

Ach ja, noch ein Unterschied zu Standard C Kursen:
Die Arduino IDE erzeugt dir heimlich -- etwas vereinfacht -- ein

int main() {setup(); while (1) loop(); }

das mit Reset gestartet wird und nie aufhört. Du implementierst dann nur die zwei Funktionen
void setup() {} und void loop() {}
Und du brauchst dich um Funktionsdeklarationen und die Reihenfolge eigener Funktionen nicht zu kümmern.

Ich meinte man sollte wissen wie man extern mit Klassen umgeht, aber erst mal nicht unbedingt wie sie intern funktionieren. Man kommt erst mal darum herum selbst Klassen zu schreiben.

Und mehrere 16x2 oder 20x4 LCDs sind kein Problem. TFTs ist was anderes.

Und du brauchst dich um Funktionsdeklarationen und die Reihenfolge eigener Funktionen nicht zu kümmern.

In den aller meisten Fällen. Inzwischen ist der Prototyp-Parser verbessert worden, aber es gibt wahrscheinlich Sachen die er immer noch nicht schafft. Ich hatte was gelesen dass er inzwischen mit Default-Parameter umgehen kann, aber in 1.6.5 ist das noch nicht der Fall. In 1.6.7 steht dazu was im Changelog