Arduino Programmierung ganz einfach

Arduino Programmierung ganz einfach

Mitwirkende: ulrich_klein
Beginn: 2017-12-07
Fertigstellung: 2017-12-14
Status: fertig

Bei dem Programmieren einer Wendeschützschaltung auf dem Arduino unter Verwendung von Fischertechnik kam mir eine Idee.
Objekte zu erstellen und die Angabe der Pinrichtung, zum Beispiel pinMode(4,OUTPUT) oder pinMode(5,INPUT) in den Konstruktor des Objektes zu legen so dass beim Anlegen und Initialisieren des Objektes die Pinrichtung automatisch festgelegt wird und man dies nicht mehr selbst zu tun braucht. Die Funktion void Setup() kann somit leer bleiben weil sie dafür nicht mehr gebraucht wird.

Insgesamt habe ich drei C++ - Klassen erstellt.
Eine zur Rechts- und Linkslaufsteuerung eines Gleichtrommotors mit den Dateinamen motor.h und motor.cpp bei der Rechts- und Linkslauf gegeneinander verriegelt sind, eine um einen Schalter oder Taster einzulesen mit den Dateinamen schalter.h und schalter.cpp bei der auch das Kontaktprellen des Schalters berücksichtigt wird, sowie eine um ein einzelnes Pin des Arduino an- oder aus zu schalten mit den Dateinamen ausgangspin.h und ausgangspin.cpp.

Direkt nach dem Einleitungskommentar was das Programm tut, kommen die #Include – Anweisungen, zum Beispiel #include<schalter.h>, #include<motor.h> und #include<ausgangspin.h> danach erfolgt das Erstellen der Objekte, zum Beispiel Motor Motor_1 (4,5). Das bedeutet das der Motortreiber-IC L298 unter dem Namen Motor_1 an Pin 4 und Pin 5 des Arduino angeschlossen ist. Danach können bei Bedarf weitere Objekte erstellt werden, wie Schalter TasterRechtslauf (8), das bedeutet das der Taster für den Motorrechtslauf unter dem Namen TasterRechtslauf an Pin 8 des Arduino angeschlossen ist. Danach erst kommt die leere Funktion void Setup(). Die Objekterstellung erfolgt also außerhalb dieser Funktion.
Verwenden kann man die Objekte im Programm wie folgt:

Motor_1.Rechtslauf(); // Der Motor_1 läuft rechtsherum.
Motor_1.Linkslauf();  // Der Motor_1 läuft linksherum.
Motor_1.Aus();        // Der Motor_1 wird ausgeschaltet.
if (TasterRechtslauf.Zustand()) // Ist der Taster für den Rechtslauf betätigt?
  Motor_1.Rechtslauf(); // Motor_1 rechtsherum laufen lassen.

Die Bibliotheken befinden sich in den Zip-Dateien motor.zip, schalter.zip, und ausgangspin.zip,
so dass man sie über den Menüpunkt Sketch → library → add library der Arduino-Entwickungsumgebung importieren kann.
Download der Dateien: motor.zip schalter.zip ausgangspin.zip

Zum besseren Verständnis folgen hier zwei Beispiele:

/* Dieses Programm ist eine Wendeschützschaltung mit dem Arduino. */
 
#include <schalter.h> // Meine selbstgeschriebene Bibliothek.
#include <motor.h>    // Meine selbstgeschriebene Bibliothek.
 
Motor Motor1 (4,5);            // Motor1 an Pin 4 und Pin 5 des Arduino.
Schalter TasterRechtslauf (8); // Taster für den Motorrechtslauf an Pin 8. 
Schalter TasterStop (9);       // Stoptaster an Pin 9.
Schalter TasterLinkslauf (10); // Taster für den Motorlinkslauf an Pin 10.
 
void setup () {} // Kann leer bleiben.
 
void loop ()
{
  if (TasterRechtslauf.Zustand())
    Motor1.Rechtslauf();
  else if (TasterStop.Zustand())
    Motor1.Aus();
  else if (TasterLinkslauf.Zustand())
    Motor1.Linkslauf();
}

Und hier das zweite Beispiel:

/* Dies ist ein Beispielprogramm um
 * die Funktion der Klasse ausgangspin
 * am Arduino zu demonstrieren.
/*
 
#include <schalter.h>    // Meine selbstgeschriebene Bibliothek.
#include <ausgangspin.h> // Meine selbstgeschriebene Bibliothek.
 
Schalter Einschalttaster (8); // Der Einschalttaster ist an Pin 8 des Arduino.
Schalter Ausschalttaster (9); // Der Ausschalttaster ist an Pin 9.
Ausgangspin LED (4);          // Die Leuchtdiode ist an Pin 4.
 
void setup () {} // Kann leer bleiben.
 
void loop ()
{
  if (Einschalttaster.Zustand())
    LED.Ein();
  else if (Ausschalttaster.Zustand())
    LED.Aus();
}
projekte/arduino_programmierung.txt · Zuletzt geändert: 2017/12/21 23:42 von ulrich.klein
Nach oben
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0