hallo,
neulich fand ich auf garage_lab
folgendener funktioniert super, ich habe den ursprungscode um eine zweite LED und einen SR-04 erweitert und wollte ihn hier einfach mal weitergeben. Eine passage im code (in der loop) verstehe ich allerdings nicht:Code:#include <Servo.h> const int SERVO_PIN = 6; const int BUTTON_PIN = 8; const int LED_PIN = 13; Servo SRV_servo; int SRV_pos; boolean SRV_moveFoward; long SRV_nextWakeUp; int LED_value; boolean LED_moveFoward; long LED_nextWakeUp; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT); // init the compontent’s states SRV_servo.attach(SERVO_PIN); SRV_pos = 0; SRV_moveFoward = true; SRV_nextWakeUp = millis(); LED_value = 0; LED_moveFoward = true; LED_nextWakeUp = millis(); } void loop() { long currentTime = millis(); long nextWakeUpSRV = SRV_doStep(currentTime); long nextWakeUpLED = LED_doStep(currentTime); long nextMinWakeUp = (nextWakeUpSRV < nextWakeUpLED) ? nextWakeUpSRV : nextWakeUpLED; delay(nextMinWakeUp - currentTime); } /* ** SERVO ** */ long SRV_doStep(long currentMillis) { if (currentMillis > SRV_nextWakeUp) { if (SRV_moveFoward) { SRV_pos += SRV_getIncrement(); if (SRV_pos > 180) { SRV_moveFoward = false; SRV_pos = 180; } } else { SRV_pos -= SRV_getIncrement(); if (SRV_pos < 0) { SRV_moveFoward = true; SRV_pos = 0; } } SRV_servo.write(SRV_pos); SRV_nextWakeUp = currentMillis + 100; } return SRV_nextWakeUp; } int SRV_getIncrement() { if (digitalRead(BUTTON_PIN)) { return 1; } else { return 5; } } /* ** LED ** */ long LED_doStep(long currentMillis) { if (currentMillis > LED_nextWakeUp) { if (LED_moveFoward) { LED_value += 3; if (LED_value >= 200) { LED_moveFoward = false; } } else { LED_value -= 3; if (LED_value <= 0) { LED_moveFoward = true; } } analogWrite(LED_PIN, LED_value); LED_nextWakeUp = currentMillis + 1; } return LED_nextWakeUp; }
könnte mir bitte jemand erklären wozu er ist? Der code funktioniert nämlich auch ohne die passage, zumindest erkenne ich keinen unterschiedCode:long nextMinWakeUp = (nextWakeUpSRV < nextWakeUpLED) ? nextWakeUpSRV : nextWakeUpLED; delay(nextMinWakeUp - currentTime);![]()







Zitieren

Lesezeichen