Coder Social home page Coder Social logo

Comments (6)

edgar-bonet avatar edgar-bonet commented on July 25, 2024

This is very weird. It would be nice if the problem could be tested in a reproducible way, which is difficult if a pot is involved. I would suggest performing a test that does not depend on external hardware.

Could you try running the sketch below on your Teensy?

#include <ResponsiveAnalogRead.h>

ResponsiveAnalogRead analog(A0, true);

void setup() {
    Serial.begin(9600);
}

void loop() {
    analog.update(random(480, 544));
    Serial.print(analog.getRawValue());
    Serial.print("\t");
    Serial.println(analog.getValue());
    delay(20);
}

Does it show the excessive jitter you experienced previously? If so, could you share here the program's output?

from responsiveanalogread.

MastaRob avatar MastaRob commented on July 25, 2024

No probs - when run it's just a random stream around the values you specified. Like:

18:51:27.058 -> 509 522
18:51:27.092 -> 539 526
18:51:27.126 -> 532 527
18:51:27.126 -> 521 527
18:51:27.160 -> 502 517
18:51:27.160 -> 496 509
18:51:27.194 -> 490 503
18:51:27.228 -> 533 503
18:51:27.228 -> 484 497
18:51:27.262 -> 527 510
18:51:27.262 -> 502 510
18:51:27.296 -> 481 497
18:51:27.296 -> 535 517
18:51:27.330 -> 488 504
18:51:27.364 -> 533 516
18:51:27.364 -> 482 499
18:51:27.398 -> 512 499
18:51:27.398 -> 496 499
18:51:27.432 -> 492 499
18:51:27.466 -> 500 499
18:51:27.466 -> 522 507
18:51:27.500 -> 514 508
18:51:27.500 -> 514 508
18:51:27.534 -> 537 521
18:51:27.568 -> 542 528
18:51:27.568 -> 533 528
18:51:27.602 -> 510 528
18:51:27.602 -> 482 499
18:51:27.636 -> 539 521
18:51:27.636 -> 529 522
18:51:27.670 -> 536 525
18:51:27.704 -> 541 529
18:51:27.704 -> 540 531
18:51:27.738 -> 542 533
18:51:27.738 -> 483 499
18:51:27.772 -> 516 499
18:51:27.806 -> 491 498
18:51:27.806 -> 539 521
18:51:27.840 -> 539 526
18:51:27.840 -> 538 528
18:51:27.874 -> 512 528
18:51:27.908 -> 503 518
18:51:27.908 -> 528 518
18:51:27.942 -> 495 509
18:51:27.942 -> 533 509
18:51:27.976 -> 511 509
18:51:27.976 -> 523 512
18:51:28.010 -> 533 519
18:51:28.044 -> 500 519
18:51:28.044 -> 540 526
18:51:28.078 -> 526 526
18:51:28.078 -> 494 510
18:51:28.112 -> 521 510
18:51:28.147 -> 488 502
18:51:28.147 -> 539 521

from responsiveanalogread.

edgar-bonet avatar edgar-bonet commented on July 25, 2024

I modified my test program in order to feed the filter with the exact same inputs as you:

#include <ResponsiveAnalogRead.h>

int inputs[] = {
    509, 539, 532, 521, 502, 496, 490, 533, 484, 527, 502, 481, 535,
    488, 533, 482, 512, 496, 492, 500, 522, 514, 514, 537, 542, 533,
    510, 482, 539, 529, 536, 541, 540, 542, 483, 516, 491, 539, 539,
    538, 512, 503, 528, 495, 533, 511, 523, 533, 500, 540, 526, 494,
    521, 488, 539
};
const size_t INPUT_COUNT = sizeof inputs / sizeof inputs[0];

ResponsiveAnalogRead analog(A0, true);

void setup() {
    Serial.begin(9600);
}

void loop() {
    static size_t i;
    analog.update(inputs[i++]);
    Serial.print(analog.getRawValue());
    Serial.print("\t");
    Serial.println(analog.getValue());
    delay(20);
    if (i == INPUT_COUNT)
        exit(0);
}

I get slightly different outputs at the beginning of the run:

509 509
539 522
532 524
521 524
502 516
496 509
490 503
533 516
484 500
527 511
502 511
481 497
535 517
...

but then, starting from the 12th point, the outputs are identical. In both cases the output looks like a somewhat smoothed version of the input. I see nothing that looks like “crazy jitter”, only expected behavior.

It would then seem that a pseudo-random input doesn't trigger the problem. Do you think you can provide a sequence of input numbers that, when fed to the filter, generates an output displaying the weird jitter you are experiencing?

from responsiveanalogread.

MastaRob avatar MastaRob commented on July 25, 2024

Yup, very odd - I dont have the chops to be able to speculate on it myself though, and not enough time to dig into it deeper! But anyway here is a section of the jitter using a pot (a few small moves, then in and out of the jitter region twice):

23:54:03.710 -> Analogue read:433 Rawvalue:433 Filtered:429
23:54:03.778 -> Analogue read:434 Rawvalue:435 Filtered:430
23:54:03.812 -> Analogue read:434 Rawvalue:436 Filtered:431
23:54:04.900 -> Analogue read:435 Rawvalue:436 Filtered:432
23:54:04.967 -> Analogue read:458 Rawvalue:457 Filtered:441
23:54:05.001 -> Analogue read:471 Rawvalue:471 Filtered:454
23:54:05.069 -> Analogue read:475 Rawvalue:474 Filtered:460
23:54:05.103 -> Analogue read:474 Rawvalue:474 Filtered:463
23:54:05.171 -> Analogue read:475 Rawvalue:474 Filtered:465
23:54:05.205 -> Analogue read:474 Rawvalue:475 Filtered:467
23:54:05.273 -> Analogue read:475 Rawvalue:475 Filtered:468
23:54:05.307 -> Analogue read:475 Rawvalue:475 Filtered:469
23:54:05.341 -> Analogue read:475 Rawvalue:476 Filtered:470
23:54:05.409 -> Analogue read:475 Rawvalue:474 Filtered:471
23:54:05.443 -> Analogue read:475 Rawvalue:477 Filtered:472
23:54:06.395 -> Analogue read:476 Rawvalue:477 Filtered:473
23:54:06.462 -> Analogue read:497 Rawvalue:497 Filtered:482
23:54:06.496 -> Analogue read:525 Rawvalue:525 Filtered:507
23:54:06.564 -> Analogue read:554 Rawvalue:554 Filtered:536
23:54:06.598 -> Analogue read:554 Rawvalue:555 Filtered:542
23:54:06.666 -> Analogue read:555 Rawvalue:555 Filtered:545
23:54:06.700 -> Analogue read:555 Rawvalue:555 Filtered:546
23:54:06.768 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:06.802 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:06.836 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:06.904 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:06.938 -> Analogue read:556 Rawvalue:556 Filtered:552
23:54:07.005 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:07.039 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:07.107 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:07.141 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:07.209 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:07.243 -> Analogue read:555 Rawvalue:534 Filtered:546
23:54:07.311 -> Analogue read:555 Rawvalue:555 Filtered:547
23:54:07.345 -> Analogue read:556 Rawvalue:555 Filtered:548
23:54:07.413 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:07.447 -> Analogue read:556 Rawvalue:555 Filtered:550
23:54:07.515 -> Analogue read:556 Rawvalue:555 Filtered:551
23:54:07.549 -> Analogue read:556 Rawvalue:556 Filtered:552
23:54:07.617 -> Analogue read:555 Rawvalue:542 Filtered:550
23:54:07.651 -> Analogue read:555 Rawvalue:556 Filtered:551
23:54:07.719 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:07.753 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:07.821 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:07.855 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:07.923 -> Analogue read:555 Rawvalue:557 Filtered:550
23:54:07.957 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:08.025 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:08.059 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:08.127 -> Analogue read:549 Rawvalue:555 Filtered:548
23:54:08.161 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:08.229 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:08.263 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:08.331 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:08.365 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:08.399 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:08.467 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:08.501 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:08.569 -> Analogue read:556 Rawvalue:555 Filtered:551
23:54:08.603 -> Analogue read:555 Rawvalue:535 Filtered:546
23:54:08.671 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:08.705 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:08.773 -> Analogue read:556 Rawvalue:555 Filtered:550
23:54:08.807 -> Analogue read:555 Rawvalue:556 Filtered:551
23:54:08.875 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:08.909 -> Analogue read:556 Rawvalue:534 Filtered:546
23:54:08.977 -> Analogue read:556 Rawvalue:555 Filtered:547
23:54:09.011 -> Analogue read:555 Rawvalue:554 Filtered:548
23:54:09.080 -> Analogue read:556 Rawvalue:555 Filtered:549
23:54:09.114 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:09.188 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:09.221 -> Analogue read:555 Rawvalue:557 Filtered:552
23:54:09.255 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:09.326 -> Analogue read:556 Rawvalue:555 Filtered:548
23:54:09.360 -> Analogue read:556 Rawvalue:555 Filtered:549
23:54:09.428 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:09.462 -> Analogue read:555 Rawvalue:554 Filtered:551
23:54:09.530 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:09.564 -> Analogue read:549 Rawvalue:555 Filtered:548
23:54:09.632 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:09.666 -> Analogue read:556 Rawvalue:555 Filtered:550
23:54:09.734 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:09.768 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:09.836 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:09.870 -> Analogue read:535 Rawvalue:556 Filtered:548
23:54:09.938 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:09.972 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:10.039 -> Analogue read:555 Rawvalue:554 Filtered:551
23:54:10.073 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:10.141 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:10.175 -> Analogue read:556 Rawvalue:556 Filtered:548
23:54:10.243 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:10.277 -> Analogue read:556 Rawvalue:555 Filtered:550
23:54:10.311 -> Analogue read:555 Rawvalue:556 Filtered:551
23:54:10.379 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:10.412 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:10.468 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:10.535 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:10.569 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:10.637 -> Analogue read:556 Rawvalue:555 Filtered:551
23:54:10.671 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:10.739 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:10.773 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:10.841 -> Analogue read:555 Rawvalue:554 Filtered:550
23:54:10.875 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:10.943 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:10.977 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:11.045 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:11.079 -> Analogue read:542 Rawvalue:555 Filtered:550
23:54:11.147 -> Analogue read:555 Rawvalue:556 Filtered:551
23:54:11.181 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:11.215 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:11.283 -> Analogue read:554 Rawvalue:555 Filtered:549
23:54:11.317 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:11.386 -> Analogue read:555 Rawvalue:556 Filtered:551
23:54:11.420 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:11.488 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:11.522 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:11.590 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:11.624 -> Analogue read:556 Rawvalue:555 Filtered:550
23:54:11.692 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:11.726 -> Analogue read:556 Rawvalue:556 Filtered:552
23:54:11.794 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:11.828 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:11.896 -> Analogue read:549 Rawvalue:555 Filtered:549
23:54:11.930 -> Analogue read:555 Rawvalue:556 Filtered:550
23:54:11.998 -> Analogue read:556 Rawvalue:556 Filtered:551
23:54:12.032 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:12.100 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:12.134 -> Analogue read:556 Rawvalue:555 Filtered:549
23:54:12.202 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:12.236 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:12.270 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:12.337 -> Analogue read:556 Rawvalue:556 Filtered:548
23:54:12.376 -> Analogue read:556 Rawvalue:555 Filtered:549
23:54:12.444 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:12.478 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:12.546 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:12.580 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:12.648 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:12.682 -> Analogue read:556 Rawvalue:555 Filtered:550
23:54:12.750 -> Analogue read:555 Rawvalue:556 Filtered:551
23:54:12.784 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:12.852 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:12.886 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:12.920 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:12.988 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:13.022 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:13.090 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:13.124 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:13.192 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:13.226 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:13.294 -> Analogue read:555 Rawvalue:556 Filtered:551
23:54:13.328 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:13.396 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:13.430 -> Analogue read:555 Rawvalue:535 Filtered:544
23:54:13.498 -> Analogue read:555 Rawvalue:555 Filtered:546
23:54:13.532 -> Analogue read:555 Rawvalue:554 Filtered:547
23:54:13.600 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:13.634 -> Analogue read:555 Rawvalue:556 Filtered:549
23:54:13.702 -> Analogue read:554 Rawvalue:556 Filtered:550
23:54:13.736 -> Analogue read:556 Rawvalue:555 Filtered:551
23:54:13.804 -> Analogue read:556 Rawvalue:557 Filtered:552
23:54:13.838 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:13.906 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:13.940 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:14.008 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:14.042 -> Analogue read:557 Rawvalue:535 Filtered:546
23:54:14.076 -> Analogue read:534 Rawvalue:556 Filtered:548
23:54:14.144 -> Analogue read:555 Rawvalue:556 Filtered:549
23:54:14.178 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:14.246 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:14.280 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:14.348 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:14.382 -> Analogue read:556 Rawvalue:556 Filtered:548
23:54:14.450 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:14.484 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:14.552 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:14.586 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:14.653 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:14.687 -> Analogue read:556 Rawvalue:555 Filtered:548
23:54:14.754 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:14.788 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:14.856 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:14.890 -> Analogue read:555 Rawvalue:555 Filtered:552
23:54:14.958 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:14.991 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:15.059 -> Analogue read:555 Rawvalue:556 Filtered:549
23:54:15.093 -> Analogue read:556 Rawvalue:555 Filtered:550
23:54:15.161 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:15.195 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:15.262 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:15.296 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:15.363 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:15.399 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:15.467 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:15.501 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:15.535 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:15.603 -> Analogue read:555 Rawvalue:555 Filtered:548
23:54:15.637 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:15.705 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:15.739 -> Analogue read:556 Rawvalue:555 Filtered:551
23:54:15.807 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:15.841 -> Analogue read:555 Rawvalue:535 Filtered:547
23:54:15.909 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:15.943 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:16.011 -> Analogue read:554 Rawvalue:555 Filtered:550
23:54:16.045 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:16.113 -> Analogue read:556 Rawvalue:557 Filtered:552
23:54:16.147 -> Analogue read:556 Rawvalue:535 Filtered:547
23:54:16.215 -> Analogue read:555 Rawvalue:556 Filtered:548
23:54:16.249 -> Analogue read:555 Rawvalue:555 Filtered:549
23:54:16.317 -> Analogue read:555 Rawvalue:555 Filtered:550
23:54:16.351 -> Analogue read:555 Rawvalue:555 Filtered:551
23:54:16.419 -> Analogue read:555 Rawvalue:556 Filtered:552
23:54:16.453 -> Analogue read:573 Rawvalue:574 Filtered:559
23:54:16.521 -> Analogue read:603 Rawvalue:602 Filtered:584
23:54:16.555 -> Analogue read:610 Rawvalue:609 Filtered:594
23:54:16.589 -> Analogue read:611 Rawvalue:609 Filtered:597
23:54:16.657 -> Analogue read:610 Rawvalue:609 Filtered:600
23:54:16.691 -> Analogue read:610 Rawvalue:610 Filtered:601
23:54:16.759 -> Analogue read:610 Rawvalue:610 Filtered:602
23:54:16.793 -> Analogue read:610 Rawvalue:610 Filtered:603
23:54:16.861 -> Analogue read:610 Rawvalue:609 Filtered:604
23:54:16.895 -> Analogue read:610 Rawvalue:610 Filtered:605
23:54:16.963 -> Analogue read:610 Rawvalue:610 Filtered:606
23:54:17.031 -> Analogue read:610 Rawvalue:612 Filtered:607
23:54:20.030 -> Analogue read:604 Rawvalue:603 Filtered:606
23:54:20.098 -> Analogue read:586 Rawvalue:586 Filtered:599
23:54:20.132 -> Analogue read:578 Rawvalue:579 Filtered:592
23:54:20.200 -> Analogue read:575 Rawvalue:576 Filtered:588
23:54:20.234 -> Analogue read:575 Rawvalue:576 Filtered:585
23:54:20.302 -> Analogue read:568 Rawvalue:567 Filtered:579
23:54:20.336 -> Analogue read:566 Rawvalue:567 Filtered:577
23:54:20.404 -> Analogue read:566 Rawvalue:566 Filtered:574
23:54:20.438 -> Analogue read:563 Rawvalue:564 Filtered:572
23:54:20.472 -> Analogue read:555 Rawvalue:556 Filtered:568
23:54:20.540 -> Analogue read:513 Rawvalue:520 Filtered:536
23:54:20.574 -> Analogue read:510 Rawvalue:510 Filtered:525
23:54:20.642 -> Analogue read:510 Rawvalue:537 Filtered:528
23:54:20.676 -> Analogue read:510 Rawvalue:510 Filtered:522
23:54:20.744 -> Analogue read:510 Rawvalue:510 Filtered:519
23:54:20.778 -> Analogue read:510 Rawvalue:510 Filtered:518
23:54:20.846 -> Analogue read:510 Rawvalue:510 Filtered:516
23:54:20.880 -> Analogue read:510 Rawvalue:510 Filtered:515
23:54:20.948 -> Analogue read:509 Rawvalue:510 Filtered:514
23:54:20.982 -> Analogue read:510 Rawvalue:510 Filtered:513
23:54:21.050 -> Analogue read:510 Rawvalue:539 Filtered:523
23:54:21.084 -> Analogue read:510 Rawvalue:510 Filtered:520
23:54:21.152 -> Analogue read:510 Rawvalue:510 Filtered:518
23:54:21.186 -> Analogue read:510 Rawvalue:510 Filtered:517
23:54:21.254 -> Analogue read:510 Rawvalue:510 Filtered:516
23:54:21.288 -> Analogue read:511 Rawvalue:510 Filtered:515
23:54:21.356 -> Analogue read:510 Rawvalue:510 Filtered:514
23:54:21.390 -> Analogue read:510 Rawvalue:510 Filtered:513
23:54:21.458 -> Analogue read:510 Rawvalue:508 Filtered:512
23:54:21.492 -> Analogue read:510 Rawvalue:538 Filtered:522
23:54:21.560 -> Analogue read:510 Rawvalue:510 Filtered:520
23:54:21.594 -> Analogue read:510 Rawvalue:510 Filtered:518
23:54:21.661 -> Analogue read:508 Rawvalue:509 Filtered:516
23:54:21.695 -> Analogue read:510 Rawvalue:510 Filtered:515
23:54:21.763 -> Analogue read:511 Rawvalue:510 Filtered:514
23:54:21.797 -> Analogue read:510 Rawvalue:509 Filtered:513
23:54:21.865 -> Analogue read:509 Rawvalue:508 Filtered:512
23:54:21.933 -> Analogue read:510 Rawvalue:524 Filtered:514
23:54:21.967 -> Analogue read:509 Rawvalue:510 Filtered:513
23:54:22.035 -> Analogue read:510 Rawvalue:508 Filtered:512
23:54:22.103 -> Analogue read:510 Rawvalue:531 Filtered:518
23:54:22.137 -> Analogue read:510 Rawvalue:510 Filtered:517
23:54:22.205 -> Analogue read:510 Rawvalue:511 Filtered:516
23:54:22.243 -> Analogue read:509 Rawvalue:509 Filtered:515
23:54:22.276 -> Analogue read:510 Rawvalue:510 Filtered:514
23:54:22.344 -> Analogue read:510 Rawvalue:510 Filtered:513
23:54:22.412 -> Analogue read:538 Rawvalue:539 Filtered:523
23:54:22.480 -> Analogue read:510 Rawvalue:510 Filtered:520
23:54:22.514 -> Analogue read:508 Rawvalue:509 Filtered:518
23:54:22.548 -> Analogue read:510 Rawvalue:509 Filtered:516
23:54:22.615 -> Analogue read:509 Rawvalue:510 Filtered:515
23:54:22.649 -> Analogue read:510 Rawvalue:510 Filtered:514
23:54:22.717 -> Analogue read:510 Rawvalue:510 Filtered:513
23:54:22.784 -> Analogue read:509 Rawvalue:508 Filtered:512
23:54:22.818 -> Analogue read:524 Rawvalue:539 Filtered:523
23:54:22.886 -> Analogue read:511 Rawvalue:510 Filtered:520
23:54:22.920 -> Analogue read:511 Rawvalue:508 Filtered:517
23:54:22.988 -> Analogue read:509 Rawvalue:510 Filtered:516
23:54:23.022 -> Analogue read:511 Rawvalue:510 Filtered:515
23:54:23.090 -> Analogue read:510 Rawvalue:510 Filtered:514
23:54:23.124 -> Analogue read:510 Rawvalue:510 Filtered:513
23:54:23.192 -> Analogue read:509 Rawvalue:531 Filtered:518
23:54:23.226 -> Analogue read:518 Rawvalue:523 Filtered:519
23:54:23.260 -> Analogue read:524 Rawvalue:539 Filtered:525
23:54:23.328 -> Analogue read:517 Rawvalue:538 Filtered:528
23:54:23.362 -> Analogue read:517 Rawvalue:538 Filtered:529
23:54:23.430 -> Analogue read:510 Rawvalue:510 Filtered:523
23:54:23.464 -> Analogue read:510 Rawvalue:517 Filtered:522
23:54:23.532 -> Analogue read:509 Rawvalue:510 Filtered:519
23:54:23.566 -> Analogue read:510 Rawvalue:510 Filtered:518
23:54:23.634 -> Analogue read:511 Rawvalue:510 Filtered:516
23:54:23.668 -> Analogue read:524 Rawvalue:538 Filtered:524
23:54:23.736 -> Analogue read:510 Rawvalue:510 Filtered:520
23:54:23.770 -> Analogue read:510 Rawvalue:510 Filtered:518
23:54:23.838 -> Analogue read:510 Rawvalue:510 Filtered:517
23:54:23.871 -> Analogue read:510 Rawvalue:509 Filtered:516
23:54:23.939 -> Analogue read:510 Rawvalue:510 Filtered:515
23:54:23.973 -> Analogue read:510 Rawvalue:510 Filtered:514
23:54:24.041 -> Analogue read:510 Rawvalue:510 Filtered:513
23:54:24.075 -> Analogue read:510 Rawvalue:539 Filtered:523
23:54:24.143 -> Analogue read:510 Rawvalue:509 Filtered:520
23:54:24.177 -> Analogue read:509 Rawvalue:510 Filtered:518
23:54:24.245 -> Analogue read:510 Rawvalue:509 Filtered:516
23:54:24.279 -> Analogue read:510 Rawvalue:510 Filtered:515
23:54:24.347 -> Analogue read:509 Rawvalue:509 Filtered:514
23:54:24.384 -> Analogue read:510 Rawvalue:510 Filtered:513
23:54:24.418 -> Analogue read:510 Rawvalue:532 Filtered:518
23:54:24.486 -> Analogue read:510 Rawvalue:510 Filtered:517
23:54:24.523 -> Analogue read:510 Rawvalue:508 Filtered:515
23:54:24.593 -> Analogue read:473 Rawvalue:473 Filtered:490
23:54:24.627 -> Analogue read:438 Rawvalue:437 Filtered:453
23:54:24.695 -> Analogue read:429 Rawvalue:428 Filtered:443
23:54:24.729 -> Analogue read:429 Rawvalue:430 Filtered:440
23:54:24.797 -> Analogue read:428 Rawvalue:428 Filtered:437
23:54:24.831 -> Analogue read:428 Rawvalue:428 Filtered:436
23:54:24.899 -> Analogue read:428 Rawvalue:428 Filtered:434
23:54:24.933 -> Analogue read:427 Rawvalue:428 Filtered:433
23:54:25.001 -> Analogue read:428 Rawvalue:428 Filtered:432
23:54:25.035 -> Analogue read:428 Rawvalue:428 Filtered:431
23:54:25.103 -> Analogue read:428 Rawvalue:427 Filtered:430
23:54:25.579 -> Analogue read:427 Rawvalue:424 Filtered:429
23:54:25.714 -> Analogue read:426 Rawvalue:422 Filtered:428

Looking at it again now, it looks like I was wrong and the analogueRead is mostly stable - but not always, just occasionally going outside the norm. I also note that adding 20 seems to be a favourite - on some runs, almost all the extra is 20. Very bizzarro.

And this the code I was using (note does the same if I am not taking an analogueRead):

#include <ResponsiveAnalogRead.h>

int val;
ResponsiveAnalogRead analog1(A0, true);

void setup()
{
Serial.begin(28800);
}

void loop()
{
analog1.update();
val=analog1.getValue();

if(analog1.hasChanged()) {
Serial.print (" Analogue read:");
Serial.print (analogRead(A0));
Serial.print (" Rawvalue:");
Serial.print(analog1.getRawValue());
Serial.print (" Filtered:");
Serial.println(val);

delay (50);
}
}

from responsiveanalogread.

edgar-bonet avatar edgar-bonet commented on July 25, 2024

There is a problem here:

if(analog1.hasChanged()) {

You are printing the data only when the library judges that the change in input is significant enough that it should be reflected on the output. We then don't see the real stream of data you are feeding to the filter, which makes it impossible to try to reproduce the problem.

I also note that adding 20 seems to be a favourite

What I do see is that the input makes jumps of 20. It is most clear in the section of the data from the 19th to the 215th data point, where the input fluctuates mostly between 555 and 535.

As for the output, it just follows the input's fluctuations with a smaller amplitude. When the input drops to 535, the outputs starts going down. But then, the input rises again to 555, and the output responds by going up again:

filter response

In my opinion this data set shows nothing wrong in the filter's behavior: this is exactly what you should expect from a smoothing filter. Your problem seems to be that the data you feed to the filter's input has an unusually high level of noise, with a weird bimodal density function. You could try to mitigate this problem by decreasing the “snap multiplier” in order to make the filter more aggressive. For example:

// snapMultiplier defaults to 1e-2. Setting it to 3e-3 makes
// the filter more aggressive, but also somewhat more sluggish.
ResponsiveAnalogRead analog1(A0, true, 3e-3);

which should result in only tiny fluctuations at the output, at the cost of some responsiveness. Alternatively, you could run a median filter upstream of ResponsiveAnalogRead. Median filters tend to be quite effective against the kind of “jumpy” noise you seem to have here.

In any case, I would qualify this issue as invalid, as the problem lies in your data source, not in this filter's code.

from responsiveanalogread.

MastaRob avatar MastaRob commented on July 25, 2024

Your call, I was just raising it with you. But as I said, I made my own simple filter with exactly the same setup, and I see none of this jitter in the region shown. I average the current and last value, and the two values before that, and then check to see if jitter is greater than 2 between these two averages - which it never is unless I am moving the pot. My own version of ismoving is never erroneously flagged. Without your code, I can run a simple analogueread on its own, and this "high level of noise" is simply not present.
Anyway, I dont actually need to use your filter, my own is small enough and works, I just wanted to tell you that the issue existed. Closing now.

from responsiveanalogread.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.