// https://www.avrfreaks.net/s/topic/a5C3l000000UDLCEA4/t065080
#include <SimpleTimer.h>
#include <Servo.h>
#define Filter_Strength 6
unsigned long Sum = 0;
unsigned int Filtered_Value;
unsigned long Raw_Value;
SimpleTimer timer1(100);
Servo myservo1;
Servo myservo2;
void setup() {
Serial.begin(115200);
myservo1.attach(3);
myservo2.attach(5);
Serial.println("start.");
}
void loop() { unsigned int val;
if (timer1.isReady()) { timer1.reset();
Raw_Value = analogRead(A5);
Sum = Sum - Filtered_Value + Raw_Value;
Filtered_Value = Sum >> (Filter_Strength-2); <----추후 더 조사해 봐야함.
//Filtered_Value = Sum + (1 << (Filter_Strength - 1)) >> Filter_Strength;
val = map(Raw_Value, 0, 1023, 0, 180);
myservo1.write(val);
val = map(Filtered_Value, 0, 1023, 0, 180);
myservo2.write(val);
Serial.print(Raw_Value); Serial.print(" ");
Serial.println(Filtered_Value);
}
}