// https://forum.arduino.cc/t/combine-two-different-programs-and-switch-functionalities-based-on-the-input-by-sharing-same-pins/1297173/14
byte relPin = 2, ledPin = 3;
unsigned long relMillis, ledMillis, relTime = 500, ledTime = 25;
int ledPWM = 0, ledStep = 5, ledDir = 1, oneTime;
void setup() {
pinMode(relPin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
relays();
leds();
}
void relays() {
if (millis() - relMillis > relTime) {
relMillis = millis();
digitalWrite(relPin, !digitalRead(relPin));
}
}
void leds() {
if (millis() - ledMillis > ledTime) {
ledMillis = millis();
ledPWM += ledStep * ledDir;
if (ledPWM >= 255 - ledStep || ledPWM < ledStep)
ledDir = -ledDir;
analogWrite(ledPin, ledPWM);
printPWM(ledPWM);
}
}
void printPWM(int pwm) {
if (!oneTime) {
Serial.begin(115200);
oneTime = 1;
}
for (int i = 0; i < pwm / 10; i++)
Serial.print(" ");
Serial.print("* ");
Serial.println(pwm);
}