#include #define LED_TYPE P9813 #define COLOR_ORDER RGB #define NUM_LEDS_MUSIKK 2 #define DATA_PIN_MUSIKK 8 #define CLOCK_PIN_MUSIKK 12 #define NUM_LEDS_ROLIG 3 #define MUSIC_VOLUME A1 #define AVG_COUNTSIZE 25 float this_read; //en bestemt volumavlesning (er float fordi matte) int avg_vol = 0; //skal brukes for å regne ut gjennomsnittlig volum int volume_reads[AVG_COUNTSIZE]; //en liste som inneholder volummålinger int max_vol = 1; //høyeste avleste volum int min_lysstyrke = 80; //laveste lysstyrke på dansegulvet (0-255) kan endres uten at ting kræsjer :) (men ikke gjør den større enn 255) int color_counter = 0; //får fargen på blinkende lys ti å endre seg int max_vol_counter = 0; //justerer max volum, sjekker hvor mange lesninger som har gått uten at max har blitt endret. justerer ned max etter N endringer int reduser_max_vol = 500; //reduserer max vol etter dette antall lesninger uten endring int rolig_faktor = 10; //høyere tall gir roligere fargeendring på lysene som ikke er på dansegulvet int rolig_led_farge = 0; //fargen på de rolige ledsa CRGB leds[NUM_LEDS_MUSIKK]; void setup() { delay(3000); FastLED.addLeds(leds, NUM_LEDS_MUSIKK + NUM_LEDS_ROLIG); } void loop() { for (int rolig = 0; rolig < rolig_faktor; rolig ++){ for (int read_nr = 0; read_nr < AVG_COUNTSIZE; read_nr++){ this_read = analogRead(MUSIC_VOLUME); //oppdatterer høyeste volum if (this_read > max_vol){ max_vol = this_read; max_vol_counter = 0; } else{ max_vol_counter += 1; } //Skalerer volumlesningen til et tall mellom min_lysstyrke og 255 this_read = int(254*(this_read/max_vol) + min_lysstyrke*(1 - (this_read/max_vol))); volume_reads[read_nr] = this_read; if (max_vol_counter > reduser_max_vol){ max_vol = int(0.95*max_vol); max_vol_counter = 0; } //regner ut gjennomsnitt av listen avg_vol = 0; for (int i = 0; i < AVG_COUNTSIZE; i++){ avg_vol += volume_reads[i]/AVG_COUNTSIZE; } //itererer gjennom alle led-stripsa og endrer farge/saturation/styrke, //leds med nummer fra NUM_LEDS_MUSIKK til NUM_LEDS_MUSIKK + NUM_LEDS_ROLIG er rolige //leds med nummer fra 0 til NUM_LEDS_MUSIKK er de som følger musikken for (int led_nr = 0; led_nr < NUM_LEDS_MUSIKK; led_nr++) { leds[led_nr] = CHSV(color_counter, 250, avg_vol); } for (int led_nr = NUM_LEDS_MUSIKK; led_nr < NUM_LEDS_MUSIKK + NUM_LEDS_ROLIG; led_nr++){ leds[led_nr] = CHSV(rolig_led_farge, 255, 255); } FastLED.show(); } //endrer fargen på de blinkende lysene if (color_counter == 255){ color_counter = 0; } else{ color_counter += 1; } } //endrer fargen på de rolige ledsa, if (rolig_led_farge == 255){ rolig_led_farge = 0; } else{ rolig_led_farge += 1; } }