Funk­tio­nen

Lese­zeit: 6 Minu­ten

int-Funktion

Jede Funk­ti­on muss außer­halb des setup- und des loop-Teils ste­hen.

Das Pro­gramm erstellt auf Tas­ten­druck Zufalls­zah­len zwi­schen 1 und 49 und zeigt sie an.

int TASTER = 4; 

void setup()  
{  
  Serial.begin(9600); 
  pinMode(TASTER, INPUT_PULLUP); 
  randomSeed(analogRead(0)); 
}

void loop() 
{ 
  int Minimum = 1; 
  int Maximum = 50;  
  int TasterStatus = digitalRead(TASTER); 

  if (TasterStatus == LOW)  
  {  
     delay(200);   
     
     // Aufruf der Funktion   
     int Zahl = ZufallsZahl(Minimum, Maximum);         
     Serial.print("Zufallszahl\t");  
     Serial.println(Zahl);   
  }
} 

// Funktion 
int ZufallsZahl(int Minimum, int Maximum) 
{ 
  int Zahl =  random(Minimum, Maximum);  
  return Zahl; 
}

String-Funktion

Das Pro­gramm ersetzt in einem Text einen Vokal durch einen ande­ren.

void setup()
{
  Serial.begin(9600);
  Serial.println("Bitte Text eingeben:");
}
 
void loop()
{
  // auf serielle Eingabe warten
  while (Serial.available() > 0)
  {
    // solange lesen, bis return \n
    // eingegeben wurde
    String Eingabe = Serial.readStringUntil("\n");
  
    // das letzte Zeichen ist return → soll entfernt werden  
    Eingabe = Eingabe.substring(0, Eingabe.length() - 1); 
    
    // Original-Text ausgeben Serial.println(Eingabe);  
    Serial.println("-------------------------------------");
  
    // Funktion aufrufen
    // Parameter: Eingabe, zu suchender Vokal, Ersatzvokal  
    String VokalErsetzen = VokalZaehlen(Eingabe, 'a', 'i');  
    Serial.println("-------------------------------------");
    Serial.print(VokalErsetzen);
  }
}

// String-Funktion
String VokalZaehlen(String Eingabe, char Vokal, char VokalErsatz)
{
  int AnzahlVokale = 0;
  for (int i = 0; i < Eingabe.length(); i ++)  
  {   
    // wenn der Vokal gefunden wurde   
    // -> durch den "Ersatzvokal" ersetzen
    // Anzahl der Ersetzungen zählen
    if (Eingabe[i] == Vokal)
    {
      Eingabe[i] = VokalErsatz;
      AnzahlVokale ++;
    }
  }
  // Anzahl der Ersetzungen anzeigen
  Serial.println(String(Vokal) + " " + String(AnzahlVokale) + "-mal ersetzt durch " + String(VokalErsatz));
  return Eingabe;
}

bool-Funktion

Das Pro­gramm ver­wen­det eine bool-Funktion, um die Tei­ler einer Zahl zu bestim­men und im Seri­el­len Moni­tor anzu­zei­gen. Ist kein Tei­ler vor­han­den, wird die Mel­dung aus­ge­ge­ben, dass es sich um eine Prim­zahl han­delt.

// wenn es sich um eine Primzahl handelt → Primzahl = true 
bool Primzahl;

void setup()
{
  Serial.begin(9600);
  Serial.println("Zahl eingeben:");
}

void loop()
{
  String Eingabe;

  while (Serial.available() > 0)
  {
    // solange lesen, bis return \n eingegeben wurde
    Eingabe = Serial.readStringUntil("\n");

    // das letzte Zeichen ist return  → soll entfernt werden
    Eingabe = Eingabe.substring(0, Eingabe.length() - 1);

    // eingegebene Zahl zu int umwandeln
    int Zahl = Eingabe.toInt();
    Serial.println("-----------------------------");
    Serial.println("Teiler von " + String(Zahl) + " sind:");

    // Aufruf der Funktion DivisorSuchen
    bool Divisor = DivisorSuchen(Zahl);
    if (Primzahl) Serial.println(String(Zahl) + " ist eine Primzahl");
  }
}

bool DivisorSuchen(int Zahl)
{
  Primzahl = true;
  
  // nur bis zur Hälfte der Zahl prüfen
  for (int i = 2; i <= Zahl / 2; i++)
  {
    // wenn kein Rest → Zahl ist teilbar → aktuellen Divisor anzeigen
    if (Zahl %i == 0) 
    {
      Serial.println(i);

      // Divisor vorhanden → keine Primzahl
      Primzahl = false;
    }
  }
  /*
    Wert von Primzahl wird an das Hauptprogramm zurückgegeben
    false = keine Primzahl
    true = Primzahl
  */
  return Primzahl;
}

Das Pro­gramm berech­net die Fakul­tät der Zah­len bis 12.

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  // auf serielle Eingabe warten
  while (Serial.available() > 0)
  {
    int Zahl = Serial.parseInt();

    // Enter/Senden gedrückt 
    if (Serial.read() == '\n') 
    {  
      /* 
        die Variable unsigned long ist auf den Wert      4.294.967.295 beschränkt 
        13! = 6.227.020.800  
        -> größere Werte nicht möglich  
      */ 
      if (Zahl < 13)  
      {   
        unsigned long Fakultaet = FakultaetBerechnen(Zahl);     
        Serial.println("Fakult\u00e4t von " + String(Zahl) + ": " + Fakultaet);               
        Serial.println("-------------------------");
      }
      else Serial.println("Die Zahl muss < 13 sein!"); 
    }
  }
}

long FakultaetBerechnen(long Zahl)
{
  unsigned long Ergebnis = 1;
  for (int i = 1; i <= Zahl; i++)
  {
    Ergebnis = Ergebnis * i;
  }
  return Ergebnis;
}

Metho­den Varia­ble

Letzte Aktualisierung: 10. Jul 2020 @ 16:40