Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int degr = 0;
- const int filterLen = 10;
- float filterArray[filterLen];
- int filterShift = 0;
- int filterDelay = 2;
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);
- Serial.println("clear, noised, filtered");
- }
- void loop() {
- // put your main code here, to run repeatedly:
- float clearSignal = 100*sin(radians(degr++));
- float noiseSignal = clearSignal + random(-100,100);
- if (millis() % filterDelay == 0){
- filterArray[filterShift] = noiseSignal;
- if ((filterShift < filterLen-1) and (filterArray[filterShift] > filterArray[filterShift+1])){
- for (int i=filterShift; i < filterLen - 1; i++){
- if (filterArray[i] > filterArray[i+1]) {
- float buff = filterArray[i];
- filterArray[i] = filterArray[i+1];
- filterArray[i+1] = buff;
- }
- }
- } else {
- if ((filterShift > 0) and (filterArray[filterShift-1] > filterArray[filterShift])){
- for (int i=filterShift; i > 0; i--){
- if (filterArray[i] < filterArray[i-1]){
- float buff = filterArray[i];
- filterArray[i] = filterArray[i-1];
- filterArray[i-1] = buff;
- }
- }
- }
- }
- filterShift = (filterShift+1) % (filterLen);
- }
- float filteredSignal = filterArray[(int) (filterLen/2)];
- Serial.print(clearSignal);
- Serial.print(' ');
- Serial.print(noiseSignal);
- Serial.print(' ');
- Serial.println(filteredSignal);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement