"Marble Run"

It's not a real marble run... or is it?
Here is your marble... I don't want it, so take it back...No, it is your marble, here it is...

this discussion continues untill you switch off the unit.
In the box you can install two 28BYJ (increadibly cheap) steppermotors or the slightly smaller version 24BYJ.
Power supply: Three AA batteries.
Make sure both arms are in line, otherwise the marble does not follow the track.

https://youtu.be/cme7kErpPlI

This Arduinmo sketch makes it run:

//NanoFull step mode
//512 >> 360 degrees 1.4 step/degree
//28BYJ Red+ Orange Yellow Pink Blue
//24BYJ Red+ Black Yellow Brown Blue
int M1A = 9; int M1B = 10; int M1C = 11; int M1D = 12;
int M2A = 2; int M2B = 3; int M2C = 4; int M2D = 5;
int t=3;
void setup()
{
pinMode(M1A, OUTPUT); pinMode(M1B, OUTPUT); pinMode(M1C, OUTPUT); pinMode(M1D, OUTPUT);
pinMode(M2A, OUTPUT); pinMode(M2B, OUTPUT); pinMode(M2C, OUTPUT); pinMode(M2D, OUTPUT);
}
void loop()
{
for(int x=0; x<180;x++){
//Motor 1 CW
digitalWrite(M1A, LOW); digitalWrite(M1B, LOW); digitalWrite(M1C, HIGH); digitalWrite(M1D, HIGH); delay(t);
digitalWrite(M1A,LOW); digitalWrite(M1B, HIGH); digitalWrite(M1C, HIGH); digitalWrite(M1D, LOW); delay(t);
digitalWrite(M1A, HIGH); digitalWrite(M1B, HIGH); digitalWrite(M1C, LOW); digitalWrite(M1D, LOW); delay(t);
digitalWrite(M1A, HIGH); digitalWrite(M1B, LOW); digitalWrite(M1C, LOW); digitalWrite(M1D, HIGH); delay(t);}
for(int x=0; x<180;x++){
//Motor 1 CCW
digitalWrite(M1A, HIGH); digitalWrite(M1B, LOW); digitalWrite(M1C, LOW); digitalWrite(M1D, HIGH); delay(t);
digitalWrite(M1A, HIGH); digitalWrite(M1B, HIGH); digitalWrite(M1C, LOW); digitalWrite(M1D, LOW); delay(t);
digitalWrite(M1A,LOW); digitalWrite(M1B, HIGH); digitalWrite(M1C, HIGH); digitalWrite(M1D, LOW); delay(t);
digitalWrite(M1A, LOW); digitalWrite(M1B, LOW); digitalWrite(M1C, HIGH); digitalWrite(M1D, HIGH); delay(t);}
delay(500);
for(int x=0; x<180;x++){
//Motor 2 CCW
digitalWrite(M2A, HIGH); digitalWrite(M2B, LOW); digitalWrite(M2C, LOW); digitalWrite(M2D, HIGH); delay(t);
digitalWrite(M2A, HIGH); digitalWrite(M2B, HIGH); digitalWrite(M2C, LOW); digitalWrite(M2D, LOW); delay(t);
digitalWrite(M2A,LOW); digitalWrite(M2B, HIGH); digitalWrite(M2C, HIGH); digitalWrite(M2D, LOW); delay(t);
digitalWrite(M2A, LOW); digitalWrite(M2B, LOW); digitalWrite(M2C, HIGH); digitalWrite(M2D, HIGH); delay(t);}
for(int x=0; x<180;x++){
//Motor2 CW
digitalWrite(M2A, LOW); digitalWrite(M2B, LOW); digitalWrite(M2C, HIGH); digitalWrite(M2D, HIGH); delay(t);
digitalWrite(M2A,LOW); digitalWrite(M2B, HIGH); digitalWrite(M2C, HIGH); digitalWrite(M2D, LOW); delay(t);
digitalWrite(M2A, HIGH); digitalWrite(M2B, HIGH); digitalWrite(M2C, LOW); digitalWrite(M2D, LOW); delay(t);
digitalWrite(M2A, HIGH); digitalWrite(M2B, LOW); digitalWrite(M2C, LOW); digitalWrite(M2D, HIGH); delay(t);}
delay(500);
}