Separation Engine
The Separation Engine is a machine that types pre-determined messages onto a keyboard, indirectly interfacing with a computer to write these messages for the viewer.
I originally intended for this machine to be able to type any character on the top row of a qwerty keyboard. However, the Arduino Mega I needed to make this happen never shipped, so I was ham-stringed to 6 servos, 2 of which were needed for the space bar and the enter key.
Since this piece is so much about communication, I decided to limit myself to the words ‘i’ and ‘you’, using these as a basis for morse code. Currently, the piece types the following, looping forever:
this translates to ‘I don’t want this.’ I recently ended a relationship, and this ended up guiding the subject matter of the piece.
I’m ultimately dissatisfied with the piece, since I wanted it to originally be so much more than what it currently is. There’s also a lot more I would like to do with this technology. There are a lot of different designs I’ve been considering for ways to hit the keys that would be more engaging and faster than this setup. I also want to change the subject matter. something that I discovered while making this (with the help of Luca) was that it would be entirely feasible to make a machine that could re-write the code that programs it, and then upload that code to the machine itself.
#include <Servo.h>
Servo ent; // create servo object to control a servo
Servo o; // twelve servo objects can be created on most boards
Servo i;
Servo u;
Servo spc;
Servo y;
int d = 100;
void setup()
{
ent.attach(3); // attaches the servo on pin 9 to the servo object
o.attach(5);
i.attach(6);
u.attach(9);
spc.attach(10);
y.attach(11);
}
void hitent(){
ent.write(30);
delay(d);
ent.write(45);
delay(d);
}
void hito(){
o.write(25);
delay(d);
o.write(40);
delay(d);
}
void hiti(){
i.write(152);
delay(d);
i.write(135);
delay(d);
}
void hitu(){
u.write(15);
delay(d);
u.write(30);
delay(d);
}
void hitspc(){
spc.write(140);
delay(d);
spc.write(130);
delay(d);
}
void hity(){
y.write(145);
delay(d);
y.write(130);
delay(d);
}
void hityou(){
hity();
hito();
hitu();
hitspc();
}
void hitI(){
hiti();
hitspc();
}
void loop()
{
hitI(); //i
hitI();
hitent();
hitent();
hityou();//dont
hitI();
hitI();
hitent();
hityou();
hityou();
hityou();
hitent();
hityou();
hitI();
hityou();
hitent();
hityou();
hitent();
hitent();
hitI(); //want
hityou();
hityou();
hitent();
hitI();
hityou();
hitent();
hityou();
hitI();
hitent();
hityou();
hitent();
hitent();
hityou();//this
hitent();
hitI();
hitI();
hitI();
hitI();
hitent();
hitI();
hitI();
hitent();
hitI();
hitI();
hitI();
hitent();
hitent();
hitent();
}