Introduction: Drawbot 1.0

Drawbot 1.0 (by Caroline, Jasper & Eveline) - 2CMDi @ Mad-Faculty, Genk
Arduino-powered project

We took our inspiration from mandala drawings which are created by drawing cirkels. We've built an Artbot which can create these drawings itself. 


- wood
- arduino + motor shield
- tape
- marker
- little tires
- 9V battery
- wires

- illustrator
- Arduino
- Tools to solder
- Laser cutter


1. Design your artbot in illustrator. We attached the files so you can have an idea about the sizing. We've made sure that the arduino fits on the car and we've kept a lot of space for the tires. We've made two of the boards, so you can put the tires in between.
2. Sold the wires to the wheels
3. Attach the bolts, so that the wheels stay in the same position. 
4. Attach the servo motor to the back of the car with two screws (2,5mm wide). On that servo motor, you hang your arm for your marker. You can design it in many different ways. In our case, we've made it for one marker.
5. Attach the arduino on the car with the motor shield on it. Then you have to attach your wires to your arduino (see the pictures). 
6. Upload the code to the arduino and attach the 9V battery.
7. Attach a cord to the front of your car and to other end to a pole. You are ready to draw now.



Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

int pos = 0;    // variable to store the servo position

void setup() {

    myservo.attach(10);  // attaches the servo on pin 9 to the servo object

  //Setup Channel A
  pinMode(12, OUTPUT); //Initiates Motor Channel A pin

  //Setup Channel B
  pinMode(13, OUTPUT); //Initiates Motor Channel A pin
    //Motor A forward @ full speed
  digitalWrite(12, LOW);  //Establishes forward direction of Channel A
  analogWrite(3, 255);

  //Motor B forward @ full speed
  digitalWrite(13, HIGH); //Establishes forward direction of Channel B
  analogWrite(11, 255);   //Spins the motor on Channel B at full speed


void loop(){

   for(pos = 0; pos < 90; pos += 1)  // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(2);                       // waits 15ms for the servo to reach the position
  for(pos = 90; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'