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
Verstehe deine Absicht nicht. Also im Endeffekt wieder ein ASM vs. höhere Sprachen-Thread? Und was hat das mit Arduino zu tun?
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
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)
@ 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.
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.
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?
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 ;)
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.
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.
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.
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
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.
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.
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.
Objektorientierung macht soetwas möglich! Hat sich nicht umsonst durchgesetzt.
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.
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.
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
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..
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.
...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 | }
|
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
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.
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.
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
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
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++.
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++.
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?
Maik M. schrieb: > Gibt es > nicht sowas wie GOTO in Basic? Natürlich gibt es goto. Sogar ein (unvollständiges) computed GoTo
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++?
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...
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?
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.
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
Und? C++, mit ein paar rosa Blümchen dran. Dabei bleibts!
Arduino F. schrieb: > Und? > C++, mit ein paar rosa Blümchen dran. > Dabei bleibts! Wenn du es sagst, wird es wohl stimmen...
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.
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...
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.
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
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.
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
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.
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.
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
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.
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
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.
Ahh, sorry - mit der "Käse Argumentation" meinte ich natürlich Bernd K.'s Aussage :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.