/*
  FadeWOD & analogWriteRead, adapted from
  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Fade
  https://github.com/arduino/arduino-examples/blob/main/examples/01.Basics/Fade/Fade.ino
  Simulation at https://wokwi.com/arduino/projects/323945277471851092
  Forum https://forum.arduino.cc/t/what-is-the-inverse-of-analogwrite-pin-val/960774
  Arduino CC0-1.0
  DaveX 2022-02-18 CC SA

  This example shows how to fade an LED on pin 9 using the analogWrite()
  function without blocking.

  The analogWrite() function uses PWM, so if you want to change the pin you're
  using, be sure to use another PWM capable pin. On most Arduino, the PWM pins
  are identified with a "~" sign, like ~3, ~5, ~6, ~9, ~10 and ~11.

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Fade
*/

int led = 9;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup() {
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // non-blocking wrapper
  const unsigned long adjustInterval = 30;
  static unsigned long lastAdjust = 0;
  if ( millis() - lastAdjust > adjustInterval) {
    lastAdjust += adjustInterval;
    // set the brightness of pin 9:
    analogWrite(led, brightness);

    // change the brightness for next time through the loop:
    brightness = brightness + fadeAmount;

    // reverse the direction of the fading at the ends of the fade:
    if (brightness <= 0 || brightness >= 255) {
      fadeAmount = -fadeAmount;
    }
    // wait for 30 milliseconds to see the dimming effect
    //delay(30); // handled by adjustInterval
  
    // ***************
    // This `analogWriteRead(pin);` functionality is what I'm looking for: 
    // Serial.println(analogWriteRead(9));
    // *************** 

  } // end of millis() adjustInterval code

}