Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int degr = 0;
  2. const int filterLen = 10;
  3. float filterArray[filterLen];
  4. int filterShift = 0;
  5. int filterDelay = 2;
  6. void setup() {
  7.   // put your setup code here, to run once:
  8.   Serial.begin(9600);
  9.   Serial.println("clear, noised, filtered");
  10. }
  11.  
  12. void loop() {
  13.   // put your main code here, to run repeatedly:
  14.   float clearSignal = 100*sin(radians(degr++));
  15.   float noiseSignal = clearSignal + random(-100,100);
  16.    if (millis() % filterDelay == 0){
  17.     filterArray[filterShift] = noiseSignal;
  18.     if ((filterShift < filterLen-1) and (filterArray[filterShift] > filterArray[filterShift+1])){
  19.       for (int i=filterShift; i < filterLen - 1; i++){
  20.         if (filterArray[i] > filterArray[i+1]) {
  21.           float buff = filterArray[i];
  22.           filterArray[i] = filterArray[i+1];
  23.           filterArray[i+1] = buff;
  24.         }
  25.       }
  26.     } else {
  27.       if ((filterShift > 0) and (filterArray[filterShift-1] > filterArray[filterShift])){
  28.         for (int i=filterShift; i > 0; i--){
  29.           if (filterArray[i] < filterArray[i-1]){
  30.             float buff = filterArray[i];
  31.             filterArray[i] = filterArray[i-1];
  32.             filterArray[i-1] = buff;
  33.           }
  34.         }
  35.       }
  36.     }
  37.     filterShift = (filterShift+1) % (filterLen);
  38.    
  39.   }
  40.   float filteredSignal = filterArray[(int) (filterLen/2)];
  41.   Serial.print(clearSignal);
  42.   Serial.print(' ');
  43.   Serial.print(noiseSignal);
  44.   Serial.print(' ');
  45.   Serial.println(filteredSignal);
  46.  
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement