int servoPin = 10; // Control pin for servo motor
int jitterTime1 = 2000; // walking
int jitterTime2 = 300; // shivering
int jitterTime3 = 200; // fast shivering
int jitterTime = jitterTime1;
int minPulseJitter = 1350;
int maxPulseJitter = 1750;
int minPulseJitter2 = 1400;
int maxPulseJitter2 = 1600;
int minPulseJitter3 = 1450;
int maxPulseJitter3 = 1550;
int minPulse = 650;
int maxPulse = 700;
int delayTime = 50;
int refreshTime = 20;
int pulse = 0; // Amount to pulse the servo
long lastPulse = 0; // the time in milliseconds of the last pulse
long lastTime = millis();
long passedTime;
void setup() {
pinMode(servoPin, OUTPUT); // Set servo pin as an output pin
pinMode(8, INPUT);
Serial.begin(9600);
lastTime = millis();
}
void loop() {
passedTime = millis() - lastTime;
if ( passedTime < 100000) {
if(passedTime % jitterTime > (jitterTime / 2)) pulse = maxPulse;
else pulse = minPulse;
}
// pulse the servo again if rhe refresh time (20 ms) have passed:
if (millis() - lastPulse >= refreshTime) {
digitalWrite(servoPin, HIGH); // Turn the motor on
delayMicroseconds(pulse); // Length of the pulse sets the motor position
digitalWrite(servoPin, LOW); // Turn the motor off
delay(delayTime);
lastPulse = millis(); // save the time of the last pulse
}
}