The anti-skate was set correctly, but tracking force was about 2.75gram that time, so I think it's quite normal (at least on my SL-1200 MK2)
Also, it is possible to lift slowly, but the code below does not do that.
Here's the code. Once again, it's not elegant code.
I cannot believe I'm asked about this, years later I posted the video here.
(I might be the first one to post Arduino code here in Audio Karma... maybe not)
============== CODE ===============
/*
Automatic Tone lifter using a servo & IR break sensor
*/
#include <Servo.h> // Use Servo library
Servo myservo; // create servo object to control a servo
#define LEDPIN 13 // Pin 13: an LED on pin 13 (lit when the IR beam is broken)
#define SENSORPIN 4 // Pin 4: IR break beam sensor
#define SERVOPIN 9 // Pin 9: To Servo motor signal
int REST_POS = 5; // servo angle, lowered tonearm (rest/playing)
int LIFT_POS = 75; // servo angle, raised tonearm (reached dead wax)
// variables will change:
int sensorState = 0, lastState=0; // variable for reading the pushbutton status
void setup() {
myservo.attach(SERVOPIN); // attaches the servo on pin 9 to the servo object
myservo.write(REST_POS); // Set tonearm down (initial position)
pinMode(LEDPIN, OUTPUT); // initialize the LED pin as an output:
// initialize the sensor pin as an input with pullup:
pinMode(SENSORPIN, INPUT_PULLUP);
}
void loop() {
// read the state of the pushbutton value:
sensorState = digitalRead(SENSORPIN);
// check if the sensor beam is broken
// (sensorState is LOW, means IR beam is broken, tonearm reached dead wax)
digitalWrite(LEDPIN, !sensorState); // Turn ON or OFF the LED
if((sensorState == HIGH) && (lastState == LOW)) {
// Unbroken (tonearm down): sensorState == HIGH
delay(1000); // wait 1 second before moving tonearm
myservo.write(REST_POS); // tell servo to lower tonearm
delay(1000); // wait 100ms for the servo to reach the position
}
else if((sensorState == LOW) && (lastState == HIGH)) {
// Broken (lift up tonearm): sensorState == LOW
delay(1000); // waits 1000ms for the servo to reach the position
myservo.write(LIFT_POS); // tell servo to lift up tonearm
delay(1000); // waits 1000ms for the servo to reach the position
}
lastState = sensorState; // remember the current sensor state
}
============== / CODE ===============