Hallo Besucher, der Thread wurde 8,9k mal aufgerufen und enthält 137 Antworten

letzter Beitrag von 1570 am

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

  • Zitat

    Eine Funktion ist für mich z.B. x=y+2*x, sowas hatte ich mal vor vielen Jahren in der Schule, ist aber sicherlich nicht das Gleiche.

    Fast das gleiche, wenn man es etwas umschreibt (und aendert, weil es sonst trivial wird ;-)

    y = 2 * x

    und wenn man es etwas foermlicher schreibt, was teils an Schulen aber spaetestens im Studium gelehrt wird:

    f(x) = 2 * x,

    damit meint man Funktionswert an der Stelle 'x'.

    und dieses f() ist einer C-Funktion SEHR nah.

    int f(int x) { return 2*x;} wenn man es bei Ganzzahlen belaesst etc.

    Das kann man dann spaeter einfach im Code verwenden als b = f(4); oder c = f(d); etc.

  • Retro-Rentner : nutze in der Arduino IDE die Beispiele, dort kann man sich oft schon Grundsätzliches abschauen.


    Die Loop() Funktion ist eine nette Sache, weil man sich um einen kontinuierlichen Ablauf nicht kümmern muss . Aber irgendwann wird man feststellen, dass man mit eigenen Funktionen (z.B. springe, wenn Taste gedrückt wurde) komfortabler steuern kann.

    Vergleichbar ist das in BASIC mit GOSUB.


    Man muss sich befreien von dem einfachen Syntax von BASIC, bei C++ sieht alles komplizierter aus, macht aber Sinn :thumbsup:


    Aber weiter komme ich auch meist nicht, irgendwann wird es bei mir Spaghetti Code. Da hilft dann wieder ein Blick in Beispiele, wie einfach und kompakt man programmieren "könnte" :)

    "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­puterclubsist der CCC.Gigantischer Teil eines winzigen Sicher­heitssystems,das die Erde vor Bedrohungendurchden Gilb schützt.Begleiten wir den CCC und seine Mitglieder bei ihrem Patrouillendienst am Rande der Unkenntlich­keit. CCC'84 nach ORION'64"

  • Code

    Liefert Fehlermeldung:


    Code
    1. sketch.ino: In function 'void loop()':
    2. sketch.ino:10:3: error: 'tasterstatus' was not declared in this scope tasterstatus = digitalRead( tasterPin ); ^~~~~~~~~~~~
    3. sketch.ino:10:3: note: suggested alternative: 'tasterPin' tasterstatus = digitalRead( tasterPin ); ^~~~~~~~~~~~ tasterPin
  • Eine Funktion ist für mich z.B. x=y+2*x, sowas hatte ich mal vor vielen Jahren in der Schule, ist aber sicherlich nicht das Gleiche. ;)

    Funktion, Methode, Prozedur. Egal, wie man das nennt, in Commodore gibt's das halt nicht.


    Hast du dir denn mal Beispiel-Programme angeschaut? Zum Beispiel die, die die Arduino-IDE mitbringt (unter Datei / Beispiele)

  • ...

    Eine Funktion ist für mich z.B. x=y+2*x, sowas hatte ich mal vor vielen Jahren in der Schule, ist aber sicherlich nicht das Gleiche. ;)

    Das ist nicht schlimm, ich glaube das geht jedem so. Ich habe mich vor etwa acht Jahren auch maßlos überschätzt und mache es jetzt trotzdem fast hauptberuflich.

    Das Wort Funktion ist hier nur ein Name. Zugegeben einer, der den Zweck wirklich gut beschreibt.

    Vielleicht hilft es dir, statt Funktion einfach Unterprogramm dazu zu denken.

    Zwei Besonderheiten:

    Das Setup wird bei jedem Einschalten einmal durchlaufen.

    Der Loop immer und immer wieder.

    (Zumindest ist es so gedacht ;) )


    Stefan

  • Man muss sich befreien von dem einfachen Syntax von BASIC, bei C++ sieht alles komplizierter aus, macht aber Sinn :thumbsup:

    Das Gegenteil ist der Fall. :D


    Irgendwelche wilden BASIC GOTO Konstruktionen sehe in strukturieren Programmsprachen oft ganz übersichtlich aus.

  • ich habe jetzt nur die Position zweier Zeilen geändert.

    Jetzt ist die Schalterabfrage nur möglich, nachdem die Zeit "abgelaufen" ist.


    Da ich mich auf der Arbeit befinde und nur vom Handy aus kommuniziere kann ich das Programm nicht probehalber kompilieren lassen.


    Stefan

  • Code
    1. void setup()
    2. {
    3. #define tasterPin 11
    4. pinMode( 11, INPUT ); //Taster-Eingang Pin 11
    5. }

    Der "DEFINE" gehört eigentlich nach oben über die setup-Funktion. Ist ja nicht lokal und gilt für das gesammte Programm.

    Und wie Stefan schon geschrieben, verwendet man intwischen eigentlich "const" statt "DEFINE". "DEFINE" ist eher C und "const" eher C++. Dann läuft man auf nicht in den Semikolon-Falle.

  • Irgendwelche wilden BASIC GOTO Konstruktionen sehe in strukturieren Programmsprachen oft ganz übersichtlich aus.

    Bitte nicht schon wieder diese Diskussion...

    Ist halt wieder ein schönes Beispiel, was es einem nutzt, wenn man Programmieren mit Basic begonnen hat. Das man den Einstieg in die strukturierte Programmierung eher schwerer als leichter.

  • Man muss nicht mit einem Buch anfangen. Es geht auch online z.B. mit dieser Seite: https://www.arduino.cc/en/Guide, ist aber auf englisch.

    Die Dokumentation der Sprache ist hier: https://www.arduino.cc/reference/en/

    oder hier auf DE: https://www.arduino.cc/reference/de/


    Endurion : Dein Code entspricht noch nicht der Aufgabe; das Blinken muss wieder in eine Schleife, bis eine Taste gedrückt wird. Ich würde es so machen (ungetestet):

    P.S.: Das Delay sollte man dann noch rausprogrammieren, wenn das so funktioniert. Dazu ist das o.g. BlinkWithoutDelay hilfreich.

  • Man muss sich befreien von dem einfachen Syntax von BASIC, bei C++ sieht alles komplizierter aus, macht aber Sinn :thumbsup:

    Das Gegenteil ist der Fall. :D


    Irgendwelche wilden BASIC GOTO Konstruktionen sehe in strukturieren Programmsprachen oft ganz übersichtlich aus.

    Und du verstehst meine Aussage nicht.

    Auf den ersten Blick ist ein GOTO 20 einfacher nachzuvollziehen, als void rechne (a,x). Also wenn man BASIC als erste Programmiersprache hatte. Mehr nicht.

    :zzt:

    "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­puterclubsist der CCC.Gigantischer Teil eines winzigen Sicher­heitssystems,das die Erde vor Bedrohungendurchden Gilb schützt.Begleiten wir den CCC und seine Mitglieder bei ihrem Patrouillendienst am Rande der Unkenntlich­keit. CCC'84 nach ORION'64"

  • Ungetestet, aber sollte das nicht ganz simpel so funktionieren?

  • Ungetestet, aber sollte das nicht ganz simpel so funktionieren?

    Also vom draufschauen sieht das ziemlich gut aus. Als normales C-Programm würde ich das durchgehen lassen. Ich habe bisher wenig mit Arduino gemacht, kann also sein, dass da semantische Probleme bzgl. der Hardware I/O sind. Aber ich würde das auch so machen.


    Ich glaube dem Stefan fehlen lediglich ein paar Grundlagen. Man braucht bei Arduino ja "nur" die Basisstrukturen und Keywords von C. Also eine Vorstellung von Variablen, Funktionen (im imperativen Sinne), sowie Steuerung mittels if, while, for. Damit kommt man dann schon ziemlich weit.