Einen Arduino Nano programmieren Neuling hierbei , nicht generell

#8113321

Chris V. schrieb:

Das ist das Problem, wenn man "fremden" Code übernimmt, egal ob er von anderen Menschen oder der KI kommt. Man kommt möglicherweise schnell zu Ergebnissen, versteht aber nicht, was passiert.

Es kommt auch darauf an WIE man anfängt. Ich (stellvertretend für die ganze Generation) hatte damals eine 2 in den Akkumulator geladen, eine 3 addiert und mich gefreut dass ich eine 5 zurück bekam. Und auch gleich gelernt, dass ein carry flag durchaus seine Bestimmung hat und einem den Tag versauen kann wenn es vor einer Addition irrtümlich gesetzt ist.

Heute wird als erste Aufgabe ohne jegliche Programmierkenntnisse gleich einmal eine Home-Automation Steuerung versucht. Mit einer KI-Lösung welche - wie in diesem Fall - dann zB. erst einmal einen off by one Patzer einbaut den ein Anfänger niemals finden würde.

Lernen ist immer noch mühsam, aber der Erfolg ist dann um so süßer.

#8113325

Moritz L. schrieb:

Also ich würde einem Anfänger ganz sicher nicht die Eclipse IDE empfehlen, um nur ein negatives Beispiel zu nennen. Da muss man viel zu viel machen, um es ans Laufen zu bringen.

Zustimmung.

Diejenigen welche sich auf der Kommandozeile wohlfühlen reicht VI-lleicht schon ein einfacher Editor aus. ;-)

Ansonsten, etwas sehr Einfaches, Grafisches. Geany wäre Anfängertauglich, hat schon eingebaute Möglichkeiten zum Kompilieren(F8) und Linken(Ctrl-F8) und kann darüber hinaus auch den GDB Debugger handhaben. Zum Üben und für kleine Quickies reicht das alle Male.

#8113533

Es geht noch viel primitiver zu beim Einbauen von Fehlern. So wollte ich gestern den "serial monitor" aktivieren. Funktionierte nicht. Denn bei Arduino ist Groß- und Keinschreibung crucial. (Das steht auch im Tutorial.) Das "S" von Serial Monitor war klein geschrieben. Der Fehlerkommentar sagt aber nicht: "Schreib das "s" gefälligst groß". Na sowas. Bei HTML gibt es sowas wie "Parser", die noch viel gravierendere Syntaxfehler weitestgehend automatisch ausbügeln. Manchmal ist Arduino eben doch irgendwie pingelig.

ciao
gustav

#8113543

Karl B. schrieb:

Es geht noch viel primitiver zu beim Einbauen von Fehlern. So wollte ich gestern den "serial monitor" aktivieren. Funktionierte nicht. Denn bei Arduino ist Groß- und Keinschreibung crucial.

Verstehe ich nicht. Den Serial Monitor klickt man an. Dazu muss man nichts eintippen.

Meinst du das Serial Objekt im Quelltext? In der Programmiersprache ist (wie in fast allen anderen auch) alles case sensitive.

: Bearbeitet durch User
#8113575

Karl B. schrieb:

Es geht noch viel primitiver zu beim Einbauen von Fehlern. So wollte ich gestern den "serial monitor" aktivieren. Funktionierte nicht. Denn bei Arduino ist Groß- und Keinschreibung crucial. (Das steht auch im Tutorial.) Das "S" von Serial Monitor war klein geschrieben. Der Fehlerkommentar sagt aber nicht: "Schreib das "s" gefälligst groß".

Wenn man die Arduino IDE installiert, dann sind erst einmal nahezu sämtliche Warn- und Fehlermeldungen ausgeschaltet. Das würde ja auch nur verwirren und die Ästhetik beeinträchtigen. Kann man aber in einem Menü einschalten. Dann tauchen zumindest einige Warnungen auf. Leider auch schon solche, die da gar nicht auftauchen sollten.

Schlimmer wird's dann aber, wenn man einige seiner eigenen, langjährig erprobten, erweiterten Compiler-Warnungen dazu nimmt. Dann ersäuft man plötzlich in einem Meer von Meldungen. Nicht etwa die in seinem eigenen Code, nein, die Warnungen kommen alle aus der eigentlichen Arduino Basis. Was man da an extrem schlampig zusammen gehauenem Code sieht, ist gelinde gesagt eine Frechheit.

Mich würde mal interessieren, wie lange die Arduino Macher daran gearbeitet haben ein Set von Compiler Flags zusammen zu stellen, das ihren eigenen, grausamen Code bestmöglich übertüncht.

Nun könnte man sagen, sind ja nur Warnungen. Aber, die eigenen gehen dann in der Masse unter. Wenn jemand ständig Feuer,Feuer schreit, … Ihr kennt den Spruch.

(Firma: Gast) #8113582

Norbert schrieb:

nein, die Warnungen kommen alle aus der eigentlichen Arduino Basis.

  1. Leider hast du vergessen die Meldungen klar zu benennen.
  2. Fehler kannst du bei github selber korrigieren.
  3. Bei mir kommen keine Meldungen, auch bei scharfer Einstellung.

Ausnahme, z.B. PORTB |= (1<<PB5)
Da sagt es, dass die Operation nicht atomar ist, was auch stimmt.

: Bearbeitet durch User
#8113590

Arduino F. schrieb:

Leider hast du vergessen die Meldungen klar zu benennen.

Nein, das habe ich nicht 'vergessen'. Die kann jeder selbstständig nachvollziehen wenn er die letzte gültige (und immer noch zum Download angebotene) 1.8.19 installiert.

Fehler kannst du bei github selber korrigieren.

Wozu? Ich benutze Arduino nur (im Sinne von ausschließlich), wenn ich im Bekanntenkreis bei Problemen um Hilfe gebeten werde.

Bei mir kommen keine Meldungen, auch bei scharfer Einstellung.

Ja dann.

#8113603

Arduino F. schrieb:

faktenlosen

Lies und vor allem Verstehe was ich geschrieben habe!

Aber extra für dich ein kleines Beispiel:

1
    for (uint8_t x = -5; x <= 5; x++)
2
        {}

Wird von der Arduino IDE aufgrund von fehlendem -Wsign-conversion Flag ohne die geringste Warnung kompiliert. Hier wird das kleine ›u‹ vor int8_t zu einer wunderbaren Anfänger Falle.

Schaltet man jedoch dieses essentielle Warnflag ein, wird in:

  • wiring_analog.c sechs mal gewarnt
  • CDC.cpp zweimal gewarnt
  • IPAddress.cpp einmal gewarnt

Hinzu kommen nun noch (teilweise unzählige) Meldungen in Tone.cpp, Print.cpp, Stream.cpp, WMath.cpp, WString.cpp, USBCore.cpp, …

Ich habe hier dann mal aufgehört. Also unterlasse bitte dein haltloses Geschwätze und überprüfe es selbst. Falls es dir überhaupt darum ging, was ich bezweifele.

#8113609

Add:
Der hier ist auch noch schön: Obwohl ein C++11 zum Kompilieren explizit vorgegeben wird, wird im Arduino code teilweise C++14 Funktionalität verwendet.

1
Tone.cpp:245:27: warning: binary constants are a C++14 feature or GCC 
2
extension
3
   uint8_t prescalarbits = 0b001;
4
                           ^~~~~
#8113619

Norbert schrieb:

Schlimmer wird's dann aber, wenn man einige seiner eigenen, langjährig erprobten, erweiterten Compiler-Warnungen dazu nimmt. Dann ersäuft man plötzlich in einem Meer von Meldungen.

Nun muß man allerdings sagen, daß der g++ bezüglich solcher Fehlermeldungen und Warnungen recht... gesprächig ist. :-)

#8113626

Die Nutzung von binären Konstanten würde ich denen allerdings nicht als Mangel ankreiden. Der Code ist für den gcc geschrieben, er kann es und es funktioniert. Es macht den Code an einigen Stellen besser lesbar. Ich nutze diese Erweiterung seit ich denken kann - auch mit anderen C Compilern. Um 2000 herum war das schon ein beinahe selbstverständliches Feature. Hat irgendwer gesagt, dass Arduino keine gcc Erweiterungen nutzen darf?

#8113642

Arduino F. schrieb:

Schade, dass die Warnung nicht von -Wall mit eingeschlossen ist.

Es gibt eine stattliche Anzahl Warnungen welche alle nicht bei -Wall -Wextra -pedantic eingeschlossen sind. (Aber darüber können die Compiler-Spezialisten sicher viel besser referieren. Es mag sogar gute Gründe geben.)

-Wshift-overflow
-Wsign-compare
-Wsign-conversion
-Wstrict-overflow\

wären zB. so Kandidaten. Aber glücklicherweise kann man sie ja im makefile bequem mitliefern.

: Bearbeitet durch User
#8113651

Arduino F. schrieb:

Was im Arduino Umfeld wenig bringt. Dort tut man sowas in der platform.local.txt

Ja selbstverständlich, wäre ja auch zu einfach wenn man's in der IDE machen könnte.

Muss man diese Datei tatsächlich (als root) tief in die Arduino Verzeichnisstruktur (›/opt/arduino-1.8.19/hardware/arduino/avr/‹) einmassieren, oder kann man das vielleicht doch lokal machen? Habe da leider keine zielführenden Informationen finden können.

Beitrag #8113657 wurde vom Autor gelöscht.
(Firma: Gast) #8113669

Norbert schrieb:

Muss man diese Datei tatsächlich (als root) tief in die Arduino Verzeichnisstruktur (›/opt/arduino-1.8.19/hardware/arduino/avr/‹) einmassieren, oder kann man das vielleicht doch lokal machen? Habe da leider keine zielführenden Informationen finden können.

Tief, ja.
Der root Zugang sollte sich vermeiden lassen, wenn man die Installation portable macht.

#8113677

Moritz L. schrieb:

Verstehe ich nicht. Den Serial Monitor klickt man an. Dazu muss man nichts eintippen.

Das Programm im Bild. Selbiges per Hand eingetippt, aber
in Zeile 3 und 8 "S" (serial) klein nicht groß (Serial). Dann kommt eine für den Anfänger nicht leicht zu verstehende Fehlermeldung.

Das ist aber sehr leicht zu beheben. Da macht es richtig "klick" oben im Denkorgan. "Schau doch gefälligst richtig hin, was in der Vorlage genau steht..." :-)

ciao
gustav

Angehängte Dateien:
#8113729

Moritz L. schrieb:

Hans schrieb:

Ob eine IDE gut oder schlecht ist hängt nun wirklich nicht davon ab, wie einfach sie sich installieren läßt.

Für einen Anfänger hängt es davon ab.

Sorry, wer nicht in der Lage ist die Entwicklertools (im weitesten Sinne) zu installieren, sollte unbedingt darüber nachdenken, ob Softwareentwicklung für ihn die richtige Spielwiese ist.
Mittlerweile ist die Installation der Tools so einfach, daß das jeder hin bekommen sollte. Worin besteht die Schwierigkeit ein Setupprogramm unter Windows auszuführen und gegebenenfalls dabei ein paar Fragen zu beantworten. Wenn man mit den Fragen nichts anzufangen weis (was schon bedenklich ist, s.o.), dann nimmt man die Voreinstellung des Installeres, denn diese sind oftmals sinnvoll. Für MacOS und Linux gilt ähnliches, denn auch da sind die Programme in den Paketen so geschnürt, daß man am Ende eine lauffähige Entwicklungsumgebung hat.

Moritz L. schrieb:

Einen Installer ausführen sollte wohl jeder können, der programmieren will.

Also ich würde einem Anfänger ganz sicher nicht die Eclipse IDE empfehlen, um nur ein negatives Beispiel zu nennen. Da muss man viel zu viel machen, um es ans Laufen zu bringen.

Die Zeiten wo man bei Eclipse viel machen muß, um die IDE ans Laufen zu bekommen, sind lange vorbei. Das Einzige was man tun muß, ist den richtigen Installer auszuwählen der zur vorgesehen Aufgabe passt. Wenn ich z.B. Embedded machen möchte, dann tue ich halt gut daran das Paket "Eclipse IDE for Embedded C/C++ Developers" zu installieren. Da sind dann auch alle Basics dabei die ich für Embedded brauche.
Gerade mal ausprobiert und die aktuelle Eclipseversion für MacOS herunter geladen. Download und Installation waren in 2 Minuten erledigt und nach ein paar Sekunden wurde das Grundgerüst des ersten C-Projektes angezeigt. Auf "Build Project" geklickt und voila, Projekt compiliert. Bei Windows oder Linux wird es ähnlich einfach funktionieren, lediglich die Installation könnte etwas länger dauern, weil dort die Dateien in die passenden Verzeichnisse kopiert werden müssen. Das geht beim Mac recht fix weil man da das Image (.dmg Datei) einfach nach Programme zieht. Also wer das nicht hinbekommt sollte sich ein neues Hobby suchen.

Viel mehr Probleme dürfte ein Anfänger mit den vielen Features haben die eine moderne IDE bietet. Da muß man sich wirklich erst mal einarbeiten.

: Bearbeitet durch User
#8113749

Norbert schrieb:

Diejenigen welche sich auf der Kommandozeile wohlfühlen reicht VI-lleicht schon ein einfacher Editor aus. ;-)

So ist es.

Norbert schrieb:

Ansonsten, etwas sehr Einfaches, Grafisches.

Wenn es bei Arduino bleiben soll, dann spricht nichts dagegen die Arduino IDE zu installieren. Die ist wirklich einfach und auch ein Anfänger sollte da nicht die Übersicht verlieren. Wenn man dann halbwegs sattelfest ist und sein Portfolio erweitern möchte sollte man über eine andere IDE nachdenken. Da ist dann u.a. Visual Studio Code eine durchaus gute Alternative, da man damit auch die mit der Arduino IDE erstellten Sketche weiter führen kann. Zudem ist VS Code durch die vielen Plugins auch recht universell einsetzbar. Ich nutze es neben Embedded auch noch für Python, PHP und Java Script. Eine Übersicht was mit VS Code so anstellen kann gibt es hier https://marketplace.visualstudio.com/vscode.
Ich mache mittlerweile mit VS Code recht viel, weil ich damit verschiedene Aufgaben mit einer IDE erledigen kann und die Bedienung dabei immer gleich ist.
Das mag jeder anders sehen und das ist auch nur ein Vorschlag von mir. Wer mit anderen Tools glücklich ist soll diese benutzen. Am Ende zählt das Ergebnis, wie man dahin kommt ist dabei nicht relevant. Es gibt auch viele Entwickler die auf die klassische Methode setzen, ihren Lieblingseditor benutzen und den Buildprozess dann im Terminal mit den passenden Tools durchführen.

#8113756

Moritz L. schrieb:

Verstehe ich nicht. Den Serial Monitor klickt man an. Dazu muss man nichts eintippen.

Nur das Anklicken des Serial Monitors reicht eben nicht. Der zeigt nur etwas an, wenn man auch etwas (seriell) ausgibt. Dazu muß man halt erst mal die serielle Kommunikation initialisieren was normalerweise mit Serial.begin(<Baudrate>) (bitte nicht steinigen wenn ich den Befehl nicht korrekt geschrieben habe) erfolgt, damit überhaupt eine serielle Kommunikation statt finden kann. Und dann muß man mit den passenden Befehlen auch was an die serielle Schnittstelle schicken, ansonsten bleibt es beim Serial Monitor bei dem schwarzen Adler auf schwarzen Grund.

#8113790

Hans schrieb:

Na da bist Du nicht auf dem neuesten Stand. Es gibt seit gut 4 Monaten die Version 2.3.10. Unabhängig davon kann man natürlich auch noch die 1.8.19 downloaden.

Vielleicht hätte ich in meinem Text noch etwas detaillierter herausarbeiten müssen, dass es hier um die letzte 1.x-er, 1.8-er, 1.8.19-er Version geht. Jedenfalls nicht um die Neueste 2.sonst_etwas. Mein Fehler.

#8113791

Hans schrieb:

Wenn es bei Arduino bleiben soll, dann spricht nichts dagegen die Arduino IDE zu installieren.

Es ging in diesem speziellen Fall nicht um Arduino, sondern um die Möglichkeit einfache Algorithmen ohne Hardware-Bezug direkt auf dem PC zu testen. Und um C zu erlernen. Hauptsächlich sogar genau darum.

#8113847

Norbert schrieb:

Vielleicht hätte ich in meinem Text noch etwas detaillierter herausarbeiten müssen, dass es hier um die letzte 1.x-er, 1.8-er, 1.8.19-er Version geht. Jedenfalls nicht um die Neueste 2.sonst_etwas.

Ist eigentlich völlig wurscht welche Version, die Unterschiede sind nicht so gravierend.

#8113851

Norbert schrieb:

Es ging in diesem speziellen Fall nicht um Arduino, sondern um die Möglichkeit einfache Algorithmen ohne Hardware-Bezug direkt auf dem PC zu testen. Und um C zu erlernen. Hauptsächlich sogar genau darum.

Nöö, der Moritz war der Meinung das man das auf dem PC und nicht auf dem µC macht und hat dafür den QT Creator vorgeschlagen.
Wenn ich nicht völlig daneben liege, dann geht es dem TO um eine Lösung für sein Potiproblem (Beitrag "Ich möchte aus einer Spannung einen binärcode erzeugen"). Er hat sich nunmehr entschlossen das mit einem Arduino umzusetzen. Mit Programmierung hat er nicht arg viel am Hut, aber er muß es jetzt zwangsläufig tun, damit der Arduino das macht was er will. Mit irgendwelchen Testgeschichten auf dem PC wäre er vermutlich hoffnungslos überfordert, insofern hilft der Vorschlag vom Moritz dem TO nicht wirklich. Und natürlich kann man C auch durch das Programmieren eines µC erlernen, weil es völlig egal ist ob man die "einfachen Algorithmen" von einem µC oder einem PC durchrechnen läßt.
Ich habe mit C angefangen, weil ich einen µC programmieren wollte. Erst danach habe ich ein paar kleinere Progrämmchen für den Raspi geschrieben.

#8113991

Hans schrieb:

Und natürlich kann man C auch durch das Programmieren eines µC erlernen, weil es völlig egal ist ob man die "einfachen Algorithmen" von einem µC oder einem PC durchrechnen läßt.

Bei den Algorithmen, die im anderen Thread von Norbert gezeigt wurden, wäre es IMO aber doch praktisch, sie mal auf einem Rechner mit Stdin und -Out zu testen.

(Firma: Gast) #8114036

Sheeva P. schrieb:

ie mal auf einem Rechner mit Stdin und -Out zu testen.

Das spielt doch keine Rolle, ob das Kind stdout, Serial.print oder cout heißt. Und dem Arduino tut das auch nicht weh!

1
  
2
#include <Streaming.h> // die Lib findest du selber ;-)
3
Print &cout = Serial; // cout Emulation für "Arme"
4

5
void setup() 
6
{
7
  Serial.begin(9600);
8
  cout << F("Start: ") << F(__FILE__) << endl;
9
}
10

11
void loop() 
12
{
13

14
}
: Bearbeitet durch User
#8114053

Arduino F. schrieb:

Das spielt doch keine Rolle, ob das Kind stdout, Serial.print oder cout heißt.

gdb anyone? Single step, Variablen anschauen, modifizieren, restart, usw.
Gerade für Anfänger eine Erleuchtung und auch Hilfe beim Verstehen von unbekannten Algorithmen.

Hier mal grafisch mit geany und per bash command line. Also einmal mit klicken, einmal mit tippen.

Angehängte Dateien:
#8114188

Norbert schrieb:

Single step, Variablen anschauen, modifizieren, restart, usw. Gerade für Anfänger eine Erleuchtung und auch Hilfe beim Verstehen von unbekannten Algorithmen.

Nun das geht mit der passenden IDE und einer Debugging Schnittstelle (JTAG) auch mit einem µC.
Ich habe das selbst schon mit einem MSP430xx von TI und der CCS IDE (Code Composer Studio - einer auf Eclipse basierenden IDE von TI) gemacht.
Beim Arduino (Nano) ist es schwierig, weil dieser keine passende Hardwaredebugging Schnittstelle hat. Dennoch soll es mit VS Code und Platform IO Erweiterung funktionieren. Wie es genau geht ist im Netz beschrieben. Ehrlicherweise muß ich sagen, daß ich es selbst noch nicht ausprobiert habe.
Bei den beliebten ESP32 gibt es Modelle mit integriertem USB/JTAG, wo das Debugging mit VS Code/Platform IO oder auch mit der neuen Arduino IDE funktioniert.

Langer Rede kurzer Sinn, es hängt schlichtweg von der verbauten HW ob man direkt debuggen kann oder nicht. Es macht schon durchaus Sinn manche Dinge auf der Zielhardware (µC) zu machen, insbesondere dann, wenn man mit seiner Software die HW des µC anspricht.

#8114194

Hans schrieb:

Langer Rede kurzer Sinn, es hängt schlichtweg von der verbauten HW ob man direkt debuggen kann oder nicht.

Die neueren ATtiny bieten ja UPDI.

Es macht schon durchaus Sinn manche Dinge auf der Zielhardware (µC) zu machen, insbesondere dann, wenn man mit seiner Software die HW des µC anspricht.

Andererseits sind AVRs so einfach aufgebaut, daß Versuch-Irrtum binnen weniger Sekunden ausprobiert werden kann.
Wenn man volle Kontrolle bei 8-Bittern haben möchte, bietet sich Assembler an ;-)

#8114202

Mit dem Minicore kann die Arduino IDE den ATmega328 debuggen. Als Debugger und Programmieradapter bietet sich ein zweiter Arduino Nano mit der dw-link Firmware an.

Allerdings behindert ein Kondensator am Reset Pin des Arduino Nano Boardes die DebugWire Kommunikation. Der muss runter, was sich wiederum auf die Aktivierung des Bootloaders auswirkt. Lange Rede, kurzer Sinn: suboptimal für Anfänger.

Mit neueren Boards die eine CPU mit ARM Cortex-M Kern haben, haben es die Anfänger leichter, denn bei denen funktiert das Debugging in der Arduino IDE out of the Box.

So sehr ich die 8 Bit AVR mag, ich schätze, dass sie in 5 Jahren von der Bildfläche der Hobbybastler verschwunden sein werden.

#8114206

Hans schrieb:

Nun das geht mit der passenden IDE und einer Debugging Schnittstelle (JTAG) auch mit einem µC.

Wir reden hier von Arduino und der IDE

Und es geht darum völlig µC-unabhängigen Code in einem einfachen, Anfänger-tauglichen Umfeld zu testen. So langsam wird es mühsam, wenn man jedes Mal den kompletten Thread-Verlauf erklären muss.

#8114246

Arduino F. schrieb:

Sheeva P. schrieb:

ie mal auf einem Rechner mit Stdin und -Out zu testen.

Das spielt doch keine Rolle, ob das Kind stdout, Serial.print oder cout heißt. Und dem Arduino tut das auch nicht weh!

Ja äh also... da braucht man erstmal eine Baudrate, die dann auch noch auf beiden Seiten gleich sein muß, dann muß man damit Serial.begin() aufrufen und ein Terminalprogramm oder den Serial Monitor der Arduino-IDE damit konfigurieren, und Formate kann Serial.print() meines Wissens auch nicht, im Gegensatz zu (std::)printf() aus den stdio.h oder cstdio Headern.

Vielleicht sind Deine Anfängerzeiten ja schon eine Weile her, aber für Anfänger sind das alles Hürden, die bei einem simplen printf() nicht überwunden werden müssen. In dem anderen Thread hatte jemand Probleme mit Arduinos Serial-Library, weil er die Sache mit der Groß- und Kleinschreibung nicht beachtet hat.

Irgendwie habe ich bei Deinen Ausführungen häufig das Gefühl, daß Du vergessen hast, was ein Anfänger ist und wie man Anfängern etwas beibringen kann. Das ist schade, denn mit Deiner Erfahrung könntest Du das sicher gut, wenn Du diesen Aspekt beachten könntest.

#8114254

Sheeva P. schrieb:

Ja äh also... da braucht man erstmal eine Baudrate, die dann auch noch auf beiden Seiten gleich sein muß, dann muß man damit Serial.begin() aufrufen und ein Terminalprogramm oder den Serial Monitor der Arduino-IDE damit konfigurieren, und Formate kann Serial.print() meines Wissens auch nicht, im Gegensatz zu (std::)printf() aus den stdio.h oder cstdio Headern. Vielleicht sind Deine Anfängerzeiten ja schon eine Weile her, aber für Anfänger sind das alles Hürden,

Diese Hürde sehe ich nicht. Serial.print() ist einfach zu schreiben und man findet direkt Beispiele. Zumindest ich hatte damit keinerlei Probleme, die sehe ich eher bei den Funktionen mit Formatierung. Die Handhabung der Arduiono-IDE zwecks serieller Anzeige ist ja wohl äußerst simpel.

Ihr solltet differenzieren, ob man zwecks Debugging ein paar Werte sehen will oder dauerhaft chice Ausgaben zum Bildschirm braucht.

Sheeva P. schrieb:

Irgendwie habe ich bei Deinen Ausführungen häufig das Gefühl, daß Du vergessen hast, was ein Anfänger ist ..

Das gilt schon länger für diesen gesamten Thread und ist keinesfalls von nur einer einzigen Person verschuldet.

#8114291

Arduino F. schrieb:

Sheeva P. schrieb:

printf()

Auch wenn es dich jetzt überrascht: Arduino kann auch printf(), sogar mit float, wenn man denn ernstlich will.

.. aber verbraucht dafür relativ viel Speicher, der bei ernsthaften Anwendungen gerne knapp wird.

Vielleicht solltest du mal aufhören alle Arduino User/Anfänger für blöd zu erklären.

Sheeva P. schrieb:

Irgendwie habe ich bei Deinen Ausführungen häufig das Gefühl, daß Du vergessen hast, was ein Anfänger ist und wie man Anfängern etwas beibringen kann.

#8114300

Norbert schrieb:

Wir reden hier von Arduino und der IDE

Du hast meinen Post bis zum End gelesen? Nein, ganz bestimmt nicht, sonst hättest Du das nicht geschrieben.

Norbert schrieb:

Und es geht darum völlig µC-unabhängigen Code in einem einfachen, Anfänger-tauglichen Umfeld zu testen.

Du meinst der TO hätte ein Interesse daran? Nein hat er nicht, der möchte den Nano für seine Zwecke zum Laufen bekommen. An tiefer Gehendem hat er kein Interesse.
Zudem warum sollte ich völlig µC unabhängigen Code testen wollen, wenn das Ziel meiner Bemühungen eine Programmiersprache zu erlernen am Ende das Programmieren eines µC ist? Diese Logik erschließt sich mir nicht wirklich. Da teste ich doch lieber mit dem Ziel meiner Begierde.

Norbert schrieb:

So langsam wird es mühsam, wenn man jedes Mal den kompletten Thread-Verlauf erklären muss.

Das liegt doch an Dir.

Sheeva P. schrieb:

und Formate kann Serial.print() meines Wissens auch nicht, im Gegensatz zu (std::)printf() aus den stdio.h oder cstdio Headern.

Dafür gibt es bei Arduino sprintf(), womit man formatierte Ausgaben problemlos hin bekommt. printf() gibt es wohl auch.

Sheeva P. schrieb:

Ja äh also... da braucht man erstmal eine Baudrate, die dann auch noch auf beiden Seiten gleich sein muß, dann muß man damit Serial.begin() aufrufen

Das ist natürlich die absolute Schwierigkeit. Schau Dir einfach mal die Beispielprogramme der Arduino IDE an, da ist das meist das Erste was gemacht wird. Auch logisch, weil Ausgaben auf dem Arduino ohne zusätzliche HW, die natürlich auch angesteuert werden muß, schlecht möglich sind. Da bleibt zur Ausgabe nur die serielle Kommunikation. Allerdings ist eh über die IDE vorhanden, weil darüber auch die Programmierung läuft.

Sheeva P. schrieb:

n dem anderen Thread hatte jemand Probleme mit Arduinos Serial-Library, weil er die Sache mit der Groß- und Kleinschreibung nicht beachtet hat.

Das hat aber nichts mit der Arduino Serial-Library zu tun. Das ist schlichtweg dem zu Grunde liegenden C++ geschuldet, welches bekanntermaßen case-sensitive ist. Arduino F. hatte das aber schon in einem Post angemerkt.

#8114317

Hans schrieb:

Sheeva P. schrieb:

und Formate kann Serial.print() meines Wissens auch nicht, im Gegensatz zu (std::)printf() aus den stdio.h oder cstdio Headern.

Dafür gibt es bei Arduino sprintf(),

Pufferüberlauf, ick hör Dir trappsen. Meinst Du nicht, daß snprintf() die bessere Wahl ist?

Davon abgesehen muß man beide Funktionen natürlich erstmal kennen. Ich erkenne da einen Fehler der Kategorie Beginner Underrun.

Klar, man kann sich ja immer eine Funktion aus dem feinen Manuel picken und dann sagen, daß es doch ganz einfach ist. Steht ja im Manuel, ne, und warum sollte so ein Anfänger das nicht erstmal auswendig lernen. Haben wir doch in den Achtzigern auch gemacht. Der soll erstmal schwitzen, das faule Schwein, und leiden und sich das Privileg verdienen, programmieren zu dürfen!

Sheeva P. schrieb:

Ja äh also... da braucht man erstmal eine Baudrate, die dann auch noch auf beiden Seiten gleich sein muß, dann muß man damit Serial.begin() aufrufen

Das ist natürlich die absolute Schwierigkeit.

Nö, aber hat das denn jemand behauptet? Nein, niemand. Du "widerlegst" hier also etwas, das Du Dir selbst ausgedacht hast. Wow, gut gemacht, einen Tusch für die Glanzleistung, Applaus, Applaus!

Trotzdem ist es aber zunächst einmal eine Hürde, und damit nicht, wie Dr. Superhirn oben behauptet hatte, genau so einfach wie printf(). Es ist nicht so einfach, weil je ein Setup auf dem Arduino und eins bei dem Endpunkt auf der anderen Seite gemacht werden muß. Und auch, wenn das einem erfahrenen User wie Dir, mir, Dr. Superhirn und Norbert als bezwingbare Hürde erscheint: es ist eine Hürde, und für einen Anfänger ist ihre Höhe größer als Null.

Antwort schreiben

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.