Forum: Offtopic Noch so ein Arduino-Diskussions-Thread.


von Maik M. (sonnenjunge)


Lesenswert?

Sehr geehrte Damen und Herren,

trotz viel Erfahrung im Umgang mit dem PC (ab 386er) habe ich nie den 
Einstieg in die Programmierwelt geschafft. Dies hat sich durch den 
Arduino und zwei Freunden geändert. Grund hierfür war nicht die 
mangelnde Intelligenz, sondern vielmehr der falsche Ansatz, wie auch 
Fehlinformationen.

Mittlerweile übersteigt das Angebot die Nachfrage und die Fülle an 
Informationen werden unüberschaubar.
Ich bin 37 Jahre alt, habe Frau und Kind und fühle mich noch jung genug 
für ein Leben abseits von Freaks und Geeks. Sorry! :)

Der Umgang mit Mikrocontrollern macht mir Spass und im Gegensatz zu rein 
softwaretechnischen Lösungen ist der Markt offen für neue Ideen.

Die letzten Wochen habe ich mich enorm in die Welt der Mikrocontroller 
gestürzt, da ich das Gefühl hatte, vieles nachholen zu müssen. 
Vielleicht auch auf Kosten meiner Familie und Freunde.

Meine grundsätzliche Einstellung besagt, dass wenn ich etwas mache, dann 
richtig und so bin ich bei euch gelandet. Auch wenn die Entwicklerboards 
doch alle ähnlich aufgebaut sind, ist der Umstieg zu AVR-GCC doch ein 
Quantensprung den ich nun versuche abzuwägen. Ich stelle mir nun also 
die Frage. Ist es für mich lohnenswert, diesen Quantensprung zu wagen, 
oder komme ich mit dem bisherigen simplen Umgang weiterhin bestens aus.

Ich weiss, dass es bereits Diskussionen über dieses Thema gab, aber mir 
geht es auch um das soziale Umfeld.
Ausserdem sehe ich parallelen zwischen Assembler und Hochsprachen zu AVR 
und Arduino. Es gibt ja welche, die behaupten, dass das Lernen von 
ASM-Code überflüssig ist. Ich sehe es eher, dass der Umgang mit ASM wie 
eine Befreiung aus der Matrix ist, aber es gibt Leute, die sich in der 
Illusion wohl fühlen. :)

Ich erwarte von euch eine respektvolle und nette Konversation... und 
vielleicht werde ich überzeugt, dass der Umstieg doch unausweichlich 
ist.

Mit freundlichen Grüßen,
Sonnenjunge

: Verschoben durch Moderator
von Volker S. (vloki)


Lesenswert?

Äh, um was geht's nochmal?

von c r (Gast)


Lesenswert?

Verstehe deine Absicht nicht. Also im Endeffekt wieder ein ASM vs. 
höhere Sprachen-Thread?
Und was hat das mit Arduino zu tun?

von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> ist der Umstieg zu AVR-GCC doch ein
> Quantensprung

Arduino ist reines echtes AVR-GCC C++, nur mit ein paar Blümchen dran, 
auf die man auch verzichten kann

von c r (Gast)


Lesenswert?

Aber ganz generell: Umsteigen auf neue "Tools" ist dann sinnvoll, wenn 
es:
A) Notwendig ist, weil Aufgaben mit den bekannten Werkzeugen nicht mehr 
erledigt werden können
B) Man Spaß am Erlernen des neuen Werkzeugs hat

Da bei dir wohl beide Bedingungen nicht erfüllt sind, lass es doch 
einfach, bis sich das ändert (was vielleicht niemals passiert und das 
ist ok)

von Falk B. (falk)


Lesenswert?

@ Maik Martin (sonnenjunge)

>Der Umgang mit Mikrocontrollern macht mir Spass und im Gegensatz zu rein
>softwaretechnischen Lösungen ist der Markt offen für neue Ideen.

Klingt wie ne Rede auf dem IIX Parteitag der SED . . .

>doch alle ähnlich aufgebaut sind, ist der Umstieg zu AVR-GCC doch ein
>Quantensprung den ich nun versuche abzuwägen.

Dann bist du aber schlecht informiert. Unter der Arduino-Haube steckt 
schon lange der gcc, wenn gleich natürlich dessen Version mit AVR und 
allen anderen umgehen können muss.

> Ich stelle mir nun also
>die Frage. Ist es für mich lohnenswert, diesen Quantensprung zu wagen,
>oder komme ich mit dem bisherigen simplen Umgang weiterhin bestens aus.

Niemand zwingt dich, für alles und jedes NUR die Arduino-Funktionen 
(Klassen) zu nutzen. Du kannst auch in einem Arduino-Sketch Register 
direkt ansprechen.

>Ausserdem sehe ich parallelen zwischen Assembler und Hochsprachen zu AVR
>und Arduino.

Da bist du aber eine Minderheit. Denn Arduino ist C mit einer Prise C++, 
avr gcc ist im Normalfall reines C.

> Es gibt ja welche, die behaupten, dass das Lernen von
>ASM-Code überflüssig ist.

Ist es für die meisten auch.

> Ich sehe es eher, dass der Umgang mit ASM wie
>eine Befreiung aus der Matrix ist,

NEO ist tot, er hat uns vor den Maschinen gerettet.

>vielleicht werde ich überzeugt, dass der Umstieg doch unausweichlich
>ist.

Welcher Umstieg denn?

Klar kann man mit Atmelstudio und "normalem" avr gcc seine Projekte 
besser verwalten und in einzelne Quelldateien aufteilen, man kann direkt 
Compileroptionen einstellen etc. Das alles ist beim Arduino unter der 
Haube versteckt, um die zentrale Zielgruppe damit nicht zu überlasten. 
Ist auch OK.

von Markus F. (mfro)


Lesenswert?

Man kann mit Arduino all die tollen Sachen machen, die man "klassisch" 
mit einem C++-Compiler auch machen kann. Ausnahmslos.

Allerdings auch eine ganze Menge Mist. Und alles, was passieren kann, 
passiert.

Soll heissen: die Arduino-Umgebung enthält einen vollwertigen 
C++-Compiler. Gleichzeitig versucht sie, den Umgang damit so einfach zu 
machen, dass auch Laien damit etwas zustande bringen. Das führt dazu, 
dass Vielerlei von dem, was im Umlauf ist, eben auch von Laien gemacht 
ist, die nicht so recht wissen, was sie tun. Hier die Spreu vom Weizen 
zu trennen, ist (als Laie) schier unmöglich.

von Maik M. (sonnenjunge)


Lesenswert?

Vielen Dank für zügige Antworten!

Volker SK, kurz gesagt: Lohnt es sich für einen gutaussehenden, jungen 
Mann noch mehr Zeit vorm Computer zu verbringen... :p

c r, nicht direkt. Ich kenne nur Arduino, bin aber offen für Neues.

Arduino Fanboy, danke. Eigentlich mag ich ja Blumen, werde ich aber mal 
näher in Betracht ziehn.

und nochmal c r, zu Antwort B stimme ich dir nicht ganz überein. Ich bin 
stets auf der Suche mich zu Verbessern, das bezieh ich aber nicht nur 
auf die imaginäre Welt. Eine Verbesserung könnte auch Nachteile mit sich 
ziehn, wie in meinem Fall.

Ich nehme mal an, dass die meisten hier anfingen, als es noch kein 
Arduino und somit nicht viele Möglichkeiten bzw. Alternativen gab.
Vielleicht würde es mir helfen, wenn jemand etwas von seiner Entwicklung 
erzählt.

Wie lange habt ihr z.B. für die Basics im Umgang mit AVR/-/GCC/-libc 
etc. gebraucht?

von c r (Gast)


Lesenswert?

Für mich klingt das alles sehr nach "Ich würde gerne XY können, 
motiviert mich mal, damit ich mich ransetze"

Nur hab ich noch nicht wirklich verstanden, wo du eigentlich umsteigen 
bzw. was du neue erlernen willst.

Von der Arduino IDE auf eine andere?
Von C(++) auf ASM?

Maik M. schrieb:
> Lohnt es sich für einen gutaussehenden, jungen
> Mann noch mehr Zeit vorm Computer zu verbringen... :p

Ich dachte du bist 37 ;)

von Eddy C. (chrisi)


Lesenswert?

Ich sage jetzt mal so:

Stelle das Projekt in den Vordergrund.

Dann merkst Du von ganz alleine, was das Richtige für Dich ist (C vs. 
ASM) und Du wirst auch merken, dass Du mit C sehr leicht ans Ziel 
kommst, solange es nicht um Trivialitäten oder Übungen geht.

Und wenn die eine Stelle in C zu langsam läuft, dann ist der Moment 
gekommen, sich über ASM Gedanken zu machen.

Aber ehrlich: Dann machst Du Dir lieber Gedanken, einen 32-Bitter 
einzusetzen. Da hast Du Deine Zeit besser investiert.

BTW: C ist die Befreiung, nicht ASM. Abstraktion hat den Zweck, Dinge zu 
vereinfachen.

von H-G S. (haenschen)


Lesenswert?

Du musst dich entscheiden:

Willst du etwas machen für einen Controller den es vielleicht bald nicht 
mehr gibt auf einem PC samt Entwicklungsumgebung die es mit Sicherheit 
in einigen Jahren nicht mehr gibt/funktioniert ?

Oder willst du dir ein langlebiges Arbeitstier von Controller raussuchen 
und in (ewigem ?) ASM befehligen ?

Vielleicht reicht dir ja das (fertige) Projekt selber oder ein Foto auf 
Facebook dann ist Version A ausreichend.

von Manfred P. (pruckelfred)


Lesenswert?

Eddy C. schrieb:
> Stelle das Projekt in den Vordergrund.
> Dann merkst Du von ganz alleine, was das Richtige für Dich ist

Das hast Du sehr gut formuliert, ich teile Deine Ansicht.

H-G S. schrieb:
> Du musst dich entscheiden:
>
> Willst du etwas machen für einen Controller den es vielleicht bald nicht
> mehr gibt auf einem PC samt Entwicklungsumgebung die es mit Sicherheit
> in einigen Jahren nicht mehr gibt/funktioniert ?
>
> Oder willst du dir ein langlebiges Arbeitstier von Controller raussuchen
> und in (ewigem ?) ASM befehligen ?

Das ist kompletter Unfug. Auf Langlebigkeit kann man sich nicht 
verlassen, weder beim Contoller noch bei der Entwicklungsumgebung. ASM 
ist sehr nahe an der Hardware, wird der Conroller vom Markt genommen, 
geht garnichts mehr.

Wenn Maik in C++ programmiert (Arduino), ist die Chance weitaus höher, 
den Code auf einen anderen Controller übertragen zu können!

--------

Gucke ich auf meine Person: Lange vor Arduino hatte ich ein eigenes 
µC-Board, welches in Assembler programmiert wurde und von den 
Abmessungen und Ports her dem Uno vergleichbar einzusetzen wäre. 
Aufgrund beruflicher Veränderungen habe ich dann viele Jahre keinen µC 
mehr angefasst.

Für private Basteleien wurde vor drei Jahren die Notwendigkeit eines µC 
akut, was tun? Die alte Hardware mit Assembler wieder hoch, Kunstgriffe 
anzetteln, den Altkram auf einem modernem PC vielleicht noch zum Fliegen 
zu bekommen? Nee, ich habe mir mal zwei China-Unos gekauft und genau 
angeschaut. Seitdem hänge ich auf Arduino fest und hatte noch keinen 
Grund, tiefer zu gehen.

Gucke ich in mein berufliches Umfeld: Frueher hat der Kollege Assembler 
programmiert, heute sind die Controller ein vielfaches leistungsfähiger 
und erheblich schneller, er schreibt alles in C.

von Alex G. (dragongamer)


Lesenswert?

H-G S. schrieb:
> Du musst dich entscheiden:
>
> Willst du etwas machen für einen Controller den es vielleicht bald nicht
> mehr gibt auf einem PC samt Entwicklungsumgebung die es mit Sicherheit
> in einigen Jahren nicht mehr gibt/funktioniert ?
>
> Oder willst du dir ein langlebiges Arbeitstier von Controller raussuchen
> und in (ewigem ?) ASM befehligen ?
Hä? Verwechselst du da nicht was?

Wenn man etwas in Arduino entwickelt, kann man das Werk recht 
komfortabel auf einen neuen/aktuelleren Microcontroler übertragen.

Dein ASM Programm bekommst du niemals ohne große Mühe bzw. Vorarbeit auf 
einen anderen Microcontroler…

Und so schnell verschwindet Arduino auch sicher nicht mehr vom Markt. 
Das Zeug gibt es schon seit über 10 Jahren.

: Bearbeitet durch User
von Maik M. (sonnenjunge)


Lesenswert?

Hallo,

vielen vielen Dank für die ausführlichen Ratschläge.

Dass es den Arduino bald nicht mehr gibt bezweifel ich. Vielleicht wird 
der Orginale durch die Nachbauten oder duch bessere Entwicklerboards 
verdrängt.

Ja, das ist wohl wahr, dass es durch die C-Programmierung zu 
Zeitverzögerungen kommt. Da werde ich wohl nicht rumkommen und doch 
etwas tiefer in die Materie tauchen müssen, wenn die Zeit gekommen ist.

H-G S. schrieb:
> Vielleicht reicht dir ja das (fertige) Projekt selber oder ein Foto auf
> Facebook dann ist Version A ausreichend.

Naja, ich versuche viel mit dem Mikrocontroller zu lösen (Alarmanlage, 
Lüftersteuerung, Klimaanlage, Wetterstation. Sind zwar Standartprojekte, 
aber sie werden bei mir auch eingesetzt.

von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Ja, das ist wohl wahr, dass es durch die C-Programmierung zu
> Zeitverzögerungen kommt.

Erstens ist Arduino immer noch C++ und nicht C.

Und Verzögerungen werden von C nicht wirklich erzeugt.
Außer man will das so, und verwendet irgendwelche delays.

Eher im Gegenteil, gegenüber ASM, wird die Projektentwicklung eher 
beschleunigt.

von H-G S. (haenschen)


Lesenswert?

Gestern sah ich wieder ein youtube video wo so ein c++ guru ein spiel 
für den c64 schrieb...der hackt da einfach rum und editiert wild 
drauflos...alles aus dem kopf scheinbar hat er den ganzen code im hirn 
?

Einen programmablaufplan kennt der wahrscheinlich nicht...eben ein typ 
wo das ganze programm im hirn erscheint...also ich kriege kopfschmerzen 
von soviel bedeutingsschweren symbolen und referenzen wie sie in c++ 
vorkommen...aber als ich jünger war stemmte ich auch mal einen terrain 
editor in c ohne flussplan...hängt wohl vom gehirnalter ab.

von Alex G. (dragongamer)


Lesenswert?

Objektorientierung macht soetwas möglich!
Hat sich nicht umsonst durchgesetzt.

von Carl D. (jcw2)


Lesenswert?

H-G S. schrieb:
> Gestern sah ich wieder ein youtube video wo so ein c++ guru ein spiel
> für den c64 schrieb...der hackt da einfach rum und editiert wild
> drauflos...alles aus dem kopf scheinbar hat er den ganzen code im hirn
> ?
>
> Einen programmablaufplan kennt der wahrscheinlich nicht...eben ein typ
> wo das ganze programm im hirn erscheint...also ich kriege kopfschmerzen
> von soviel bedeutingsschweren symbolen und referenzen wie sie in c++
> vorkommen...aber als ich jünger war stemmte ich auch mal einen terrain
> editor in c ohne flussplan...hängt wohl vom gehirnalter ab.

Der erzählt aber auch wie lange er seine Demo vorbereitet hat.
Nix einfachmalso! Außerdem viel CopyPaste.

Wenn aber ansatzweise verstanden hat, was da vor sich ging, C++ als 
Implemtierungssprache eines Videospiels auf C64, mit den diversen 
Compiletime-Berechnungen, dann kann man nur begeistert sein.

von Maik M. (sonnenjunge)


Lesenswert?

Arduino F. schrieb:
> Erstens ist Arduino immer noch C++ und nicht C.

Ja, stimmt. Bisher konnte ich zwischen den Zweien noch keine großen 
Unterschiede feststellen, aber ich bin ja auch noch nicht lange dabei.


Damals wollte ich auch einen C64 zum Zocken, ich kann mich noch gut an 
die rießigen Disketten erinnern. Bekam dann aber vernünftigerweiße einen 
PC.

von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Bisher konnte ich zwischen den Zweien noch keine großen
> Unterschiede feststellen,

z.B. hier sind die wesentlichen beschrieben:
https://wr.informatik.uni-hamburg.de/_media/teaching/sommersemester_2013/cgk-13-meyer-c-vs-c_-ausarbeitung.pdf

von Robert L. (lrlr)


Lesenswert?

ich versuche mal die Frage von "Maik M" zu verstehen:

Du hast bisher in der Arduino IDE, per Copy&Past und durch kleine 
Änderungen von bestehenden Projekten und/oder indem du solange in Foren 
lästig warst, bis dir jemand den Code angepasst hat ein paar Arduino 
Projekte realisiert. Und jetzt möchtest du selber Programmieren?

Dann lautet die Antwort: lass es..

von Maik M. (sonnenjunge)


Lesenswert?

Robert L. schrieb:
> ich versuche mal die Frage von "Maik M" zu verstehen:
>
> Du hast bisher in der Arduino IDE, per Copy&Past und durch kleine
> Änderungen von bestehenden Projekten und/oder indem du solange in Foren
> lästig warst, bis dir jemand den Code angepasst hat ein paar Arduino
> Projekte realisiert. Und jetzt möchtest du selber Programmieren?
>
> Dann lautet die Antwort: lass es..

Ich finde es immer wieder erstaunlich, wieviel die Leute glauben von mir 
zu wissen und das von wenigen Zeilen ASCII.

Bevor du weiterratest und falsche Schlussfolgerungen ziehst, lass es 
einfach bleiben. Danke.

von Maik M. (sonnenjunge)


Lesenswert?

...ich gebe zu, dass ich anfangs mit Fremdcode experimentiert habe, aber 
mittlerweile verstehe ich das Prinzip und der Compiler scheint mich zu 
verstehn.

Folgenden Code habe ich mir selbst ausgedacht. Er scheint Ähnlichkeiten 
zu anderen zu haben, doch ist er meiner Meinung nach besser.

Für die Meisten hier vermutlich ein Kinderspiel, aber für mich mein 
erster Programmierversuch.
1
int previosState = 1;
2
int currentState = 0;
3
int counter = 0;
4
int val;
5
6
void setup() {
7
  Serial.begin(9600);
8
  Serial.println("Zaehlerstand: ");
9
10
}
11
12
void loop() {
13
  if (Serial.available() == true) {
14
    val = Serial.read();
15
    if (val == 'c') {
16
      if (previosState != currentState) {
17
        counter++;
18
        Serial.print("Nummer: "); Serial.println(counter);
19
        currentState = 1;
20
      }
21
    }
22
23
      currentState = 0;
24
25
  }
26
}

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Maik M. schrieb:
> Ich finde es immer wieder erstaunlich, wieviel die Leute glauben von mir
> zu wissen und das von wenigen Zeilen ASCII.

Schließlich ist das hier das Hellseherforum Nummer eins!


> Bevor du weiterratest und falsche Schlussfolgerungen ziehst, lass es
> einfach bleiben. Danke.

Na du wirst doch m´nicht seine Qualifikation in Abrede stellen wollen.
Schließlich sind hier nur die Weisesten der We(a)isen aktiv.

Namaste

von Karsten U. (herr_barium)


Lesenswert?

Winfried J. schrieb:
> Schließlich ist das hier das Hellseherforum Nummer eins!

Das stimmt. Was mich allerdings erstaunt, ist das Fehlen jeglicher 
Angebote von Glaskugeln im Marktforum.

von Johannes S. (Gast)


Lesenswert?

Maik M. schrieb:
> Für die Meisten hier vermutlich ein Kinderspiel, aber für mich mein
> erster Programmierversuch.

ok, aber kein guter. Diese states wird der Compiler einfach 
wegoptimieren. Kommentiere mal alle aus und das Programm wird das 
gleiche wie vorher machen.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Die Kristallkugeln werden hier schwarz gezaubert schau mal beim owner 
nach der heißt sogar mit Namen so. Dafür wird der magische Rauch beim 
ableben der ICs aufgefangen, die Seeelen der Chips, du glaubst nicht was 
die rumheulen bis tu die in Kugelform beinander hast. Ich füttere immer 
die Kugelfische damit, biss sie schön rund sind und dann schneide ich 
einfach den Kugelfisch drumrum weg. feddisch

Namaste

: Bearbeitet durch User
von Einer K. (Gast)


Angehängte Dateien:

Lesenswert?

Maik M. schrieb:
> Folgenden Code habe ich mir selbst ausgedacht. Er scheint Ähnlichkeiten
> zu anderen zu haben, doch ist er meiner Meinung nach besser.
>
> Für die Meisten hier vermutlich ein Kinderspiel, aber für mich mein
> erster Programmierversuch.

Ja, ist ein Anfang!
Und gar nicht mal schlecht


Habe das mal gefegt, und etwas in meine Richtung gerückt:
1
#include "Counter.h"
2
3
using CounterType = Counter<unsigned int>;
4
CounterType counter;
5
6
void serialEvent()
7
{
8
 switch(Serial.read())
9
  {
10
    case 'c' : counter++;
11
               break;
12
               
13
    case 'r' : counter.reStart();
14
               break;
15
  }
16
}
17
 
18
void onChangeCounter(CounterType & counter)
19
{
20
    Serial.print("Nummer: "); Serial.println(counter); 
21
}
22
 
23
void setup() 
24
{
25
  Serial.begin(9600);
26
  Serial.println("Zaehlerstand: ");
27
  counter.onChange(onChangeCounter);
28
}
29
30
void loop() 
31
{
32
}
Wobei das sicherlich auch noch nicht DAS Musterexemplar ist.

EDIT:
Noch einmal verschlimmbessert, mit einem Counter aus meiner Wühlkiste

von Maik M. (sonnenjunge)


Lesenswert?

Arduino F. schrieb:
> z.B. hier sind die wesentlichen beschrieben:
> 
https://wr.informatik.uni-hamburg.de/_media/teaching/sommersemester_2013/cgk-13-meyer-c-vs-c_-ausarbeitung.pdf

So, habe mir das mal durchgelesen und finde, dass Arduino weder C, noch 
C++ ist.

Die Operatoren << oder :: kenn ich nicht und sehen für mich absolut 
unlogisch aus, genauso wie cout und cin.
cin könnte eine Art Serial.read() sein, wobei ich dafür ein anderes Wort 
benutzt hätte. Da kriegt man ja Kopfschmerzen.

Ich würde somit Arduino eher ein C-für Einsteiger nennen. C++ sieht eher 
aus wie ein Java++.

von Alex G. (dragongamer)


Lesenswert?

Maik M. schrieb:
> Die Operatoren << oder :: kenn ich nicht und sehen für mich absolut
> unlogisch aus, genauso wie cout und cin.
> cin könnte eine Art Serial.read() sein, wobei ich dafür ein anderes Wort
> benutzt hätte. Da kriegt man ja Kopfschmerzen.
Das hat garnichts mit Arduino zutun...

Daran merkt man einfach nur dass C++ halt mehrere Jahrzehnte alt ist.
Es ist durchaus schon lange an der Zeit es abzulösen - durch Rust - aber 
es gibt einfach zu viele Entwickler in C++.

von Maik M. (sonnenjunge)


Lesenswert?

Johannes S. schrieb:
> ok, aber kein guter. Diese states wird der Compiler einfach
> wegoptimieren. Kommentiere mal alle aus und das Programm wird das
> gleiche wie vorher machen.

Kannst du mir dafür ein Beispiel in Codeform geben?

Arduino F. schrieb:
> void serialEvent()
> {
>  switch(Serial.read())
>   {
>     case 'c' : counter++;
>                break;
>
>     case 'r' : counter.reStart();
>                break;
>   }
> }

Das mit dem Switch und Restart gefällt mir sehr gut. Letztendlich werde 
ich die serielle Eingabe durch digitalRead() o.Ä. ablösen. Ist halt die 
Frage ob man nicht einfach den Stecker des µC zieht und somit seinen 
Reset erhält.

Was mir auch gefällt ist, dass die Loop Funktion leer bleibt. Gibt es 
nicht sowas wie GOTO in Basic?

von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Gibt es
> nicht sowas wie GOTO in Basic?
Natürlich gibt es goto.
Sogar ein (unvollständiges) computed GoTo

von Maik M. (sonnenjunge)


Lesenswert?

Alex G. schrieb:
> Das hat garnichts mit Arduino zutun...
>
> Daran merkt man einfach nur dass C++ halt mehrere Jahrzehnte alt ist.
> Es ist durchaus schon lange an der Zeit es abzulösen - durch Rust - aber
> es gibt einfach zu viele Entwickler in C++.

Sehe ich auch so. Ausserdem würde ich Arduino auch nicht als 
objektorientiert einstufen. Wieso sagen dann alle, es sei C++?

von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Ich würde somit Arduino eher ein C-für Einsteiger nennen. C++ sieht eher
> aus wie ein Java++.
Du irrst!

Arduino ist C++
 :: und << sind üblich.
Zu << siehe google:"arduino streaming")
und :: sowieso.

Java ist nach C++ entstanden.
Ein Kind.

Maik M. schrieb:
> Wieso sagen dann alle, es sei C++?
Weil es das ist!

Oder, sage du mir, warum es das nicht ist...

von Maik M. (sonnenjunge)


Lesenswert?

Gut, man kann also durch einbinden einer weiteren Lib C++ Standarts 
verwenden. (https://playground.arduino.cc/Main/StreamingOutput)

Ist es aber nicht verständlicher wie ich es oben im Code habe und 
Serial.print() mehrfach in einer Zeile schreiben? "" + + "" sind schon 
ganz nett, aber das hätte man besser anpassen müssen.

Es gibt ganz gute Libs, vor allem wenn man sie oft verwendet. Ist das 
aber nicht eher eine Ablenkung des großen Ganzen?

von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Gut, man kann also durch einbinden einer weiteren Lib C++ Standarts
> verwenden.

Du bist verwirrt....
Das Streaming ist in allen C++ Varianten über irgendwelche Libs 
implementiert. Egal welcher Hersteller.
Es gehört nicht zum Kern C++ Sprachumfang.

von Maik M. (sonnenjunge)


Lesenswert?

Can I program the Arduino board in C?

In fact, you already are; the Arduino language is merely a set of C/C++ 
functions that can be called from your code. Your sketch undergoes minor 
changes (e.g. automatic generation of function prototypes) and then is 
passed directly to a C/C++ compiler (avr-g++). All standard C and C++ 
constructs supported by avr-g++ should work in Arduino. For more 
details, see the page on the Arduino build process.

Quelle: https://www.arduino.cc/en/Main/FAQ#toc13

von Einer K. (Gast)


Lesenswert?

Und?
C++, mit ein paar rosa Blümchen dran.
Dabei bleibts!

von Maik M. (sonnenjunge)


Lesenswert?

Arduino F. schrieb:
> Und?
> C++, mit ein paar rosa Blümchen dran.
> Dabei bleibts!

Wenn du es sagst, wird es wohl stimmen...

von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Wenn du es sagst, wird es wohl stimmen..

Anders rum!
Es stimmt, und darum sage ich es.

Beispiel:
In meinem Code verwende ich Templates und Klassen, zumindest eine 
Template Klasse.
Also kann es kein C sein.
Es kompiliert in der Arduino IDE, für beliebige AVR.
Das Kompilat zeigt das gewünschte Verhalten.

Das ist ein KO Kriterium.

von Maik M. (sonnenjunge)


Lesenswert?

Ich sage nicht, dass es das nicht ist. Ich finde nur, dass es auch nicht 
ganz zutrifft.
Man kann auch ausserhalb der Arduino IDE C++ für µC benutzen.

https://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_cplusplus

Ich merke schon, wir drehn uns im Kreis. Gut, die meisten Libs scheinen 
wohl in C++ geschrieben zu sein, vielleicht hast du deswegen Recht. 
Soweit bin ich einfach noch nicht.

Habe bereits kleine Programme in C unter Linux geschrieben. Bisher ist 
die Ähnlichkeit zum Arduino Syntax näher...

von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Man kann auch ausserhalb der Arduino IDE C++ für µC benutzen.
Das würde ich niemals anzweifeln.

Es gibt viel C++ außerhalb von Arduino.
Arduino ist NICHT der Nabel der Welt.

Maik M. schrieb:
> Gut, die meisten Libs scheinen
> wohl in C++ geschrieben zu sein, vielleicht hast du deswegen Recht.
Natürlich habe ich recht! (in dem Punkt)
Und die Schreiber der Libs sind auch auf dem Stand.
Darum können sie ihre Arbeit so tun, wie sie es tun.


PS:
Wenn ich dich bescheißen wollte, würden mich die anderen schon längst 
erschlagen haben.
Die nehmen kein Blatt vor den Mund.

von Maik M. (sonnenjunge)


Lesenswert?

Arduino Fanboy D. schrieb:
> Habe das mal gefegt, und etwas in meine Richtung gerückt:#include
> "Counter.h"

Hi Arduino-Fan,

ich hätte ein paar Fragen zum Verständnis des Codes.
Der µC wartet an der Stelle SerialEvent() auf Daten und solange da 
nichts kommt, macht er nichts? Nennt man das nicht Interrupt?
Wo genau liegt hier der Unterschied zu Serial.available?

Und dann gibts noch diese Funktion in der Lib. So wie ich es sehe, wird 
sie aber nicht aufgerufen..?
1
void onCount(CounterCallback callback)
2
      {
3
        onCountCallback = callback;
4
      }

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Der µC wartet an der Stelle SerialEvent() auf Daten und solange da
> nichts kommt, macht er nichts? Nennt man das nicht Interrupt?
Serial.event() wird aufgerufen, wenn Daten in der Empfangsfifo 
vorliegen.
Und nein. Das ist kein Interrupt.

Maik M. schrieb:
> Und dann gibts noch diese Funktion in der Lib. So wie ich es sehe, wird
> sie aber nicht aufgerufen..?
Das siehst du richtig!

Da sind übrigens noch mehr Methoden drin, welche in diesem Code nicht 
genutzt werden.

von Maik M. (sonnenjunge)


Lesenswert?

Scheint echt gut zu funktionieren.

Bin grad dabei einen Mix aus beiden Codes zu erstellen, aber habe noch 
keine Erfahrung mit eigenen Funktionen, Klassen usw...

Was meinst du mit Empfangsfifo?
Was ist ein Trigger und wozu ist das gut?
Woher weiss der Compiler, dass er nachdem er gezählt hat, diesen Wert 
dem alten hinzuzählt?

Sorry, momentan noch etwas verwirrend für mich...

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Maik M. schrieb:
> Was meinst du mit Empfangsfifo?

Die Serial Klasse verwaltet zwei FiFos
Eine für die Sendedaten und eine für die Empfangsdaten.
https://de.wikipedia.org/wiki/First_In_–_First_Out#Informatik
Arduino üblich sind die Serial FiFos 64 Zeichen/Byte groß


Arduino Fanboy D. schrieb:
> Serial.event() wird aufgerufen
Es heißt natürlich serialEvent() und nicht Serial.event()

------

Maik M. schrieb:
> Was ist ein Trigger und wozu ist das gut?
Triggern, ist das auslösen eines Vorgangs.
(häufig ein unumkehrbarer Vorgang)

z.B. der Auslöser einer Handfeuerwaffe, hat einen Triggerpunkt.

Oder der Klöppelschlag auf einen Gong.
Ein kurzer Trigger Impuls, und es wird ein lang anhaltender Ton erzeugt.

In diesem konkreten Fall löst der Trigger ein erhöhen des Zählerstandes 
aus.

-----

Maik M. schrieb:
> Woher weiss der Compiler, dass er nachdem er gezählt hat, diesen Wert
> dem alten hinzuzählt?

Die Frage verstehe ich nicht wirklich!

Ich vermute du meinst die Eigenschaft count der Counter Klasse.

von Bernd K. (prof7bit)


Lesenswert?

Arduino Fanboy D. schrieb:
> Arduino ist reines echtes AVR-GCC C++, nur mit ein paar Blümchen dran,

Blümchen? Eher mit ein paar hässlichen Warzen und ein paar unsichtbaren 
Fallgruben die man erst bemerkt wenn man drin liegt.

von Alex G. (dragongamer)


Lesenswert?

Bernd K. schrieb:
> Arduino Fanboy D. schrieb:
>> Arduino ist reines echtes AVR-GCC C++, nur mit ein paar Blümchen dran,
>
> Blümchen? Eher mit ein paar hässlichen Warzen und ein paar unsichtbaren
> Fallgruben die man erst bemerkt wenn man drin liegt.
Ohne je mit Arduino gearbeitet zu haben (dafür Desktopapplikationen in 
C++) - mehr Fallgruben als C++ als Programmiersprache sowieso schon hat, 
geht nicht :D

von Einer K. (Gast)


Lesenswert?

Alex G. schrieb:
> mehr Fallgruben als C++ als Programmiersprache sowieso schon hat,
> geht nicht :D
Ich glaube, verstanden zu haben was du meinst....

Aber bedenke:
Auch Probleme, kann man optimieren.
Quasi, auf ein Maximum zu treiben.

von Alex G. (dragongamer)


Lesenswert?

Arduino Fanboy D. schrieb:
> Auch Probleme, kann man optimieren.
> Quasi, auf ein Maximum zu treiben.

Vieleicht, aber diese Kritik ist ein bisschen Käse...
Arduino hat sich bei Hobbyisten deswegen durchgesetzt weil es erheblich 
einfacher zu nutzen ist, als die klassischen Möglichkeiten.
Entsprechend überwiegen die Vereinfachungen offensichtlich die 
Fallgruben.

Ich würde Arduino wie ein Framework sehen. Frameworks haben immer die 
unangenehme Eigenschaft, dass man schnell auf die Nase fällt, sobald man 
mehr will, als der Entwickler des Frameworks bedacht hat.
Trotzdem kann man damit leben (und z.B. für ernsthafte PC Software führt 
sehr selten ein Weg dran vorbei).

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Nee...
Das meine ich nicht....

Was unser "Autor: Bernd K. (prof7bit)" da losgelassen hat, ist einfach 
nur eine Provokation. Jene Art Provokation, welche zur Eskalation führen 
kann, und auch wohl zum Zweck hat. Denn einen anderen Sinn, vermag ich 
nicht zu erkennen.
Jeder Versuch der Argumentation ist damit vergebene Liebesmühe.
Er ist nicht an einem Dialog interessiert, eher an Krawall.

Hier (in diesem sozialen Kontext und auf die Entfernung) kann er sich 
das leisten.
In anderen Situationen wird er sich so einen Dummschwatz nicht so 
trauen, denn dann gibts u.U. sofort und zentral einen auf die Zwölf.

Warum er das tut?
Weiß ich nicht....
Warum machen kleine Kinder die Sandburgen anderer Kinder kaputt und 
erfreuen sich dann an dem Leid?

Ich will mal hoffen, dass das nur eine seltene Entgleisung ist, und 
keine dauerhafte neurotische Fehlanpassung.

von Alex G. (dragongamer)


Lesenswert?

Ahh, sorry - mit der "Käse Argumentation" meinte ich natürlich Bernd 
K.'s Aussage :)

von Einer K. (Gast)


Lesenswert?

Ja, nee...
Das hatte ich auch schon so verstanden.

Meine nur, dass ein argumentatives eingehen auf die Provokation wenig 
zielführend ist. Es sei denn, man möchte eine Eskalationsspirale 
antreiben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.