Objekt, Funktionen und Bibliotheken in der Arduino IDE
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
}
}
};