Skip to content

Instantly share code, notes, and snippets.

@radutzan
Created September 19, 2017 16:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save radutzan/ebc805fd513629814250257df15d511e to your computer and use it in GitHub Desktop.
Save radutzan/ebc805fd513629814250257df15d511e to your computer and use it in GitHub Desktop.
int led = 11, trigPin = 9, echoPin = 8;
long prevDuration = 300, realDuration, normalizedDuration;
long durationMin = 300, durationMax = 2400;
int prevBrightness;
void setup() {
pinMode(led, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
prevDuration = realDuration;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
realDuration = pulseIn(echoPin, HIGH);
normalizedDuration = constrain(realDuration, durationMin, durationMax);
Serial.print(realDuration);
Serial.print(", ");
Serial.print(normalizedDuration);
Serial.print(", ");
long durationDiff = abs(realDuration - prevDuration);
Serial.print(durationDiff);
Serial.print("\n");
if (durationDiff > 50 && durationDiff < 10000) {
int brightness = map(normalizedDuration, durationMin, durationMax, 255, 0);
fadeTo(led, brightness);
}
delay(500);
}
void fadeTo(int pin, int brightness) {
if (brightness == prevBrightness) { return; }
int d = 5;
if (brightness > prevBrightness) {
for (int i = prevBrightness; i <= brightness; i++) {
analogWrite(pin, i);
delay(d);
}
} else {
for (int i = prevBrightness; i >= brightness; i--) {
analogWrite(pin, i);
delay(d);
}
}
prevBrightness = brightness;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment