Objekt, Funktionen und Bibliotheken in der Arduino IDE

eine weitere Bastelseite ....

Objekt, Funktionen und Bibliotheken in der Arduino IDE

24. September 2020 Arduino Wemo 0

Ein einfaches Beispiel (eine blinkenden LED) soll einmal zeigen auf welche Arten man in der Arduino-IDE Objekte, Klassen und Bibliotheken programmieren kann.

Das Beispiel beschreibt eine LED die verblassen soll ….

//LED Verblassen standard

const int led_pin = 13;           //PWM pin an dem die LED angeschlossen wurde
const int stufen = 5;             //Stufen in der die LED verblassen soll
const int geschwindigkeit = 10;   //Pausen bist zur nächsten Stufe 
const int pause = 100;            //pause zwischen den schleifen

void setup() {
  pinMode(led_pin, OUTPUT);       //definiert den led_pin als ausgang
}

void loop() {
  for (int i=0; i <= 255; i=i+stufen){  //definiert die schleife mit den stufen 
    analogWrite(led_pin, i);            //Schreibe den Wert von "i" auf den LED-Pin
    delay(10);                          //Warte 10 Millisekunden
  }
  delay(pause);
  for (int i=255; i >= 0; i=i-stufen){  // 
    analogWrite(led_pin, i);            //Schreibe den Wert von "i" auf den LED-Pin
    delay(10);                          // Warte 10 Millisekunden
  }
}

 

Das gleiche Beispiel nur mit einem Funktionsaufruf. Somit kann die Funktion an verschiedenen Stellen des Programmes aufgerufen werden.

//LED Verblassen funktion

const int led_pin = 13;             //PWM pin an dem die LED angeschlossen wurde
//const int stufen = 5;             //Stufen in der die LED verblassen soll
//const int geschwindigkeit = 10;   //Pausen bist zur nächsten Stufe 
//const int pause = 100;            //pause zwischen den schleifen

void setup() {
  pinMode(led_pin, OUTPUT);         //definiert den led_pin als ausgang
}

void loop() {
  verblassen(5,10,100);             //ruft die funktion mit den entsprechenden Parametern auf
}

void verblassen(int stufen, int geschwindigkeit, int pause){  ////Stufen in der die LED verblassen soll, Pausen bist zur nächsten Stufe, pause zwischen den schleifen 
  for (int i=0; i <= 255; i=i+stufen){                        //definiert die schleife mit den stufen 
    analogWrite(led_pin, i);                                  //Schreibe den Wert von "i" auf den LED-Pin
    delay(10);                                                //Warte 10 Millisekunden
  }
  delay(pause);                                               //pause zwischen den schleifen
  for (int i=255; i >= 0; i=i-stufen){                        //definiert die schleife mit den stufen  
    analogWrite(led_pin, i);                                  //Schreibe den Wert von "i" auf den LED-Pin
    delay(10);                                                // Warte 10 Millisekunden
  }  
}

 

In diesem Beispiel wurde die Funktion zu einer Klasse umgebaut. Der Vorteil liegt in der Erzeugung von verschiedenen Objekten also mehrere LED’s die an verschiedenen Stellen aufgerufen werden können.

//LED Verblassen mit einer Klasse zur LED Steuerung

class verblassen {
  private:      //alles was folgt, ist nur für den internen Gebrauch durch die Klasse selbst:
  int led_pin;  //jedes Objekt vom verblassen hat seinen eigenen led_pin

  public: //alles was folgt, ist auch nach außen sichtbar
  
  //Diese Setup-Funktion muss aufgerufen werden, bevor die LED Steuerung verwendet wird:
  void setup(int new_led_pin){
    //wir merken uns die Pins für die spätere Verwendung
    led_pin=new_led_pin;
 
    //und initialiseren auch gleich die Ausgänge
    pinMode(led_pin,OUTPUT);
  }

  //Mit dieser Fukntion lässt sich die LED steuern
  void start(int stufen, int geschwindigkeit, int pause){      //stufen in der die LED verblassen soll, Pausen bist zur nächsten Stufe, pause zwischen den schleifen 
    for (int i=0; i <= 255; i=i+stufen){                       //definiert die schleife mit den stufen 
     analogWrite(led_pin, i);                                  //Schreibe den Wert von "i" auf den LED-Pin
     delay(10);                                                //Warte 10 Millisekunden
   }
    delay(pause);                                              //pause zwischen den schleifen
    for (int i=255; i >= 0; i=i-stufen){                       //definiert die schleife mit den stufen  
      analogWrite(led_pin, i);                                 //Schreibe den Wert von "i" auf den LED-Pin
      delay(10);                                               // Warte 10 Millisekunden
    }  
  }
};

verblassen led;     //erstellen eines objektes
verblassen led2;    //erstellen eines objektes

void setup() {
  led.setup(13);    //definiert den led_pin als ausgang
  led2.setup(12);   //definiert den led_pin als ausgang
}

void loop() {
  led.start(5,10,100);  //ruft das objekt mit den entsprechenden Parametern auf
  led2.start(1,5,100);  //ruft das objekt mit den entsprechenden Parametern auf
}

 

Als letztes Beispiel wurde die Klasse in eine Bibliothek eingefügt. Das Programm ist somit schön klein und übersichtlich …

//LED Verblassen bibliothek

#include "verblassen.h"

verblassen led;
verblassen led2;

void setup() {
  led.setup(13);          //definiert den led_pin als ausgang
  led2.setup(12);         //definiert den led_pin als ausgang
}

void loop() {
  led.start(5,10,100);    //ruft das objekt mit den entsprechenden Parametern auf
  led2.start(1,5,100);    //ruft das objekt mit den entsprechenden Parametern auf
}

 

und noch die Bibliothek dazu… sie sollte in dem gleichen Ordner liegen …

// Bibliothek mit einer Klasse zur LED steuerung 

class verblassen {
  private:      // alles was folgt, ist nur für den internen Gebrauch durch die Klasse selbst:
  int led_pin;  //jedes Objekt vom verblassen hat seinen eigenen led_pin

  public: //alles was folgt, ist auch nach außen sichtbar
  
  //Diese Setup-Funktion muss aufgerufen werden, bevor die LED Steuerung verwendet wird:
  void setup(int new_led_pin){
    //wir merken uns die Pins für die spätere Verwendung
    led_pin=new_led_pin;
 
    //und initialiseren auch gleich die Ausgänge
    pinMode(led_pin,OUTPUT);
  }

  //Mit dieser Fukntion lässt sich die LED regeln
  void start(int stufen, int geschwindigkeit, int pause){     //Stufen in der die LED verblassen soll, Pausen bist zur nächsten Stufe, pause zwischen den schleifen 
    for (int i=0; i <= 255; i=i+stufen){                      //definiert die schleife mit den stufen 
     analogWrite(led_pin, i);                                 //Schreibe den Wert von "i" auf den LED-Pin
     delay(10);                                               //Warte 10 Millisekunden
   }
    delay(pause);                                             //pause zwischen den schleifen
    for (int i=255; i >= 0; i=i-stufen){                      //definiert die schleife mit den stufen  
      analogWrite(led_pin, i);                                //Schreibe den Wert von "i" auf den LED-Pin
      delay(10);                                              // Warte 10 Millisekunden
    }  
  }
};