Skip to content

Instantly share code, notes, and snippets.

@sidmani
Last active January 8, 2018 04:00
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 sidmani/99a60c3023d9e96477e508ca8086434b to your computer and use it in GitHub Desktop.
Save sidmani/99a60c3023d9e96477e508ca8086434b to your computer and use it in GitHub Desktop.
Simple method to flash an RGB LED to audio input.
/*
* MIT License
* Copyright (c) 2018 Sid Mani
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
// RGB LED on PWM pins 12, 14, 15
// Audio in on A1
void setup() {
randomSeed(A0);
}
void loop() {
int oldVal = analogRead(A1);
int sensorValue = oldVal;
int red;
int blue;
int green;
if (sensorValue < 200) {
red = random(10, 50);
blue = random(30, 100);
green = random(15, 120);
} else if (sensorValue < 400) {
red = random(10, 100);
blue = random(30, 125);
green = random(150, 255);
} else if (sensorValue < 600) {
red = random(10, 120);
blue = random(150, 255);
green = random(90, 225);
} else if (sensorValue < 800) {
red = random(100, 200);
blue = random(90, 200);
green = random(120, 150);
} else if (sensorValue < 1024) {
red = random(190, 255);
blue = random(180, 240);
green = random(150, 230);
}
analogWrite(12, 255 - red);
analogWrite(14, 2*(255 - green));
analogWrite(15, 2*(255 - blue));
while ((analogRead(A1)) > (oldVal - 10) & (analogRead(A1)) < (oldVal + 10)) { delay(45); }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment