Unkommentiert und ohne Erklärung.
#include <Servo.h>
const byte BUTTON_Tester = 2;
const byte LED_1 = 3;
const byte LED_2 = 4;
const byte LED_3 = 5;
const byte LED_4 = 6;
bool buttonState = 0;
const byte KANAL_1 = A0;
const byte KANAL_2 = A1;
const byte KANAL_3 = A2;
const byte KANAL_4 = A3;
bool kanalState_1 = 0;
bool kanalState_2 = 0;
bool kanalState_3 = 0;
bool kanalState_4 = 0;
Servo MyServo;
unsigned int winkel = 0;
const byte SCHALTER = 8;
int schalterState = 0;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
unsigned long pause = 6000;
unsigned long stateMillis = 0;
unsigned int pausen_wert = 6000;
int x = 0;
int y = 0;
bool millisMerker = false;
bool kanalSperre = false;
void setup()
{
Serial.begin(115200);
Serial.println(F("Start..."));
pinMode(BUTTON_Tester, INPUT_PULLUP);
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
pinMode(LED_3, OUTPUT);
pinMode(LED_4, OUTPUT);
pinMode(KANAL_1, INPUT_PULLUP);
pinMode(KANAL_2, INPUT_PULLUP);
pinMode(KANAL_3, INPUT_PULLUP);
pinMode(KANAL_4, INPUT_PULLUP);
pinMode(SCHALTER, OUTPUT);
MyServo.attach(7);
}
unsigned int schalten (unsigned int soll, unsigned int ist, unsigned int Pause)
{
static unsigned long lastmillis = 0;
if (millis() - lastmillis >= pause)
{
MyServo.attach(7);
Serial.print(F("Servo "));
if (soll > ist)
{
Serial.print("+");
ist++;
}
else if (soll < ist)
{
ist--;
Serial.print("-");
}
MyServo.write(ist);
Serial.println();
}
MyServo.detach();
return soll;
}
void loop()
{
kanalState_1 = digitalRead(KANAL_1);
kanalState_2 = digitalRead(KANAL_2);
// Kanal 1 ist Gruen
if (kanalState_1)
{
Serial.println(F("kanal1 high"));
/*
digitalWrite(LED_1, HIGH);
digitalWrite(SCHALTER, HIGH);
winkel = schalten(170, winkel, 70);
*/
}
// Kanal 2 ist Grau
if (kanalState_2)
{
if (!kanalSperre)
{
/*
digitalWrite(LED_2, HIGH);
winkel = schalten(170, winkel, 70);
*/
Serial.println(F("kanal2 high"));
kanalSperre = true;
if (!millisMerker);
{
stateMillis = millis();
Serial.print("stateMillis:");
Serial.println(stateMillis);
millisMerker = true;
}
}
}
if (!kanalState_1)
{
if (!kanalState_2)
{
/*
digitalWrite(LED_2, LOW);
winkel = schalten(0, winkel, 70);
*/
millisMerker = false;
kanalSperre = false;
Serial.println(F("alle kanaele low"));
}
else if (!millisMerker)
{
/*
digitalWrite(LED_2, LOW);
winkel = schalten(0, winkel, 70);
*/
Serial.println(F("nach millis-Ablauf alle kanaele low"));
}
}
if (millisMerker)
{
if (millis() - stateMillis > pause)
{
// winkel = schalten(0, winkel, 70);
Serial.println(F("millis() low"));
millisMerker = false;
}
}
}
Wenn der geht, muss daraus ein logisch verständliches gebaut werden.