Hallo, ich habe mir vorgenommen, meine Beregnungsanlage mit einem Arduino MEGA 2560 zu Automatisieren. In der einfachen Programmierung kein Problem, aber 6 Taster mit gleichem Programm machen das sehr unübersichtlich. Also mit Objekten, habeich mir so gedacht. Gebraucht wird nur eine bool-Variable und da ist das Problem. Ich kann im Objekt eingeben was ich will (was mir so in den unwissenden Kopf kommt. Der Kompilerlauf ist immer i.O.. Gebe ich aber im Hauptprogramm Serial.print ein, um den Zustand der Variable zu sehen, kommt sofort Fehler. Ich gebe mal die Programmteile ein und hoffe das jemand die Lösung hat. Ich brauche entweder den Wert der LED oder des Ein_Speichers.
class TasterClass {
private:
int LEDPin;
int TasterPin; // Pin-Nummer für Taster
int TasterPinWert;
int LEDPinWert;
bool Wert_Taster; // Taster Ein = true oder false
bool einSpeicher;
bool Speicher;
bool Flanke;
public: //Setzen der Pin-Nummer und Initialisierung der Pin-Modi
void setPin( int TasterPinWert, int LEDPinWert) {
LEDPin = LEDPinWert;
TasterPin = TasterPinWert;
pinMode (LEDPin, OUTPUT);
pinMode (TasterPin, INPUT_PULLUP);
}
void CheckStatus() {
Wert_Taster = !digitalRead(TasterPin); // Lesen des Taster-Pins und Invertieren des Wertes (Taster gedrückt = true)
if (Wert_Taster == true && Speicher == false) {
Flanke = true;
Speicher = true;}
if (Wert_Taster == false) {
Speicher = false;}
if ( Flanke == true && einSpeicher == true) {
einSpeicher = false;
LEDPin = false;
Flanke = false;}
if ( Flanke == true && einSpeicher == false) {
einSpeicher = true;
LEDPin = true;
Flanke = false;}
// Methode zum Abrufen Zustand LED
//bool geeinSpeicher() {
return einSpeicher;} // LED
};
#include "FlipFlop.h"
TasterClass TasterE;
TasterClass TasterH; //Erzeugen einer Instanz TasterClass für den ersten Taster
TasterClass TasterA;
TasterClass TasterV1;
TasterClass TasterV2;
TasterClass TasterV3;
void setup() {
TasterE.setPin (40, 26); //Taster mit Pullup-Wiederstand
TasterH.setPin (41, 27);
TasterA.setPin (42, 28);
TasterA.setPin (43, 29);
TasterA.setPin (44, 30);
TasterA.setPin (45, 31);
Serial.begin(4800); // Initialisierung der seriellen Kommunikation mit 115200 Baud
}
void loop() {
TasterE.CheckStatus();
Serial.print("Taster wurden gedrückt: ");
//Serial.println(TasterE.geEin_Speicher());
}
Vielen Dank im voraus
Jens