1
- /* This sketch shows how to filter signals */
1
+ /* This sketch shows how to remove noise from a signal */
2
2
3
- // ---- Create servo object to generate PWM signals ---
4
- #include < Servo.h>
5
- Servo servo;
6
-
7
- // ----------- Signal deadband and calibration --------
8
3
#include < PulseInput.h>
9
- volatile unsigned int input; /* variable is required to capture signal */
10
4
11
5
#define BAND 12 /* Deadband. Changes in signal within this band are ignored.
12
6
Large values result in a steadier signal, at cost of lower precision */
13
-
7
+
8
+ volatile unsigned int input; /* variable is required to capture signal */
14
9
PulseFilter <&input, BAND> filter;
15
10
16
11
// Simpler form:
17
12
// PulseFilter <&input> filter; /* The filter defaults to a deadband of 4 if none is specified */
18
13
14
+ // --------------- Generate PWM signal ----------------
15
+
16
+ #define OUTPUT_PIN 3 // PWM-capable pin
17
+ #define DUTY_CYCLE 125 // Initial PWM value
18
+
19
19
// ----------------------------------------------------
20
20
21
21
void setup () {
22
22
Serial.begin (9600 );
23
23
24
- // PWM output at pin 2
25
- servo.attach (2 );
26
- servo.writeMicroseconds (1000 ); // initial signal value
24
+ // generate PWM signal
25
+ analogWrite (OUTPUT_PIN, DUTY_CYCLE);
27
26
28
27
// assign variables to receive signals
29
28
attachPulseInput (8 , input);
@@ -37,8 +36,8 @@ void setup() {
37
36
38
37
void loop () {
39
38
// generate variable signal:
40
- int target = analogRead (A0) + 1000 ; // read potentiometer from A0
41
- servo. writeMicroseconds ( target);
39
+ float target = analogRead (A0) * 255.0 / 1024.0 ; // read potentiometer from A0
40
+ analogWrite (OUTPUT_PIN, target);
42
41
43
42
// display comparison:
44
43
Serial.print ( " Raw: " );
0 commit comments