Hallo zusammen,
folgendes Problem, ich habe 2 sketche für Kehrschleifensteuerung Modellbahn. Beide funktionieren einzeln (Steuerung der Weichen, Steuerung der Fahrspannung) Wenn ich sie zusammenführe kommt Fehlermeldung: 'ButtonToggle' was not declared in this scope.
ich finde einfach den Grund nicht. Vielleicht könnt ihr mir helfen. Danke.
Gruß Uwe
int rel1 = 7 ; // PIN für Relais1
int rel2 = 8 ; // PIN für Relais2
const byte rel3 = 9;
int mhSensor1 = 2 ; // PIN für den Magnetischen Hall Sensors 1
int mhSensor2 = 3 ; // PIN für den Magnetischen Hall Sensors 2
int mhSensor34 = 4; // PIN für die Magnetischen Hall Sensoren 3 und 4
bool mhSensorstate34; // status der Hallsensoren 3 und 4
bool rel3state; // status für relais3
void setup () {
pinMode (rel1, OUTPUT) ; // definieren des PIN's für Relais1 als Ausgangssignal
pinMode (rel2, OUTPUT) ; // definieren des PIN's für Relais2 als Ausgangssignal
pinMode (mhSensor1, INPUT) ; // definieren des PIN's für den Sensor1 als Eingangssignal
pinMode (mhSensor2, INPUT) ; // definieren des PIN's für den Sensor2 als Eingangssignal
Serial.begin(9600);
pinMode(mhSensor34, INPUT_PULLUP);
pinMode(rel3, OUTPUT);
}
void loop () {
int val = digitalRead (mhSensor1) ; // Lesen des Zustandes des Sensors 1.
if (val == LOW) { //Wenn dieser AN ist dann soll Relais1 anziehen.
digitalWrite (rel1, HIGH);
delay (5000);
} else { //Wenn dieser AUS ist dann soll Relais1 NICHT anziehen.
digitalWrite (rel1, LOW);
}
{
int val = digitalRead (mhSensor2) ; // Lesen des Zustandes des Sensors2.
if (val == LOW) { //Wenn dieser AN ist dann soll Relais2 anziehen.
digitalWrite (rel2, HIGH);
delay (5000);
} else { //Wenn dieser AUS ist dann soll Relais2 NICHT anziehen.
digitalWrite (rel2, LOW);
}
{
mhSensorstate34 = !digitalRead(mhSensor34); // Hallsensoren 3 und 4 lesen invertiert
rel3state = ButtonToggle(mhSensorstate34);// verarbeiten
digitalWrite(rel3, rel3state);// ausgeben
}
bool ButtonToggle( bool btn) {
uint32_t static altzeit;
bool static status = 0;
bool static flanke = 0;
if (millis() - altzeit >= 10) { //entprellen
altzeit = millis();
if (btn & !flanke) { // Flanke abfragen
flanke = true;
status = !status; // Status toggeln
}
if (!btn) flanke = false; // reset flanke
}
return (status);
}
}