-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfilter.ino
49 lines (35 loc) · 1.46 KB
/
filter.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* This sketch shows how to remove noise from a signal */
#include <PulseInput.h>
#define BAND 12 /* Deadband. Changes in signal within this band are ignored.
Large values result in a steadier signal, at cost of lower precision */
volatile unsigned int input; /* variable is required to capture signal */
PulseFilter <&input, BAND> filter;
// Simpler form:
//PulseFilter <&input> filter; /* The filter defaults to a deadband of 4 if none is specified */
// --------------- Generate PWM signal ----------------
#define OUTPUT_PIN 3 // PWM-capable pin
#define DUTY_CYCLE 125 // Initial PWM value
// ----------------------------------------------------
void setup() {
Serial.begin(9600);
// generate PWM signal
analogWrite(OUTPUT_PIN, DUTY_CYCLE);
// assign variables to receive signals
attachPulseInput(8, input);
// subtract initial average from input
/*
delay(1000); // pause before reading values [required for proper calibration]
filter.calibrate(); // comment to only filter signal
*/
}
void loop() {
// generate variable signal:
float target = analogRead(A0) * 255.0 / 1024.0; // read potentiometer from A0
analogWrite(OUTPUT_PIN, target);
// display comparison:
Serial.print( "Raw: " );
Serial.print( input );
Serial.print("\t Filter: ");
Serial.print( filter.update() );
Serial.println();
}