Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int data = 2;
- int clock = 3;
- int latch = 4;
- int v;
- int lights = 0;
- unsigned long startMillis = 0;
- unsigned long currentMillis;
- int fallDelay = 75;
- void setup(){
- Serial.begin(9600);
- pinMode(latch, OUTPUT);
- pinMode(clock, OUTPUT);
- pinMode(data, OUTPUT);
- }
- void loop(){
- v = getVolume();
- // v = getSerial();
- lights = calculate(v);
- Serial.println(v);
- light(lights);
- lights = 0;
- barFall();
- }
- int getSerial(){
- if (Serial.available()) {
- v = int(Serial.read()-'0');
- }
- return v;
- }
- int getVolume(){
- v=analogRead(0);
- v=constrain(v,0,100);
- v=map(v,0,100,1,8);
- return v;
- }
- int calculate(int v){
- lights = (1 << v) -1;
- return(lights);
- }
- void light(int lights){
- digitalWrite(latch, LOW);
- shiftOut(data, clock, MSBFIRST, lights);
- digitalWrite(latch, HIGH);
- delay(10);
- }
- unsigned long barFall(){
- startMillis=millis();
- for (int i = v; i > 0; i--){
- int f = ((1<<i) -1) ;
- if (millis()-startMillis < fallDelay){
- light(f);
- delay(40);
- }
- else{
- loop();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement