⇒Funktionen werden normalerweise neben dem setup- und dem loop-Teil in einer einzigen Datei abgespeichert. Häufig verwendete Programmteile können in einer separaten Datei ausgelagert werden.

Im Programm ⇒Einmaleinsreihen soll die Funktion ReiheAnzeigen ausgelagert werden :
Erstelle mit einem beliebigen Texteditor eine Datei ReiheAnzeigen.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | void ReiheAnzeigen(long Reihe) { Serial.print(“Einmaleins der ”); Serial.println(Reihe); for (int zaehler = 1; zaehler <= 10; zaehler++) { Serial.print(zaehler); Serial.print(“ * ”); Serial.print(Reihe); Serial.print(“ = ”); Serial.print(zaehler * Reihe); Serial.print(“\n”); } Serial.print(“——————————-\n”); } |
Speichere diese Datei im gleichen Ordner, in dem sich auch die .ino Datei befindet.
Das eigentliche Programm:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | // Datei ReiheAnzeigen.h einbinden #include “ReiheAnzeigen.h” String Eingabe = “”; void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} Serial.println(“Einmaleins: Gib eine Zahl ein!”); Serial.println(“——————————”); } void loop() { while (Serial.available() > 0) { // Eingabe im Seriellen Monitor lesen char Zahl = Serial.read(); // auf Zahl prüfen if (isDigit(Zahl)) Eingabe += Zahl; } // Enter/Senden gedrückt if (Zahl == ‘\n’) { // eingegebene Zahl zu int umwandeln long Reihe = Eingabe.toInt(); // Funktion ReiheAnzeigen aus ReiheAnzeigen.h aufrufen ReiheAnzeigen(Reihe); Eingabe = “”; } } } |

Weiteres Beispiel:
Im Programm ⇒Lottozahlen — Anzeige im Seriellen Monitor sollen die Funktionen ausgelagert werden:
Erstelle mit einem beliebigen Texteditor eine Datei Ziehung.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | int Ziehung(int LottoZahl[], int Anzahl, int Minimum, int Maximum) { for (int i = 0; i < Anzahl; i++) { /* die Lottozahl gilt solange als bereits gezogen bis in der for-Schleife nachgewiesen wird, dass sie neu ist BereitsGezogen den Wert false hat */ bool BereitsGezogen = true; while (BereitsGezogen) { // Zahl ziehen LottoZahl[i] = random(Minimum, Maximum); BereitsGezogen = false; /* Zufallszahl mit den bereits gezogenen Zahlen vergleichen i wird in der ersten for-Schleife hochgezählt alle bisherigen Zahlen (ii) werden mit den bisher gezogenen verglichen (ii < i) ist sie identisch, erhält BereitsGezogen den Wert true es wird erneut eine Zufallszahl bestimmt wenn die Zahl neu ist, (BereitsGezogen hat noch den Wert false) wird die while-Schleife verlassen und die nächste Zahl gezogen */ for (int ii = 0; ii < i; ii++) { if (LottoZahl[i] == LottoZahl[ii]) BereitsGezogen = true; } } } return LottoZahl[Anzahl]; } void ZahlenSortieren(int Zahlen[], int Groesse) { // unsortierten Bereich des Arrays durchlaufen for (int i = 0; i < (Groesse - 1); i++) { // bei jedem Durchlauf wird das jeweils letzte Element weggelassen for (int ii = 0; ii < (Groesse - (i + 1)); ii++) { /* wenn die aktuelle Zahl größer als die nachfolgende Zahl ist -> aktuelle Zahl temporär speichern -> Zahlen vertauschen -> temporäre Zahl der nachfolgenden Zahl zuweisen */ if (Zahlen[ii] > Zahlen[ii + 1]) { int zwischengespeicherteZahl = Zahlen[ii]; Zahlen[ii] = Zahlen[ii + 1]; Zahlen[ii + 1] = zwischengespeicherteZahl; } } } } void LottzahlenAnzeigen(int Treffer, String GespielteZahlen, String GezogeneZahlen, String AnzahlTreffer, int Durchlauf) { // Anzeige Serieller Monitor Serial.println(“Ziehung ” + String(Durchlauf)); Serial.println(“—————————–”); Serial.println(“Gespielte Zahlen”); Serial.println(“—————————–”); Serial.println(GespielteZahlen); Serial.println(“—————————–”); // Anzeige der Zahlen Serieller Monitor Serial.println(“Gezogene Zahlen”); Serial.println(“—————————–”); Serial.println(GezogeneZahlen); Serial.println(“—————————–”); if (Treffer == 0) Serial.println(“keine richtige Zahl!”); else if (Treffer == 1) Serial.println(“Treffer: ” + AnzahlTreffer + “(“ + String(Treffer) + ” richtige Zahl)”); else Serial.println(“Treffer: ” + AnzahlTreffer + “(“ + String(Treffer) + ” richtige Zahlen)”); Serial.println(“—————————–”); } |
Speichere diese Datei im gleichen Ordner, in dem sich auch die .ino Datei befindet.
Das eigentliche Programm:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | // Ziehung.h einbinden #include “Ziehung.h” // Anzahl der zu ziehenden Zahlen const int Anzahl = 6; int LottoZahl[Anzahl]; // Array für die angekreuzten Zahlen int SpielZahl[Anzahl]; // Minimum/Maximum der Zufallszahlen int Minimum = 1; int Maximum = 49; int Durchlauf = 0; void setup() { Serial.begin(9600); // Zufallsgenerator starten randomSeed(analogRead(A0)); // auf serielle Verbindung warten while (!Serial) {;} Serial.println(“z = N\u00e4chste Ziehung”); } void loop() { String GespielteZahlen = “”; String GezogeneZahlen = “”; String Eingabe = “”; String AnzahlTreffer = “”; int Treffer = 0; // auf serielle Eingabe warten while (Serial.available() > 0) { // solange lesen, bis return \n = return eingegeben wurde Eingabe = Serial.readStringUntil(‘\n’); } // wenn “z” eingegeben wurde if (Eingabe == “z”) { // Ziehung der “angekreuzten” Zahlen Ziehung(LottoZahl, Anzahl, Minimum, Maximum); /* Array Sortieren mit ArduinoSort sortArray(NameArray, AnzahlElemente) sortArrayReverse(NameArray, AnzahlElemente) */ ZahlenSortieren(LottoZahl, 6); // String GespielteZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (int i = 0; i < Anzahl; i++) { GespielteZahlen = GespielteZahlen + LottoZahl[i] + ” “; SpielZahl[i] = LottoZahl[i]; } // Ziehung der Lottozahlen Ziehung(LottoZahl, Anzahl, Minimum, Maximum); ZahlenSortieren(LottoZahl, 6); // Vergleichen der Elemente der Arrays SpielZahl und LottoZahl for (int i = 0; i < Anzahl; i++) { for (int ii = 0; ii < Anzahl; ii++) { // Übereinstimmung gefunden -> Treffer um 1 erhöhen if (SpielZahl[i] == LottoZahl[ii]) { AnzahlTreffer = AnzahlTreffer + SpielZahl[i] + ” “; Treffer ++; } } } // String GezogeneZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (int i = 0; i < Anzahl; i++) { GezogeneZahlen = GezogeneZahlen + LottoZahl[i] + ” “; } Durchlauf ++; LottzahlenAnzeigen(Treffer, GespielteZahlen, GezogeneZahlen, AnzahlTreffer, Durchlauf); } } |
Letzte Aktualisierung: