My little place on the web

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

projects:spectrumanaliser:step2_software [2012/05/06 15:40]
elger
projects:spectrumanaliser:step2_software [2016/11/16 13:06]
Line 1: Line 1:
-====== Spectrumanaliser Software ====== 
-The software for my [[projects:​spectrumanaliser|spectrumanaliser project]] is not finished, and it may never be finished because there is always some feature or improvement to make. 
  
-However, I do have a working piece of example code which basically functions. Here it is: 
- 
-<code c> 
-#include <​fix_fft.h>​ 
-#include <​ht1632c.h>​ 
- 
- 
-char im[128], data[128], raw[128], maxval[64]; 
-char x=64, ylim=16; 
-int i=0, val; 
-static long tt=0; 
- 
-ht1632c ledMatrix = ht1632c(&​PORTB,​ 10, 9, 11, 8, GEOM_32x16, 2); 
- 
-void setup() 
-{                          
- 
-  ledMatrix.clear();​ 
-  ledMatrix.pwm(15);​ 
-  ledMatrix.plot(0,​ 0, 2);  
- 
-  analogReference(DEFAULT); ​                         //  Use default (5v) aref voltage. 
-  for (int z=0; z<64; z++) { 
-    maxval[z]=15;​ 
-  };       // ​ fill the lastpass[] array with dummy data 
- 
-  // defines for setting and clearing register bits 
-#ifndef cbi 
-#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) 
-#endif 
-#ifndef sbi 
-#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) 
-#endif 
- 
-  // set prescale to 16 
-  sbi(ADCSRA,​ADPS2) ; 
-  cbi(ADCSRA,​ADPS1) ; 
-  cbi(ADCSRA,​ADPS0) ; 
- 
-}; 
- 
-void loop() 
-{ 
- 
-  //if (millis() > tt ) 
-  { 
-    ​ 
-    //​noInterrupts();​ 
-    if (i < 128) { 
-      val = analogRead(1);​ 
-      //val = ((log(analogRead(1))*1024)/​log(1024));​ 
-      data[i] = val - 512; 
-      im[i] = 0; 
-      i++; 
-    }  
-    else { 
-      //​interrupts();​ 
-      //this could be done with the fix_fftr function without the im array. 
-      //​fft_windowing(data,​7);​ 
-      fix_fft(data,​im,​7,​0);​ 
-      // I am only interessted in the absolute value of the transformation 
-      ​ 
-      bool degrade = (millis() - tt > 100); 
-      if ( degrade ) { 
-        tt = millis(); 
-      } 
-      for (i=0; i< 64;i++){ 
-        data[i] = sqrt(data[i] * data[i] + im[i] * im[i]); 
-        int y = constrain( map(data[i],​ 0, 15, 15, 0) , 0, 15)  ; 
-//        int y = constrain( map( (log( data[i]+1) * 15/​log(15)),​ 0, 15, 15 , 0 ) , 0, 15)  ; 
- 
-        ledMatrix.line(i,​ 0 , i, 15, 0);  
-        ledMatrix.line(i,​ y , i, 15, 1);              ​ 
-        ledMatrix.plot(i,​ y, 3);  
-        maxval[i] = min(maxval[i],​ y); 
-        ledMatrix.plot(i,​ maxval[i], 2);  
-        if ( degrade ) { 
-          //maxval[i] = constrain(maxval[i] +1, 0, 15) ;  ​ 
-          maxval[i] = maxval[i] + 1 ;        ​ 
-        }        ​ 
-      } 
-      i = 0; 
-      ​ 
-      ​ 
-      ledMatrix.sendframe();​ 
-    } 
- 
-  } 
-  ​ 
- 
-}; 
- 
-</​code>​