Tutorial 2 zum Schreiben einer benutzerdefinierten Funktion für Intel® Galileo-Mainboards

Dokumentation

Installation und Setup

000006605

18.03.2022

Bis zu diesem Zeitpunkt schreiben wir unseren Code innerhalb der Setup- und Schleife-Funktionen. Das ist völlig in Ordnung. Aber was ist, wenn Ihr Programm über viele komplexe Logiken verfügt? Wie würden Sie Ihren Code organisieren?

Es gibt eine Kunst der Programmierung, und es beginnt mit dem Wissen, wo Sie Ihren Code einsetzen müssen.

Codierung kann manchmal unordentlich werden. Wenn Sie jemals Open-Source-Code gelesen haben, können Sie auf einen Code stoßen, der:

  • fehlende Kommentare: einschließlich Kommentare helfen Ihnen und wer sie liest, versteht, was abläuft
  • Logik ist nicht organisiert: Die Umwandlung Ihres Codes in logische Chunks hilft beim Debugging und bei der Codewartung
  • Namen sind irreführend: Variable und Funktionsnamen sollten korrekt beschreiben, was sie vorhaben
  • Transparenz über Klarheit: Code sollte leicht lesbar sein; Versuchen Sie, bei dem, was Sie erreichen möchten, nicht zu kryptisch zu sein

 

Programme in einer beliebigen Sprache können geschrieben und organisiert werden, je nach dem, was der Programmierer für richtig hält. Dies ist in Ordnung, wenn Sie der einzige sind, der Ihren Code liest. Wenn Sie jedoch in einem Team arbeiten, ist es wichtig, einige Richtlinien anzugeben, denen jeder folgt. Eines Tages muss der Code, den Sie schreiben, aktualisiert und von anderen Personen gelesen werden. Das Schreiben von organisierten Codes und das Praktizieren gängiger Coding-Praktiken helfen Ihnen und Ihren Ingenieurkollegen beim Schreiben von schönem Code.

Tipps zur Verbesserung Ihres Coding-Stils finden Sie in Googles C++ Coding Style Guide.

Es gibt zwei Arten von Funktionen:

  • Führt Anweisungen aus und gibt keinen Wert zurück (Typ void)
  • Führt Anweisungen aus und gibt einen Wert zurück (die Typen umfassen int, floating, double)

Weitere Informationen finden Sie im Abschnitt Datentypen auf der Arduino-Referenzseite.

Funktionstypen

Type void:
void sayHello(){
Serial.println("Hello!");
}

Type integer:
int theAnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything(){
return 42;
}

We can assign the value of functions that return something to variables:
int myAnswer = theAnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything();

Nehmen wir an, wir wollten eine Funktion etwas nützlicher machen. Wir können Funktionsparameter verwenden, um eindeutige Daten zu übermitteln, die sich auf das Ergebnis der Funktion auswirken. Zum Beispiel:
int add(int x, int y){
return x + y;
}

Wir würden diese Funktion nennen und benutzerdefinierte Parameter wie folgt übergeben:
int numbersAdded = add(2, 2); // The variable numbersAdded is equal to 4

Es gibt eine Vielzahl von Möglichkeiten, wie Sie eine Funktion schreiben können. Alles hängt davon ab, was Sie tun möchten. Ein guter Ort, um mit dem Schreiben einer benutzerdefinierten Funktion zu beginnen, ist die Definition der Funktionssignatur.

Funktionssignatur
Bevor Sie den Code einer Funktion schreiben, ist es am besten, zu bestimmen, was Sie erreichen möchten.

  • Wird ein Wert zurückgegeben?
  • Wie viele Parameter werden (falls vorhanden) an sie weitergegeben?
  • Was ist der Zweck der Funktion?

Nehmen wir an, Sie schreiben ein Programm, das eine benutzerdefinierte Nachricht an den seriellen Monitor ausgibt. Diese Meldung kommentiert das Wetter (das z. B. auf einem Temperatursensor basieren könnte).

Sie wissen noch nicht, wie genau der Code innerhalb der Funktion aussieht, aber Sie wissen, was Sie tun möchten:

  • Nehmen Sie zwei benutzerdefinierte Parameter, um zusammen zu verketten (oder zusammenzuschließen)
  • Nehmen Sie eine Anzahl des Typs Double, der an die Nachricht angehängt wird
  • Gibt keinen Wert zurück
  • Die Ausgabe des seriellen Monitors würde ausdrucken: "Es ist 30 Grad draussen."

Unsere Signatur könnte so aussehen:
void myController (String msg1, String msg2, double deg){}

Der Aufruf der Funktion würde wie folgt aussehen:
Der Grad hier wäre eine vordefinierte Variable, die auf der Ablesung eines Temperatursensors basiert.
my- ("Es ist", Grad, "außen");

Herausforderung
Wie würden Sie den Code schreiben, um die Aufgabe dieser Funktion abzuschließen?