Important read about new "Extra light protection" and adjustment "Tracktion switch"
T-Scann 8 - project page
Super 8 / Regular 8 film scanner
Arduino to card Controll T-Scann 8 Ver 1.80 Update to ver 2.0 coming later, works similar
This is how ver 1.80 works.
When the scan starts, the program detects if it is Super 8 or regular 8. This is done to set the correct number of braking steps.
// Detect whether Super 8 or Regular 8
364. if (typeF >= 2 && WstepLast > 280 && WstepLast < 300 ) {
WstepS = 270; //R8
}
if (typeF >= 2 && WstepLast > 300) {
WstepS = 290; //S8
}
Now the program knows that it is Super8, the distance between each frame is about 315 steps.
1 - 290 steps now the variable "sped" changes from 900 microsecond to 30000 microsecond.
355. if (Wstep >= WstepS && typeF >= 2 ) {
sped = spedS;
}
2 - "perfLevel" is now 260 and the picture can be taken
3 - After exposing the image, "sped" is reset to 900
"Wstep" counts the number of steps between frames, resets.
"WstepV" determines that the minimum number of steps before a new exposure can occur
is at least 200 steps. This is to minimize the risk of exposure in the wrong place. Tape or cement joints can be detected, like perforation, but are avoided this way.
This is the code for winding the film on wheel-c.
The start value of "inDraTime" is 11000. The movie is stretched when the scan begins.
// ------------ Stretching film pickup wheel (C) ------
inDraState = digitalRead(inDra); / This line reads the "Traction stop" switch
if (Play == HIGH && inDraState == LOW && (time - LastTimeDra) >= inDraTime) {
digitalWrite(stepSpoleC, LOW); digitalWrite(stepSpoleC, HIGH); LastTimeDra = time;
}
Each time the Tracktion switch turns on, the speed decreases slightly
by "inDraTime = inDraTime + 800;" increased.
361. if (Play == HIGH && inDraState == HIGH) {
inDraTime = inDraTime + 200;
}
kolla igenom ---------------------------------------------
The maximum time "inDraTime> = 80000" is 1200 which then reduces the time to 7000. The speed / time can then vary between 7000 and 12000.
400. if (inDraTime >= 80000 && inDraState == HIGH) {
inDraTime = inDraTime + 1200;
}
If you want to study how this function works
replace "measureP" with "inDraTime" and use "Serial monitor" in Arduino IDE. This value usually fluctuates up and down.
370. if (Play == HIGH) {
Serial.println(measureP);
}
Arduino IDE has a function under Tools - Serial Plotter - which makes it possible to see the detection of
film perforation in real time.