Hallo und zwar habe ich das Problem, das ich einen Code geschrieben habe der so eigentlich Funktionieren sollte jedoch kriege ich eine Fehlermeldung und kann auch nichts auslesen von den Sensoren (Reedsensor,Lightsensor)```
// Deklarieren der Variablen, Konstanten usw.
const byte TASTER_AUF = 8; // Tasterpin zum Oeffnen der HKS
const byte TASTER_ZU = 9; // Tasterpin zum Schließen der HKS
const byte REED_OBEN = 10; // Reed-Kontakt oben
const byte REED_UNTEN = 11; // Reed-Kontakt unten
const byte MOTOR_1 = 2; // MOTOR_PIN +/-
const byte MOTOR_2 = 4; // MOTOR_PIN -/+
const int LDR = A0; // Lichtsensor
bool REEDSTAT_OBEN = 0; // Zwischenspeicher-Variable fuer REED_OBEN
bool REEDSTAT_UNTEN = 0; // Zwischenspeicher-Variable fuer REED_UNTEN
volatile bool ISR_FLAG_AUF = 0; // Flag für INTERRUPT_TASTER_AUF
volatile bool ISR_FLAG_ZU = 0; // Flag für INTERRUPT_TASTER_ZU
int LDR_WERT = 1023; // Zwischenspeicher-Variable für LDR-WERT
int LDR_SW_MORGEN = 800; // z.B 550 als Lichtschwellwert fuer das Oeffnen am Morgen
int LDR_SW_ABEND = 700;
void setup()
{
Serial.begin(9600); // Init fuer Serial-Monitor
pinMode(MOTOR_1, OUTPUT); // Motoranschluss1 als Ausgaenge deklarieren
pinMode(MOTOR_2, OUTPUT); // Motoranschluss2 als Ausgaenge deklarieren
pinMode(TASTER_AUF, INPUT_PULLUP); // Taster-Anschluss OBEN mit internem Pullup
pinMode(TASTER_ZU, INPUT_PULLUP); // Taster-Anschluss UNTEN mit internem Pullup
pinMode(REED_OBEN, INPUT_PULLUP); // Reed-Anschluss OBEN mit internem Pullup
pinMode(REED_UNTEN, INPUT_PULLUP); // Reed-Anschluss UNTEN mit internem Pullup
attachInterrupt(0, TASTER_AUF, LOW); // Interrupt fuer Taster_AUF
attachInterrupt(1, TASTER_ZU, LOW); // Interrupt fuer Taster_ZU
}
void loop()
{
Serial.println(REEDSTAT_UNTEN);
Serial.println(LDR_WERT);
Serial.println(REEDSTAT_OBEN);
REEDSTAT_OBEN = digitalRead(REED_OBEN); // Einlesen des Reed-Kontakt-Status fuer Oben (offen od. geschlossen)
REEDSTAT_UNTEN = digitalRead(REED_UNTEN); // Einlesen des Reed-Kontakt-Status fuer Unten (offen od. geschlossen)
LDR_WERT = analogRead(LDR); // Einlesen des aktuellen LDR-Wertes
//#################################################################################################################//
//////////////////////////////////////////////
// BEDINGUNGEN : Tastendruck - Interrupt //
//////////////////////////////////////////////
//#################################################################################################################//
//###### BEDINGUNG TASTENDRUCK AUF ###############################################################################//
if (ISR_FLAG_AUF == 1) // Bedingung bei Tastendruck AUF => gesetztes ISR_FLAG_AUF
{
ISR_FLAG_AUF = 0;
while(REEDSTAT_OBEN) // Schleife die soloange durchlaufen wird bis REED_OBEN schließt
{
MOTOR_AUF();
REEDSTAT_OBEN = digitalRead(REED_OBEN); // Pruefung ob REED_OBEN "offen" oder "geschlossen" ist
}
MOTOR_STOP();
//**Serial.println("Programm befindet sich in Bedingung TASTENDRUCK AUF");
}
//###### BEDINGUNG TASTENDRUCK ZU ###############################################################################//
else if (ISR_FLAG_ZU == 1) // Bedingung bei Tastendruck ZU => gesetztes ISR_FLAG_ZU
{
ISR_FLAG_ZU = 0;
while(REEDSTAT_UNTEN) // Schleife die soloange durchlaufen wird bis REED_UNTEN schließt
{
MOTOR_AB();
REEDSTAT_UNTEN = digitalRead(REED_UNTEN); // Pruefung ob REED_UNTEN "offen" oder "geschlossen" ist
}
MOTOR_STOP();
//**Serial.println("Programm befindet sich in Bedingung TASTENDRUCK ZU"); //(fuer Diagnose-Zwecke)
}
//#################################################################################################################//
//////////////////////////////////////////////
// BEDINGUNGEN : ENTWEDER LDR ODER ZEITSTRG //
//////////////////////////////////////////////
//#################################################################################################################//
//###### BEDINGUNG LDR/ZEITSTRG AUF ####### #####################################################################//
if (LDR_WERT >= LDR_SW_MORGEN)
{
while(REEDSTAT_OBEN) // Schleife die soloange durchlaufen wird bis REED_OBEN schließt
{
MOTOR_AUF();
REEDSTAT_OBEN = digitalRead(REED_OBEN); // Pruefung ob REED_OBEN "offen" oder "geschlossen" ist
}
MOTOR_STOP();
//**Serial.println("Programm befindet sich in Bedingung LDR/ZEITRG-AUF"); //(fuer Diagnose-Zwecke)
}
//###### BEDINGUNG LDR/ZEITSTRG ZU ####### ######################################################################//
else if (LDR_WERT <= LDR_SW_ABEND)
{
while(REEDSTAT_UNTEN) // Schleife die soloange durchlaufen wird bis REED_UNTEN schließt
{
MOTOR_AB();
REEDSTAT_UNTEN = digitalRead(REED_UNTEN); // Pruefung ob REED_UNTEN "offen" oder "geschlossen" ist
}
MOTOR_STOP();
//**Serial.println("Programm befindet sich in Bedingung LDR/ZEITRG-ZU"); //(fuer Diagnose-Zwecke)
}
//#################################################################################################################//
//////////////////
// FUNKTIONEN : //
//////////////////
//#################################################################################################################//
}
void INTERRUPT_TASTER_AUF()
{
ISR_FLAG_AUF=1;
}
void INTERRUPT_TASTER_ZU()
{
ISR_FLAG_ZU=1;
}
void MOTOR_AUF()
{
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, LOW);
//**Serial.println("CCC STATUS ON - KLAPPE OEFFNET"); //(fuer Diagnose-Zwecke)
}
void MOTOR_AB()
{
digitalWrite(MOTOR_1, LOW);
digitalWrite(MOTOR_2, HIGH);
//**Serial.println("CCC STATUS ON - KLAPPE SCHLIESST"); //(fuer Diagnose-Zwecke)
}
void MOTOR_STOP()
{
digitalWrite(MOTOR_1, LOW);
digitalWrite(MOTOR_2, LOW);
//**Serial.println("MOTORSTOP wird ausgefuehrt"); //(fuer Diagnose-Zwecke)
}
zudem kriege ich noch diese Fehlermeldung:
:\Users\kingj\Documents\Arduino\CCC_V1.23.6_STABLE_GER\CCC_V1.23.6_STABLE_GER.ino: In function 'void setup()':
C:\Users\kingj\Documents\Arduino\CCC_V1.23.6_STABLE_GER\CCC_V1.23.6_STABLE_GER.ino:35:37: warning: invalid conversion from 'byte {aka unsigned char}' to 'void ()()' [-fpermissive]
attachInterrupt(0, TASTER_AUF, LOW); // Interrupt fuer Taster_AUF
^
In file included from sketch\CCC_V1.23.6_STABLE_GER.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:151:6: note: initializing argument 2 of 'void attachInterrupt(uint8_t, void ()(), int)'
void attachInterrupt(uint8_t interruptNum, void (userFunc)(void), int mode);
^~~~~~~~~~~~~~~
C:\Users\kingj\Documents\Arduino\CCC_V1.23.6_STABLE_GER\CCC_V1.23.6_STABLE_GER.ino:36:36: warning: invalid conversion from 'byte {aka unsigned char}' to 'void ()()' [-fpermissive]
attachInterrupt(1, TASTER_ZU, LOW); // Interrupt fuer Taster_ZU
^
In file included from sketch\CCC_V1.23.6_STABLE_GER.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:151:6: note: initializing argument 2 of 'void attachInterrupt(uint8_t, void (*)(), int)'
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);
^~~~~~~~~~~~~~~