Also ich hab mal drĂ¼ber geschaut und mir was zusammengerieben.
So und nu sag mal, was hier passiert - oder auch nicht.
compiliert fehlerfrei und ohne Warnungen ![]()
// basiert auf: https://forum.arduino.cc/t/zaehlen-von-millis-stoppen-nach-erreichen-eines-wertes/907481/19?u=my_xy_projekt
#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 merker=false;
void setup()
{
Serial.begin(115200);
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);
}
int schalten (int soll, int ist, int Pause)
{
MyServo.attach(7);
if (soll > ist)
{
for (; ist <= soll; ist++)
{
MyServo.write(ist);
delay(Pause);
}
}
if (soll < ist)
{
for (; ist >= soll; ist--)
{
MyServo.write(ist);
delay(Pause);
}
}
MyServo.detach();
return soll;
}
void loop()
{
buttonState = digitalRead(BUTTON_Tester);
kanalState_1 = digitalRead(KANAL_1);
kanalState_2 = digitalRead(KANAL_2);
kanalState_3 = digitalRead(KANAL_3);
kanalState_4 = digitalRead(KANAL_4);
// Kanal 1 ist Gruen
if (kanalState_1 == HIGH)
{
digitalWrite(LED_1, HIGH);
digitalWrite(SCHALTER, HIGH);
winkel = schalten(170, winkel, 70);
}
// Kanal 2 ist Grau
if (kanalState_2 == HIGH)
{
digitalWrite(LED_2, HIGH);
winkel = schalten(170, winkel, 70);
stateMillis = currentMillis;
Serial.print("stateMillis:");
Serial.println(stateMillis);
// pause steht auf 6000
merker = true;
}
if (!kanalState_1 && !kanalState_2)
{
digitalWrite(LED_2, LOW);
Serial.println("else Zweig");
winkel = schalten(0, winkel, 70);
}
if (millis() - stateMillis > pause && merker)
{
Serial.println("If Bedingung erfuellt.");
winkel = schalten(0, winkel, 70);
merker=false;
x = 1;
}
if (kanalState_3 == HIGH)
{
digitalWrite(LED_3, HIGH);
}
else
{
digitalWrite(LED_3, LOW);
}
if (kanalState_4 == HIGH)
{
digitalWrite(LED_4, HIGH);
}
else
{
digitalWrite(LED_4, LOW);
}
if (buttonState == LOW)
{
digitalWrite(LED_1, HIGH);
digitalWrite(LED_2, HIGH);
digitalWrite(LED_3, HIGH);
digitalWrite(LED_4, HIGH);
}
else
{
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
}
}
[edit] da war ein doppeltes codepaste drin[/edit]