Möchte mich bei der Frage auch mal einklinken.
Arduino macht vieles sehr einfach - ohne jeden Zweifel. Wer einen quasi beliebigen Sensor auslesen will, und auf so ziemlich egal was von Gerät anzeigen will, findet die passenden Bibliotheken, die die ganze Arbeit übernehmen und braucht nur noch ne Hand voll Zeilen zu schreiben, die die Bibliotheken miteinander verbinden. Für quick 'n dirty Projekte ist das super. Aus dem Grund habe ich auch ne handvoll Atmegas und Attinys rumliegen. Wenn ich kurzfristig was brauche, z.B. ne Einschaltverzögerung, dann sind die drei Zeilen mit Arduino schneller geschrieben und auf den Mikrocontroller hochgeladen, als das Suchen eines NE555 Rechners, sowie der benötigten Bauteile. Manche werden jetzt die Hände über dem Kopf zusammenschlagen, und ganz andere Erfahrungen gemacht haben, das hier sind meine persönlichen Erfahrungen. Oh, und btw ich habe nur deswegen so viele Attinys weil ich bei Mouser noch 20€ Warenwert brauchte um mir 25€ Versand zu sparen.
Es gibt viele Punkte wo Arduino Kompromisse eingeht, die je nach Anwendungsfall mehr oder weniger problematisch sind. Damit dieser Beitrag nicht noch länger wird als eh schon, möchte ich auf den mMn größten Nachteil eingehen. Das Fehlen eines gescheiten Debuggers. Anders als auf einem PC ist es bei Mikrocontroller nicht so einfach möglich einen Blick ins Innere zu werfen. Es bedarf zusätzlicher Hardware, die quasi einen unabhängigen Zugang zu den Innereien hat, ohne z.B. die Serielle Schnittstelle zu verbrauchen. Die kostet natürlich, was höchstwahrscheinlich der Grund ist, warum Arduinos keinen Debugger integriert haben. Debugging auf dem Arduino läuft prinzipiell so: es klappt nicht, also fängst du an hinter jede mögliche Zeile ein "Serial.println(...)" zu setzen, um dir Variablen oder einfach nur die Info, wo du gerade bist, an den PC zu übermitteln. Wenn du endlich den Fehler gefunden hast, kannst du die ganzen Serial.print Zeilen wieder rauslöschen. Und nein, das werden nicht nur 1-2 Zeilen sein.
Durch die Uni bin ich das erste Mal mit einer anderen Mikrocontroller Plattform als Arduino in Kontakt gekommen: die Tiva LaunchPads von TI. Dabei handelt es sich um Cortex M4 basierte Entwicklungsboards die +/- so groß wie ein Arduino Uno (oder Mega 2560) sind, mit 14-20€ ähnlich viel kosten, aber deutlich mehr Möglichkeiten haben. Vor allem haben sie einen Debugger integriert. Ich kann gar nicht betonen wie geil es war, nicht mehr jede einzelne Variable per Serial.print ausgeben zu müssen, und in jedes if und jedes else nen Serial.print reinzuschreiben um zu wissen wo ich lande. Der Debugger erlaubt es den Code Schritt für Schritt auszuführen, oder normal laufen zu lassen, oder an einer bestimmten Stelle anzuhalten - und das alles interaktiv. Zudem kann ich mir jeder Zeit alle Variablen anschauen einfach so. Schluss mit Testen, geht nicht, Serial.print, Serial.print, Serial.print, neu hochladen, ...
Der Debugger hat noch eine weitere - insbesondere für Einsteiger - unglaublich wichtige Funktion: er macht das Geschehen innerhalb dieser Blackbox sichtbar. Ich sollte mal einer Studentin eine for-Schleife erklären, aber kein Versuch hat wirklich gefruchtet. Als wir jedoch ein einfaches Code-Beispiel Schritt-für-Schritt ausgeführt haben, und sie sah, was genau in jedem einzelnen Schritt geschieht, welche Variable wo hochzählt, welche Zeile als nächstes ausgeführt wird, da hat's klick gemacht. Das ist nur ein Beispiel, deckt sich allerdings mit meinem allgemeinen Eindruck den ich in den letzten zwei Jahren als Tutor eines großen Programmierworkshops an der Uni gewonnen habe; (live) zu
sehen was genau geschieht vermittelt ein besseres Verständnis als jede noch so gut geschriebene oder gesprochene Erklärung.
Trotz dieses überwältigenden Vorteils gilt meine Empfehlung nicht uneingeschränkt den Tivas o.ä. Dass die Programmierumgebung deutlich näher an der Hardware dran ist als die vereinfachte und abstrahierte Arduino Umgebung, macht den Einstieg definitiv nicht leichter. Vor allem erfordert es, dass die Hardware, also z.B. der Aufbau des ADCs zumindest grundsätzlich verstanden wurde, bevor er genutzt werden kann. Und da die meisten Module, z.B. auch PWM umfangreiche Funktionen, wie Totzeit, Synchronisierung mehrerer Ausgänge, Interrupts, etc haben, ist das manchmal eher erschlagend - selbst wenn die Funktionen gar nicht beachtet werden müssen. Es aber auch gesagt, dass es von TI einen recht guten Workshop gibt, der sowohl die IDE, den Debugger, als auch die meisten Module des Mikrocontrollers vorstellt, und deren Verwendung Schritt für Schritt erklärt. Dazu gehört auch eine recht ordentlich aufgebaute und strukturierte Bibliothek, mit der
alle Funktionen des Mikrocontrollers angesteuert werden können.
Aufgrund dieses Aufwandes habe ich mich neulich z.B. bewusst gegen diesen Weg entschieden. Ich wollte Sensordaten drahtlos übermitteln mittels ESP8266. Dazu hätte ich mich entweder in die Plattform einarbeiten, oder aber auf die Arduino Umgebung setzen können, die für diesen Mikrocontroller portiert wurde. Da das Projekt eher klein war, habe ich mich zu letzterem entschieden. Und prompt den Debugger vermisst
Was nun die beste Lösung in meinen Augen ist? Schwierige Frage. Wer keine Lust hat sich mit dem Aufbau von ADC, PWM, Timer, etc. rumzuschlagen, wird nen schweren Start mit Tiva haben. Dafür kriegt er den Debugger, der einiges an Mehrwert beim Lernen und Entwickeln bringt. Zumindest für den Lern-Aspekt ist es u.U. eine Alternative, sich eine C++ IDE wie Code::blocks anzuschauen. Damit kann man die Konzepte der Sprache - mit Debugger - ohne großen Aufwand auf dem PC erkunden und verstehen lernen. Wer darüber hinaus nur kleineres vor hat, ist darüber hinaus wohl mit Arduino besser dran.
Liebe Grüße,
Max
______________________________
Fußnote zu den Tivas und dem Debugging: Die Tivas sind nicht so schrecklich verbreitet, und obwohl es ein sehr hilfreiches Forum bei TI gibt, finden sich z.B. deutlich weniger Bibliotheken auf GitHub für diese Plattform. ST hat vergleichbare Microcontroller im Angebot, die sich deutlich größerer Beliebtheit erfreuen. Mit diesen habe ich persönlich aber noch keine Erfahrung gemacht.
Des weiteren ist mir durchaus bewusst, dass es auch für die Atmels, auf denen die "einfachen" Arduinos basieren, einen Debugger zu kaufen gibt. In dem Fall braucht man aber Atmel Studio um ihn auch verwenden zu können, was ebenfalls eine "vollwertige" Entwicklungsumgebung ist (und entsprechend auf den ersten Blick erschlagender als die Arduino IDE). Es dürfte allerdings einiges an Aufwand brauchen, bevor der Arduino Code in Atmel Studio läuft und debuggt werden kann. Denn das ganze Zeug was Arduino versteckt, muss irgendwie dort eingerichtet werden...