Inspired by Steve mould's latest video, except the same effect is achieved mechanically rather than with optics.
Some 28byj-48 drivers may not fit into the screw holes. If they dont, use super glue to attach.
I suggest using an arduino nano without pins and desoldering IN1 to IN4 on the stepper driver. Solder all wires together instead.
The arduino nano attaches with glue, along with the thin elecronics cover.
When assembling the white screw, drill/ream the hole with 5mm. Hammer in screw with the spacer installed. I used a small amount of CA glue too
How to use:
1. Record a video of the target doing a 360 degree spin. I suggest leaving a few seconds extra
2. In an editing software, rotate the whole video 360 degrees in the opposite direction to cancel the spin.
3. Add a circular mask (optional)
Hardware:
Wiring:
Potentiometer wiper → A7
IN1 → D8
IN2 → D9
IN3 → D10
IN4 → D11
Connect together all GNDs and VCCs.
Code:
//28byj-48 Controller by Magmabow
const int IN1 = 8;
const int IN2 = 9;
const int IN3 = 10;
const int IN4 = 11;
const int potPin = A7;
const int steps[8][4] = {
{1, 0, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1},
{1, 0, 0, 1}
};
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
int potValue = analogRead(potPin);
int center = 512;
int diff = potValue - center;
if (abs(diff) < 20) {
return;
}
int direction = diff > 0 ? 1 : -1;
int speed = map(abs(diff), 20, 511, 10, 1);
static int stepIndex = 0;
stepIndex = (stepIndex + direction + 8) % 8;
stepMotor(stepIndex);
delay(speed);
}
void stepMotor(int stepIndex) {
digitalWrite(IN1, steps[stepIndex][0]);
digitalWrite(IN2, steps[stepIndex][1]);
digitalWrite(IN3, steps[stepIndex][2]);
digitalWrite(IN4, steps[stepIndex][3]);
}
The author marked this model as their own original creation.