Arduino-Programmierung: Bin ich oder der Erfinder der Programmiersprache zu blöd?

Es gibt 137 Antworten in diesem Thema, welches 17.521 mal aufgerufen wurde. Der letzte Beitrag (16. Juni 2022 um 13:57) ist von 1570.

  • So übel ist die Arduino IDE gar nicht, benutze ich gerne für meine Projekte, man muss nicht immer gleich mit

    Kanonen auf Spatzen schiessen...

    Und eine 800..900MB Installations-Datei finde ich ein wenig übertrieben um eine LED zum blinken zu bringen!

    Mfg Jood

    Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.,
    Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.,
    Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.

  • Eben, genau darum geht es ja. Aber unter "richtigen" Mikrocontrollerprogrammierern wird gerne abfällig darüber gesprochen.

  • Also zwei simple For-Next-Schleifen im C64-Basic, mit einem Input (oder GET?).

    Bislang 70 Beiträge, um das Ding auf dem Arduino zum Laufen zu bekommen.

    Auf dem C64 wäre das in höchstens 3 Beiträgen abgehakt. :D

    Jetzt aber mal Butter bei die Fische: Wie sieht denn die C64-Variante aus?

  • Als Anfänger ist man aber auch froh über jeden Erfolg. Die Lernkurve geht ja nicht von jetzt auf gleich steil nach oben. Mit dem Argument könntest Du auch sagen, die Arduino IDE ist Mist, programmier lieber gleich im AVR Studio und mach es richtig. :wink: Es geht aber hier nicht um professionelle Softwareentwicklung, sondern um Spaß an der Sache und um das Verstehen.

    Wie würdest Du es denn machen?

    Ich habe seit zwei Jahren kein Arduino-Programm mehr geschrieben. Ich muss erst mal wieder die Funktionen nachschauen. ;)

    Also auf jeden Fall do-while raus und delay() raus. Stattdessen mit milli() die abgelaufene Zeit messen und eine globale Zustandsvariable, die in Abhängigkeit vom Taster und der jeweils abgelaufenen Zeit gesetzt wird.

    Wenn man das so macht, kann man später die ganze Funktionalität in ein Unterprogramm auslagern und weitere völlig unabhängige Funktionen mit anderen I/O-Pins implementieren, ohne dass sich die Funktionen stören. Die Zykluszeiten addieren sich natürlich.

    Bei mir kümmert sich ein einzelner Arduino selten nur um einen Taster und eine LED. ^^

  • Noch eine Ergänzung: Wenn man sich an den mitgelieferten Beispielen orientiert (und nicht an irgendeinem Mist aus dem Internet), dann bekommt man von Anfang an gezeigt, wie man es machen sollte.

  • Eben, genau darum geht es ja. Aber unter "richtigen" Mikrocontrollerprogrammierern wird gerne abfällig darüber gesprochen.

    Ist halt das BASIC unter den µC-Umgebungen. Einfach zu erlernen, aber nicht so wirklich mächtig.

    Aber abfällig darüber zu urteilen ist Käse, es hat ja genau diese Daseinsberechtigung. =)

  • Also zwei simple For-Next-Schleifen im C64-Basic, mit einem Input (oder GET?).

    Bislang 70 Beiträge, um das Ding auf dem Arduino zum Laufen zu bekommen.

    Auf dem C64 wäre das in höchstens 3 Beiträgen abgehakt. :D

    Jetzt aber mal Butter bei die Fische: Wie sieht denn die C64-Variante aus?

    Code
    10 ti$="000000":rem timer auf null
    20 if ti<10*60 then 20:rem warte 10 sek
    30 poke 53280,1:poke 53280,0:rem blinke
    40 get k$:if k$="" then 30:rem taste?
    50 goto 10:rem von vorne beginnen

    Statt 10 Minuten wartet es 10 Sekunden (wird sonst langweilig zu testen).

    Die LED ist der Rahmen, der blinkt. Für einen Ton bei Bedarf noch einen "passenden POKE" rein.

    Die Taste eine Taste der Tastatur (außer halt RUN/STOP o.ä.).


    Bitte melde dich an, um diesen Anhang zu sehen.

    Das waren schon schöne Zeiten damalstm zum Ausprobieren! :)

  • Noch eine Ergänzung: Wenn man sich an den mitgelieferten Beispielen orientiert (und nicht an irgendeinem Mist aus dem Internet), dann bekommt man von Anfang an gezeigt, wie man es machen sollte.

    hm, bin ich hier etwa nicht im Internet :nixwiss::whistling:

    "Was heute noch wie ein Märchen klingt,kann morgen Wirklichkeit sein.Hier ist ein Märchen von übermorgen.Es gibt keine Kupferka­bel mehr,es gibt nur noch die Glasfaser und Terminals in jedem Raum.Man siedelt auf fernen Rech­nern.Die Mailboxen sind als Wohnraum erschlossen.Mit heute noch unvorstellbaren Geschwindigkeiten durcheilen Computerclubs unser Da­tenverbundsystem.Einer dieser Com­puterclubs ist der CCC.Gigantischer Teil eines winzigen Sicher­heitssystems,das die Erde vor Bedrohungen durch den Gilb schützt.Begleiten wir den CCC und seine Mitglieder bei ihrem Patrouillendienst am Rande der Unkenntlich­keit. CCC'84 nach ORION'64"

  • noTone() wird gar nicht benötigt! Verwende als dritten Parameter als Delay einfach den gleichen Wert, wie für das delay(), dann funktioniert das genau so.

    Bitte melde dich an, um diesen Link zu sehen.

    Da funktioniert gar nichts, jede Menge Fehlermeldungen. ;)

    Ja ich weiß :D Hatte noch ein wenig rumprobiert, aber nicht dran gedacht, mir vorher ne Kopie von zu machen :drunk:

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

  • Eben, genau darum geht es ja. Aber unter "richtigen" Mikrocontrollerprogrammierern wird gerne abfällig darüber gesprochen.

    Ist halt das BASIC unter den µC-Umgebungen. Einfach zu erlernen, aber nicht so wirklich mächtig.

    Aber abfällig darüber zu urteilen ist Käse, es hat ja genau diese Daseinsberechtigung. =)

    Häh? Was für ein Unsinn.

    Da steckt GNU C++ dahinter und das lässt sich mit seinem kompletten Sprachumfang uneingeschränkt nutzen.

    Die ganzen Hardwaretreiber sind alle in reinem C++ geschrieben und auch so ziemlich alle objektorientiert.

  • Da steckt GNU C++ dahinter und das lässt sich mit seinem kompletten Sprachumfang uneingeschränkt nutzen.

    Die ganzen Hardwaretreiber sind alle in reinem C++ geschrieben und auch so ziemlich alle objektorientiert.

    Ich meinte, wenn man auf der vorgesehenen obersten API-Ebene bleibt, mit init(), loop() und den vorgesehenen Treiber-Aufrufen.

    Sobald man in tiefere Ebenen muss, hat man praktisch eher sowas wie BASIC mit SYS auf Maschinensprache-Routinen. :)

  • Wenn man das so macht, kann man später die ganze Funktionalität in ein Unterprogramm auslagern ...

    Nur eines (!) meiner drei Arduino-Bücher listet im Index "Unterprogramm" auf. Die Erklärung auf der entsprechenden Seite ist......... :(

    Scheint keine Unterprogramme auf dem Arduino zu geben.

    Aber Ähnliche hatte ich vor vioelen Jahren mal mit Linux, da gab es auch keine GUI/grafische Oberfläche - jedenfalls nicht laut

    dem 50 Euro teuren dicken Fachbuch. ;)

  • Code
    10 ti$="000000":rem timer auf null
    20 if ti<10*60 then 20:rem warte 10 sek
    30 poke 53280,1:poke 53280,0:rem blinke
    40 get k$:if k$="" then 30:rem taste?
    50 goto 10:rem von vorne beginnen

    Das waren schon schöne Zeiten damalstm zum Ausprobieren! :)

    Jupp, so einfach kann das Programmieren sein! :)

    Aber heute, mit einer höheren Programmiersprache, kriegt man das nicht mal so eben hin. :(

    Daher sind Programmierer meist studierte Informatiker und die Programme funktionieren nicht sauber. *Lach*

    So, ich muss zur Arbeit!

  • Daher sind Programmierer meist studierte Informatiker und die Programme funktionieren nicht sauber. *Lach*

    Nee nee, "Programmierer" aka Anwendungsentwicklung gibt es als normales Ausbildungsfach, und im Informatikstudium an einer Universität weiter oben im Spektrum wird programmieren können vorausgesetzt und optionale Zusatzkurse angeboten, wenn da Aufholbedarf besteht. :)

  • Daher sind Programmierer meist studierte Informatiker und die Programme funktionieren nicht sauber. *Lach*

    Nee nee, "Programmierer" aka Anwendungsentwicklung gibt es als normales Ausbildungsfach, und im Informatikstudium an einer Universität weiter oben im Spektrum wird programmieren können vorausgesetzt und optionale Zusatzkurse angeboten, wenn da Aufholbedarf besteht. :)

    Ja, naja, also zumindest an der RWTH gab und gibt es immer eine Erstsemestervorlesung "Programmieren" wo man dann Java oder etwas ähnliches lernt. Aber ohne jegliche Programmierkenntnisse das Informatikstudium anfangen ist in der Tat ein wenig sportlich. Allerdings besteht ein Großteil des Informatikstudiums ja eher aus Algorithmen und Mathematik. Programmieren wird dann noch mal in Praktika vertieft. Aber je mehr man sich vorher und außerhalb schon angeeignet hat umso besser. Ich vermute -- ohne es besser zu wissen -- dass Fachinformatiker da deutlich praxisnäher aufgestellt sind.

    Aber wir schweifen vom Thema ab... :)

    C64C mit 8580, C64 mit 6581 und C64G mit ARMSID,

    C16, VC20, PET3016+32K, 3x1541, 2x1541-II, Pi1541, Philips CM8833-II, 1084S

    Bitte melde dich an, um diesen Link zu sehen.

  • Ja, naja, also zumindest an der RWTH

    Das H steht für Hochschule, nehm ich an? :) Die wär dann im Spektrum zwischen Ausbildung und Universität. ;)

    Aber mein Punkt ist, Programmieren erfordert kein Studium, und es gibt viele Informatiker, die nicht so wirklich gut programmieren können. =)

  • Code
    10 ti$="000000":rem timer auf null
    20 if ti<10*60 then 20:rem warte 10 sek
    30 poke 53280,1:poke 53280,0:rem blinke
    40 get k$:if k$="" then 30:rem taste?
    50 goto 10:rem von vorne beginnen

    Das waren schon schöne Zeiten damalstm zum Ausprobieren! :)

    Jupp, so einfach kann das Programmieren sein! :)

    Aber heute, mit einer höheren Programmiersprache, kriegt man das nicht mal so eben hin. :(

    Daher sind Programmierer meist studierte Informatiker und die Programme funktionieren nicht sauber. *Lach*

    So, ich muss zur Arbeit!

    Dieses Programm kannst man fast 1 zu 1 in C++ übertragen mit gotos und allem, wenn man das unbedingt will. Es macht nur etwas anderes als du haben willst. Im Besonderen ist die Blinkfrequenz sehr viel höher. Die höhere Komplexität liegt meiner Meinung nach nicht in der verwendeten Sprache, sondern darin dass parallel zum Blinken und den damit verbundenen Wartezeiten ständig die Taste abgefragt werden muss. Schließlich will man den Blinkvorgang möglichst verzögerungsfrei abbrechen.

    Das vorgeschlagene C64-Programm löst das elegant indem es dies einfach ignoriert ;)

  • Ja, naja, also zumindest an der RWTH

    Das H steht für Hochschule, nehm ich an? :) Die wär dann im Spektrum zwischen Ausbildung und Universität. ;)

    Aber mein Punkt ist, Programmieren erfordert kein Studium, und es gibt viele Informatiker, die nicht so wirklich gut programmieren können. =)

    Naja, die RWTH nennt sich inzwischen "RWTH Aachen University". Es ist de facto eine ganz normale Universität mit naturwissenschaftlich-mathematischem Schwerpunkt. Aber ja, Programmieren kann man sehr gut heutzutage in Ausbildungsberufen lernen. Das war zu meiner Zeit noch nicht ganz der Fall.

    C64C mit 8580, C64 mit 6581 und C64G mit ARMSID,

    C16, VC20, PET3016+32K, 3x1541, 2x1541-II, Pi1541, Philips CM8833-II, 1084S

    Bitte melde dich an, um diesen Link zu sehen.

  • androSID 15. Juni 2022 um 11:01

    Hat den Titel des Themas von „Arduino-Programmierung: Bich zu blöd, oder der Erfinder der Programmiersprache?“ zu „Arduino-Programmierung: Bin ich oder der Erfinder der Programmiersprache zu blöd?“ geändert.
  • Nur eines (!) meiner drei Arduino-Bücher listet im Index "Unterprogramm" auf. Die Erklärung auf der entsprechenden Seite ist......... :(

    Alle Methoden wie loop() und setup() sind Unterprogramme. Sowas nennt sich heutzutage Methoden. Das geht noch viel weiter als das Konzept mit Gosub/return unter Basic.

    Aber Ähnliche hatte ich vor vioelen Jahren mal mit Linux, da gab es auch keine GUI/grafische Oberfläche - jedenfalls nicht laut

    dem 50 Euro teuren dicken Fachbuch. ;)

    Unter Linux gibt es verschiedene grafische Oberflächen, z.B. KDE oder Gnome. Letzteres gibt es seit 1999, also auch schon viele Jahre.

    Aber heute, mit einer höheren Programmiersprache, kriegt man das nicht mal so eben hin. :(

    Daher sind Programmierer meist studierte Informatiker und die Programme funktionieren nicht sauber. *Lach*

    Jetzt wird es unsachlich und es werden Äpfel mit Birnen verglichen. Darauf muss man nicht weiter eingehen, das ist schon fast trollig. Sorry, aber ein bißchen sollte man sich schon auf etwas Neues einlassen und sich damit beschäftigen, bevor man solche Bemerkungen loslässt.

  • Es macht nur etwas anderes als du haben willst.

    :gruebel

    Die höhere Komplexität liegt meiner Meinung nach nicht in der verwendeten Sprache, sondern darin dass parallel zum Blinken und den damit verbundenen Wartezeiten ständig die Taste abgefragt werden muss. Schließlich will man den Blinkvorgang möglichst verzögerungsfrei abbrechen.

    Das schafft der C64 mit 1 MHz und mit seinem BASIC quasi verzögerungsfrei.

    Wenn der Arduino mit einem LED-Blinken und Tasten abfragen schon "zeitkritisch überfordert" sein sollte, dann würde ich den nicht mal geschenkt anfassen. :D