Create VU.ino
This commit is contained in:
commit
1f4c87b09c
|
@ -0,0 +1,55 @@
|
|||
const int sinePin = 3;
|
||||
const int randomPin = 5;
|
||||
const int serialLedPin = 6;
|
||||
//pins 3, 5, 6, 9, 10, and 11
|
||||
const int maxOutputVoltage = 3;
|
||||
const int maxBright = 51 * maxOutputVoltage; //51 is ~1v
|
||||
const int minBright = 0;
|
||||
const int sinePeriod = 3;
|
||||
const int randomPeriod = 1;
|
||||
const bool debug = false;
|
||||
|
||||
unsigned long randomLastRunMillis = 0;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
pinMode(sinePin, OUTPUT);
|
||||
pinMode(randomPin, OUTPUT);
|
||||
pinMode(serialLedPin, OUTPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
int currentSecond = millis() / 1000;
|
||||
analogWrite(sinePin, calculateSine());
|
||||
if(millis() - randomLastRunMillis > (randomPeriod * 1000)) { analogWrite(randomPin, calculateRandom()); };
|
||||
if(Serial.available() > 0) { analogWrite(serialLedPin, map(grabSerial(), 0, 100, minBright, maxBright)); };
|
||||
}
|
||||
|
||||
int calculateSine() {
|
||||
double tempMillis = millis();
|
||||
double seed = (tempMillis / (1000.0 * sinePeriod)) * 2.0 * PI;
|
||||
int outputValue = (sin(seed) - (-1)) * (maxBright - minBright) / (1 - (-1)) + minBright;
|
||||
return outputValue;
|
||||
}
|
||||
|
||||
int calculateRandom(){
|
||||
randomLastRunMillis = millis();
|
||||
int randomBrightness = random(minBright, maxBright);
|
||||
if (debug) Serial.println(randomBrightness);
|
||||
return randomBrightness;
|
||||
}
|
||||
|
||||
int grabSerial(){
|
||||
String incomingString;
|
||||
while (Serial.available() > 0) {
|
||||
char incomingByte = Serial.read();
|
||||
if (debug) Serial.println(incomingByte, DEC);
|
||||
if (incomingByte != 0x13) { //carriage return
|
||||
incomingString.concat(incomingByte);
|
||||
} else {
|
||||
Serial.flush();
|
||||
}
|
||||
}
|
||||
if (debug) Serial.println("I received: " + incomingString);
|
||||
return incomingString.toInt();
|
||||
}
|
Loading…
Reference in New Issue