welches "C" für den Arduino?

Hallo,
es gibt ja so verschiedene C-Hochsprachen. Da wären:

C
C#
C+
C++

Für was für eine sollte ich mir denn am besten Fachliteratur besorgen?
Gruß und Dank
Andreas

C+ gibt es nicht. Höchstens das hier:

Arduino ist C mit Teilen von C++. C ist mehr oder weniger ein Subset von C++. Aber abgesehen von den grundlegenden objekt-orientierten Sachen wie Klassen sieht man C++-spezifische Dinge wie Templates oder Iteratoren eher selten. Und die ganzen Standard high level Bibliotheken die in Büchern oft abgedeckt gibt es nicht (wobei es eine Arduino Implementierung der Standard Template Library gibt die nicht schlecht ist). Ebenso wenig Dinge wie exceptions oder new/delete. Ein C++ Buch enthält also viele Dinge die man nicht anwenden kann oder nicht unbedingt braucht.
Ein Buch hierfür sollte sich eher auf die Grundlagen konzentrieren und nicht zu sehr in OOP abgleiten. Der C++ Primer (was eines der Standardwerke für C++ ist) deckt auf den ersten ca. 260 Seiten Dinge ab, die auch hier relevant sind. Aber wenn man man maschinennah programmiert, gibt es bessere Optionen.

C# ist was komplett anderes. Das ist keine maschinen-nahe Sprache, sondern ähnlich wie Java. Byte Code, Virtual Machine, garbage collection, alles ist ein Objekt etc. Damit schreibt man PC Anwendungen.

Hallo Andreas,

ich würde gerade bei µC zum C raten. Ein Buch kann ich dir nicht empfehlen, eher mehrere.

Das Problem ist, ich habe bislang noch kein gutes Buch erworben, welches wirklich einen guten Start abdeckt in C. Ich habe zum einen "C von A bis Z" von galileocomputing, welches mM nach sehr ausführlich mit vielen Beispielen an das Thema Hochsprache herangeht. Das Buch spricht aber eher das Programmieren von C Applikationen für den PC an. Deshalb habe ich oben schon erwähnt, dass ich EIN Buch nicht empfehlen kann. Zu diesem Buch würdest du auf jedenfall auch noch ein weiteres Buch benötigen, welches sich stärker Richtung C und dem µC widmet. Hier habe ich derzeit aus dem Franzis Verlag "Powerprojekte mit Arduino und C". Hierbei wird überwiegend der hardwareseite Teil der Programmierung aufgefasst. Mit der Arduino IDE, bzw. den Arduino Libs hat dass dann nichts mehr zu tun. Du schreibst in dem Buch ein reines C. pinMode(), digitalWrite() sind ja in dem Sinne keine StdLib für C und µC. Jedoch muss ich sagen, dass das Buch gerade am Anfang doch recht schwer ist.

Im Gegensatz zum Buch des Franzis Verlags (~240 Seiten) ist das Buch von GalieoComputing einiges Umfangreicher. Hier bekommste schon einen dicken Wälser :wink: ~1200 Seiten.

Preise für die Bücher
Powerprojekte mit Arduino und C 30,00€
C von A bis Z 39,90€

Ob sich die Preise inzwischen geändert haben, weiß ich nicht. Um mal ein bisschen reinzuschauen, worum es in C von A bis Z geht, kannst du dir hier die Ergänzungen zum Buch anschauen.

Sind mM schon recht umfangreich, aber immer vergleich zum Buch wenig :wink:

Arduino ist avr-gcc ist c++, incl. new / delete und templates (aber ohne exceptions).
Und c++ ist eine Erweiterung von c, mit vielen sinnvollen Ergänzungen.
So nutzen die meisten Libraries class Definitionen.
Auch wenn es nur zur leichteren Benutzbarkeit dient und es nur eine einzige, oft schon vordefinierte, Instanz gibt.

Ob man new auf einem µC, der mit ein paar Bytes RAM und einem einzigen Programm jahrzehntelang laufen soll, braucht, ist eine andere Frage, die aber auch für das malloc ( aus c ) gilt.

C# ist eine ganz andere Sprache und heisst ausserhalb von Microsoft Java.
Diese teilen sich mit c / c++ geschweifte Klammern und Semikolon und auch sonst einiges,
funktionieren aber vom Grund her völlig anders.

Was man auf der Arduino Seite als Einstieg in die Programmierung findet ( Variablen - Typen etc. ) ist sicher nicht ausreichend, auch die Programmierungs - Hinweise in Starterkits haben Grenzen. Aber das Internet ist groß, und was für den Arduino passt, muss man, genauso wie bei Büchern, eben herausfinden.

Hallo,
die Aufklärung über die verschiedenen "C´s" hat ja mal schon etwas gebracht.
Ich stehe jetzt jedenfalls nicht mehr wie ein Blöder vor dem Bücherregal.
Das gefährliche am Arduino ist, das man leise weinend "verblödet". Man kommt
mit dem Ding sehr schnell zu einem Erfolg, ist aber auf "Teufel komm raus" auf
das gegebene angenagelt. Ich benutze hier das "Kochbuch". Das Buch ist wirklich
sehr gut, wenn man schnelle Erfoge erziehlen will. Du kannst Dir einen Arduino
kaufen, ein Relais und im Buch steht, wie es geht. Damit kannst Du ohne jegliche
Vorkenntnisse eine Lampe alle 5 Minuten leuchten lassen.

Wenn es aber ins Eingemachte (hier Sonnenaufgang) geht, dann werden Dir bei den
einfachsten Dinge sofort Deine sehr beschränkten Grenzen aufgezeigt. Du kannst
zwar eine Lampe mit dem Arduino einschalten, aber von dem was Du da gemacht
hast, hast Du null Ahnung.

Die Literatur zum Arduino zielt nur darauf ab, dem Leser eine schnellen Erfog zu
präsantieren, läuft da aber etwas im Programm schief, stehst Du im dunkeln.

Ganz besonders ist mir das gestern aufgefallen, da hat jemand geschrieben, das
ein C-Code SO- auf dem Arduino läuft. Also C&P- und?! Nichts! Das lag aber
nicht am Code, sondern an dem Penner, der vor der Tastatur saß. Ganz einfach,
weil der keine Ahnung von "C" hat. Wäre das ein Arduino Programm gewesen, wäre
es für mich kein Problem gewesen, das zum laufen zu bekommen.
Das passiert mir nicht noch einmal, ist ja schon peinlich.

Die hier vorgeschlagenen Bücher wie C++Primer, Galileo und Franzis werde ich mir
einmal anschauen. Zum im Internet "nachschlagen" habe ich keine Nerv. Da fragst
Du nach Temperatur-Sensor- und es endet mit FieberThermometer…
Also, in diesem Sinne.
Gruß und Dank
Andreas

Teile die Erfahrungen bzgl. Deiner Suche nach einem für Dich passenden Buch (und dem anschließenden Ergebnis) bitte mit uns. Am Besten und Einfachsten in diesem Thread. :wink:

Gruß Chris

Wenn ich mir das Galileo Buch oben anschaue wäre das für dich besser als der C++ Primer. Das geht doch mehr auf C und die Grundlagen ein und deckt vieles ab dass im Primer nur angerissen oder gar nicht behandelt wird. Da sind z.B. auch string.h erklärt, was auf dem Arduino auch praktisch ist. Beim C++ Primer geht es wirklich eher um objektorientierte Programmierung in C++, was für dich weniger interessant ist. Das ist glaube ich auch eher für Leute geschrieben, die schon eine andere Sprache können und jetzt mit C++ anfangen.

@michael_x
C# und Java sind vom Funktions-Prinzip sehr ähnlich, aber im Detail gibt es da ganz gewaltige Unterschiede. Es hat mal als J++ angefangen, aber man hat in vielen Bereichen andere Entscheidungen getroffen.

C von A bis Z gibts als openbook bei galileo, läst sich auch gut auf einen ebook reader ziehen.

Grüsse
Christian

farbtoaster:
C von A bis Z gibts als openbook bei galileo, läst sich auch gut auf einen ebook reader ziehen.

Grüsse
Christian

Hallo, diese openbook entspricht dem Link von mir oben, jedoch ist hier zu bedenken, dass es sich bei weitem nicht um das komplette Buch handelt.

Habe es gerade einmal stichprobenartig überprüft.
Kapitel 21 - Dynamische Datenstrukturen beginnt im Buch auf Seite 691 und Ende mit Seite 764.
Jedoch wird beim openbook bei dem Kapitel 21 nur Lineare Listen (einfach verkettete Listen) abgearbeitet. Das entspricht den Seiten 691 bis 716.

Das openBook/Html-Version nutzte ich persönlich nur zum schnellen Nachlesen. Ansonsten greife ich mir das Buch zu Hilfe. Das OpenBook/Html-Version belegt unnötig Platz auf dem Desktop wenn man nachlesen und schreiben möchte :wink:

3 Displays kann mein miniITX PC leider nicht direkt betreiben.

SkobyMobil:
Ganz besonders ist mir das gestern aufgefallen, da hat jemand geschrieben, das
ein C-Code SO- auf dem Arduino läuft. Also C&P- und?! Nichts! Das lag aber
nicht am Code, sondern an dem Penner, der vor der Tastatur saß. Ganz einfach,
weil der keine Ahnung von "C" hat. Wäre das ein Arduino Programm gewesen, wäre
es für mich kein Problem gewesen, das zum laufen zu bekommen.
Das passiert mir nicht noch einmal, ist ja schon peinlich.

Also solche Sprüche möchte ich hier nicht lesen müssen. Der wollte bestimmt auch nur helfen.

Wegen einem C Buch. Mir gefällt das "C Programming" von Jürgen Wolf aus dem Markt + Technik Verlag.
Level: Einsteiger
ISBN: 978-3-8272-4467-3
Preis: 17,95 €uronen

Doc_Arduino:

SkobyMobil:
Ganz besonders ist mir das gestern aufgefallen, da hat jemand geschrieben, das
ein C-Code SO- auf dem Arduino läuft. Also C&P- und?! Nichts! Das lag aber
nicht am Code, sondern an dem Penner, der vor der Tastatur saß. Ganz einfach,
weil der keine Ahnung von "C" hat. Wäre das ein Arduino Programm gewesen, wäre
es für mich kein Problem gewesen, das zum laufen zu bekommen.
Das passiert mir nicht noch einmal, ist ja schon peinlich.

Also solche Sprüche möchte ich hier nicht lesen müssen. Der wollte bestimmt auch nur helfen.

Wegen einem C Buch. Mir gefällt das "C Programming" von Jürgen Wolf aus dem Markt + Technik Verlag.
Level: Einsteiger
ISBN: 978-3-8272-4467-3
Preis: 17,95 €uronen

Der gleiche Autor wie bei C von A bis Z, vermutlich dann auch sehr interessant. Ich werde es mir mal ansehen.

Hallo,

dann werde ich mir "Dein's" mal anschauen. :slight_smile:

Hallo,
das OpenBook habe ich mir mal angeschaut. Die Grundlagen scheinen ja ordentlich
erklärt zu werden. Es steht aber auch eine Menge unnützes Zeugs drin, z.B.
CGI und Netzwerk. Das werde ich mit einmal im original anschauen.

Powerprojekte mit Arduino und C. Das werde ich mir "blind" kaufen. Es hört
sich vielversprechend an. Und Bücher kann Franzis eigentlich.
Gruß und Dank
Andreas

und noch etwas- Doc_Arduino!

"Also solche Sprüche möchte ich hier nicht lesen müssen. Der wollte bestimmt
auch nur helfen."

Vielleicht hättest Du Dir einmal den ganzen Thread aufmerksam durchlesen
sollen, dann hättest Du wohl gemerkt, was gemeint ist. Ich finde es schon
ziemlich bemerkenswert von Dir, den Thread zu überfliegen- und dann versuchen,
hinterhältig jemanden schlecht zu machen…
Schönen Tach, noch.

Hallo,

a) ich habe keinen Link gesehen zum lesen
b) "... hinterhältig ..." Was?

Mein gut gemeinter Rat. Halte den Ball flach.

Hallo Doc_Arduino,
muss denn hier alles erklärt werden?

Du hast geschrieben:

"Also solche Sprüche möchte ich hier nicht lesen müssen. Der wollte bestimmt
auch nur helfen."

das hast Du gemacht, weil ich das geschrieben habe:

"Ganz besonders ist mir das gestern aufgefallen, da hat jemand geschrieben, das
ein C-Code SO- auf dem Arduino läuft. Also C&P- und?! Nichts! Das lag aber
nicht am Code, sondern an dem Penner, der vor der Tastatur saß. Ganz einfach,
weil der keine Ahnung von "C" hat. Wäre das ein Arduino Programm gewesen, wäre
es für mich kein Problem gewesen, das zum laufen zu bekommen.
Das passiert mir nicht noch einmal, ist ja schon peinlich."

hättest Du Dir das:

http://forum.arduino.cc/index.php?PHPSESSID=te175csie6s9510629h435r123&topic=218280.0

aufmerksam durchgelesen, hättest Du das:

"Also solche Sprüche möchte ich hier nicht lesen müssen. Der wollte bestimmt
auch nur helfen."

wohl NICHT geschrieben!

So etwas nennt man auch SelbstIronie:
Selbstironie ist eine Ironie, deren unmittelbare Zielscheibe die eigene Rolle oder Meinung ist und die daher eine spielerische, relativierende oder sogar kritische Haltung sich selbst gegenüber einnimmt. Selbstironie gilt daher oft als Zeichen von Humor und sympathischer Bescheidenheit bzw. steht, aufgrund ihrer immanenten Selbstkritik, auch für eine generell undogmatische Lebenseinstellung.

Ist das jetzt klar?
Für mich ist die Sache erledigt.
Gruß und Spaß dabei
Andreas

Chris72622:
Teile die Erfahrungen bzgl. Deiner Suche nach einem für Dich passenden Buch (und dem anschließenden Ergebnis) bitte mit uns. Am Besten und Einfachsten in diesem Thread. :wink:

Gruß Chris

Hallo,
ich bin HobbyElektroniker, weiß also nicht ob ich eine Buchrezension schreiben
kann. Man trage mir das nicht nach.

Hier geht es um "Powerprojekte mit Arduino und C", Franzis, CD-ROM, 30,00.-

Es ist das "typische" Franzis Buch, Paperback, billiges Papier, Graustufen
Abbildungen.
Wer mit dem Arduino und der Arduino IDE arbeiten möchte, sollte sich das Buch
nicht kaufen. Auch MacintoshUser sollten die Finger davon lassen. Wer die
Arduino IDE benutzt, der kann es sich kaufen, wenn er in "C" ziemlich fit ist.

Die Arduiono IDE wird in dem Buch nur sehr selten und wage angesprochen.
Der Code der Sketche ist "ausschließlich" in C geschrieben. Wenn der typische
ArduinoUser nun den Titel liest, und meint die Arduino IDE kann ja C, dann
fällt er aufs Maul. Als Hardware wird z.B. empfohlen: STK500, Dragon mit
Arduino, STK500-kompatibler Programmieradapter mit Arduino und Arduino mit
Bootloader?!

Dann gibt es noch altenative Entwicklungs-Boards und Programmiergeräte, ist aber
alles sehr Atmel bezogen- und nicht Arduino bezogen.

Bei den Entwicklungsumgebungen wird die Arduino IDE nicht berücksichtigt,
vielmahr werden hier Atmel Studio 6 oder CodeVisionAVR empfohlen.

Für den Arduino User im Sinne von Arduino, ist das nicht zu gebrauchen.

"C-Funktionen"- was immer das heißen mag, werden nur knapp angerissen. Da hier
nicht mit der Arduino IDE gearbeitet wird, kann man nur erraten, was denn
tatsächlich zum "laufen" zu bekommen ist.

Dann gibt es ein Kapitel "Perfektionskurs in C" Ganz gewaltig, 33 Seiten lang.
Ohne ausreichende C-Kenntnisse kann man damit nichts, aber auch nichts anfangen.
Wer allerdings Vorkenntnisse in C hat, der weiß das schon.

Ein großer Teil des Buches geht für Beschreibungen drauf, wie man denn in den
verschiedenen Entwicklungs-Umgebungen die richtigen Punkte setzt.
Wer meint, hier etwas über Interrupt und TimerProgrammierung erfahren ist auch
schief gewickelt. Es wird fast alles über DDR gemacht.

Die Schaltungsbeispiele sind die üblichen "blah-blah" Beispiele, nichts
besonderes. Das Buch ist sehr Hardware bezogen, hat aber- wie der Titel
suggeriert- nichts (ganz wenig) mit dem Arduino als "Stand-Alone" zu tun.

Das Buch ist eindeutig Atmel besogen, nicht Arduino bezogen.
Also lange Rede, kurzer Sinn.
Wer- Atmel programmieren möchte und dazu den Arduino nutzt, der könnte sich
dieses Buch kaufen- alle anderen sollten die Finger davon lassen.

Das hier ist meine Meinung zu dem Buch. Ich gehe nicht weiter drauf ein.
Gruß und Spaß
Andreas

Hallo Andreas,

die Rezension kann ich fast so mit unterschreiben.

Wer meint, hier etwas über Interrupt und TimerProgrammierung erfahren ist auch
schief gewickelt. Es wird fast alles über DDR gemacht.

Wird ab Seite 111 doch erklärt. Timerprogrammierung sowie das nutzten von Interupts.

Dass das Buch überhaupt nicht auf die IDE zurückgreift, finde ich persönlich sehr gut!

Ich hoffe es war für dich aber denoch kein Fehlkauf. Auf die Probleme habe ich ja bereits in einem vorherigen Beitrag hingewiesen :wink:

Hier habe ich derzeit aus dem Franzis Verlag "Powerprojekte mit Arduino und C". Hierbei wird überwiegend der hardwareseite Teil der Programmierung aufgefasst. Mit der Arduino IDE, bzw. den Arduino Libs hat dass dann nichts mehr zu tun. Du schreibst in dem Buch ein reines C. pinMode(), digitalWrite() sind ja in dem Sinne keine StdLib für C und µC. Jedoch muss ich sagen, dass das Buch gerade am Anfang doch recht schwer ist.