Ich habe so manches Problem beim Programm erstellen meines Arduino Mega 2560, da ich noch absoluter Beginner bin. Jetzt habe ich mir gedacht mir ein Handbuch oder vielmehr ein Buch über das Erstellen von Programmen zu besorgen. Wo die Befehle und Anweisungen drin beschrieben werden und das in Deutsch, da ich der Englischen Sprache nicht mächtig bin. Kann mir irgend wer ein Buch empfehlen ? Da ich früher in Basic und Dbase Programmiert habe , fällt mir das Programmieren nicht so schwer, nur ich kenne mich bei dem Arduino überhaupt nicht mit den Befehls und Anweisungen aus. Was mir so beim Programmieren fehlt sind Anweisungen wie ich im Programm ein Menü erstellen kann von wo ich zu den einzelnen Unterprogrammen springen kann und wieder zurück. Da ich mir ein Programm geschrieben habe für meine Aquarien Beleuchtung, was ja noch machbar ist da die Dimmung immer Morgens und Abens ausgeführt wird und die Pumpensteuerung über den ganzen Tag, jedoch wenn ich jetzt ein Unwetter über Randome mit einbeziehe über If schleife und diese kurz vor der runter Dimmung ausgeführt wird dann kann die Dimmung nicht statt finden weil , je nach länge des Unwetters die Zeitliche IF Anweisung für die Dimmung überschritten wird und das Programm ohne Dimmung weiter läuft. In Dbase wurde das mit Go to und Return gelöst, gibt es solche Sprung Anweisungen auch in C für den Arduino????
Die Besonderheit beim Arduino - C sind ein paar spezielle Funktionen, dass der Speicher sehr klein ist (2kB RAM beim UNO),
und dass es kein Betriebssystem gibt (aber das hat ja eigentlich mit C nichts zu tun).
Hallo Malerlein,
ich würde im Internet recherchieren bevor ich mir ein Buch kaufe, da gibt es genügend Unterstützung. Ich bin auch absoluter Einsteiger ins Arduino-Leben. Bin auch erst vor 14 Tagen damit angefangen. Ich kann auch nur BASIC und DBASE, vermisse die Befehle Goto und Gosub schmerzlich, ist eine richtige Umstellung wenn man damit gearbeitet hat und in C gibt es diese Befehle nicht. Wie gesagt ich habe mir bis jetzt sehr gut durch das I-Net helfen können.
Gruß Heinz
C ist in Funktionen aufgebaut. Funktionen sind eine Zusammenfassung von Funktionen (anderen Programmiersprache entsprechen sie Befehlen) denen Werte übergeben werden und die einen Rückgabewert haben. Außerdem können sie auf bestimmte Variablen zugreifen und diese verändern.
In C gibt es goto, aber Du brauchst es nicht außer in bestimmten Situazionen wo goto den Code vereinfacht. Das ist dann aber schon höhere "Informatik". Du kommst mit Funktionsaufrufen aus. Darum "gibt" es für Anfänger goto in C nicht.
Als Anfangsbuch wird "Arduino Entdecken" von Erik Bartmann empfohlen. Ich persönlich kann keine Wertung darüber geben, da ich es nicht kenne.
uwefed:
Als Anfangsbuch wird "Arduino Entdecken" von Erik Bartmann empfohlen. Ich persönlich kann keine Wertung darüber geben, da ich es nicht kenne.
Wenn ich Uwe schon einmal was voraus habe...: Ich kenne und besitze es, komme selber ursprünglich aus der Basic-Ecke und kann es nur wärmstens empfehlen. Ich hole mir auch fast alles aus dem Netz aber für den Anfang ist ein Buch noch immer das einzig wahre.
das Buch von Erik Bartmann (Die elektronische Welt mit Arduino entdecken) ist in der Tat ganz brauchbar, da hier, wenn auch rudimentär, auf Elektronikgrundlagen eingegangen wird.
Weiter (aus meiner Sicht) empfehlenswert ist von Michael Margolis 'Arduino Kochbuch', hier sind etliche brauchbare Problemlösungen beschrieben, u.a. auch wie man eine CSV-Datei 'auseinander nimmt'.
Was das fehlende GOSUB und GOTO anbelangt, so ist das wohl eine Basic-typische 'Unsitte', andere Hochsprachen (u.a. C und PASCAL) kennen kein GOSUB!
Bei der Benutzung von Funktionen muss man nur auf den Gültigkeitsbereich der verwendeten Variablen aufpassen.
Braucht man in Funktionen benutzte Variablen auch außerhalb der Funktion, ist es am einfachsten, diese global zu deklarieren.
Pointer sind mir ein Graus, hier sind mir schon ganz seltsame Dinge passiert.
Das "Kochbuch Arduino" ist ein sehr gutes Buch (und diesmal kenn ich die englische Version ).
Ich beurteile es aber als ungeeignet für Anfänger aus der NichtElektronikerEcke, da nur sehr kurz auf die Elektronikgrundlagen eingegangen wird. Für Fortgeschrittene und Elektronik-Wissende empfehlendswert.
Wer sich selbst ein Bild machen will: Arduino Kochbuch [Book] . Die Vorschau läßt relativ wenig Seiten aus (Stichprobenartig gefühlt nur jede 4. bis 5.)
Pointer (Zeiger oder anders formuliert die Speicherzelle wo eine Variable abgespeichert ist) sind eines der Pluspunkte von C. Bevor man sie nciht verstanden hat sind sie ein Graus. Hat man sie mal verstanden, dann können einige Programmierprobleme einfach und elegand gelöst werden.
ZB kann man nicht den Variablenwert an eine Funktion übergeben sondern den Pointer darauf. So kann eine Funktion verschiedene globale Variablen bearbeiten, ohne daß Du dafür mehrere Funktionen schreiben mußt.
Danke mal erst für die rege Beteiligung, was ich ausdrücken möchte ist folgendes, ist es in C möglich ein Hauptprogramm zu schreiben , wie eine Menüfunktion, die zu besteimmten Teiten überprüft ob ein Unterprogramm ausgeführt werden soll. Da wenn ich das richtig sehe alle if und for anweisungen seriell also nacheinander durchlaufen werden. Da ich im Moment nur meine Beleuchtung und Pumpen steuere ist es egal, da die if Anweisung zum Hochdimmen Morgens um 7 begint und die Abdimmung Abends um 24 UHR, sowie die Pumpensteuerung über Random 24 Std. Da macht es nichts aus wenn bei der Pumpensteuerung mal eine Verzögerung eintritt. Wenn ich aber jetzt ein Komplexes Programm schreibe mit vielen Funktionen und diese Seriell durchlaufen werden, (immer nach meinen Gedankengängen) müsste sich irgend wann eine Zeitverzögerung einstellen und wenn dann gerade die Abfrage so geschrieben ist z.B. if (datum [ 2 ] == 12 and datum[ 1 ] == 10) 2 = Std, 1=Min. und die Schleifen und das Random die Zeit der Min. überschreitet wird die angezeigte if Anweisung nicht mehr ausgeführt, oder denke ich da Falsch. Bei Dbase Anweisungen hatte ich die Möglichkeit, aus dem Hauptprogramm kontrollieren zu lassen ob die Zeit einer Abfrage erreicht war, wenn ja wurde diese ausgeführt und wenn Nein wurde mit Return zurück gesprungen. Gut vielleicht gibt es ja in C auch solche Anweisungen , nur soweit bin ich noch nicht :). Aber ich lese mich fleissig ein.
Wenn du komplexe Funktionen suchst solltest nicht in den C Sprachmitteln suchen sondern in den Arduino libraries die andere Leute geschrieben haben. Das sind eine Art Unterprogramme (objektorientiert: Klassen), die man mit "#include" in sein eigenes Programm einbinden kann. Du musst die nur runterladen und im libraries Ordner speichern.