Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fix_fft.h>
- #define AUDIOPIN 0
- const int leds=5; // Количество светодиодов
- const int DLed[leds] = {9, 8, 7, 6, 5}; // Номера выводов светодиодов
- const int res = 12; // "Разрешение" одного канала (от 1 до 64/leds*10)
- char im[128], data[128];
- char data_avgs[leds];
- int i, val, barsdiv;
- void setup() {
- barsdiv=64/leds; // Отношение 64-х столбцов спектра к количеству светодиодов
- for (i=0; i < barsdiv; i++) {
- pinMode(DLed[i], OUTPUT);
- }
- }
- void loop() {
- for (i=0; i < 128; i++){
- val = analogRead(AUDIOPIN);
- data[i] = val;
- im[i] = 0;
- };
- fix_fft(data,im,7,0);
- for (i=0; i<64; i++){
- data[i] = sqrt(data[i] * data[i] + im[i] * im[i]); // this gets the absolute value of the values in the array, so we're only dealing with positive numbers
- // !!!!! Вот тут я нихрена не понимаю, почему они данные с аудиовхода мешают с результатом преобразования????
- };
- // average bars together
- for (i=0; i < leds; i++) {
- for (val=0; val<barsdiv; val++) {
- data_avgs[i] = data_avgs[i] + data[i*barsdiv+val]; // Суммируем значения спектра для одного светодиода
- }
- data_avgs[i] = map(data_avgs[i], 0, res*barsdiv, 0, res); // Преобразуем сумму в величину от 0 до res
- // Let be the light!
- if (data_avgs[i]>res/2) {
- digitalWrite(DLed[i],1); // set the LED on
- } else {
- digitalWrite(DLed[i],0); // set the LED off
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement