OSTR OLED Paradise Model(in Font)

Please copy and paste it into Arduino IDE.
#include "WiFi.h"
#include "WiFiUDP.h"
#include "BasicStepperDriver.h"
#include "MultiDriver.h"
#include "SyncDriver.h"
#include "ESP32Servo.h"
#include "SSD1306.h"
#include "Wire.h"

SSD1306  display(0x3c, 21, 22);

#define MOTOR_STEPS 200
#define L_Motor_RPM 7 //speed
#define R_Motor_RPM 7 //speed
#define MICROSTEPS 16
#define LedPin 2
#define ENB_Pin 19
#define L_Motor_DIR 26
#define L_Motor_STEP 33
#define R_Motor_DIR 32
#define R_Motor_STEP 25

BasicStepperDriver L_Motor(MOTOR_STEPS, L_Motor_DIR, L_Motor_STEP);
BasicStepperDriver R_Motor(MOTOR_STEPS, R_Motor_DIR, R_Motor_STEP);
SyncDriver controller(L_Motor, R_Motor);

WiFiUDP UDP;
char recbuff[8];
IPAddress myIP(192, 168, 4, 1);
IPAddress HOSTIP (192, 168, 4, 2);
const char *ssid = "OSTR";
const char *password = "12345678";
int fs = 3; //font size fs=1mm
int servoPin = 23;
int PEN_DOWN = 60; // f-sizengle of servo when pen is down
int PEN_UP = 20;   // f-sizengle of servo when pen is up
Servo penServo;

float wheel_dia = 68.9;// # mm (increase = spiral out)
float wheel_base = 91.8;// # mm (increase = spiral in, ccw)
int steps_rev = 3200; // # 200*16 MICROSTEPS
int LedState = 0;
unsigned long previousMillis = 0;
unsigned long interval = 500;

void setup() {
  WiFi.softAP(ssid, password); // setting SSID and Password
  WiFi.config(myIP, WiFi.gatewayIP(), WiFi.subnetMask()); // setting IP Address
  UDP.begin(8000); // setting UDP port,port number is the same setting as the controller and the side.
  Serial.begin(115200);
  pinMode(ENB_Pin, OUTPUT); digitalWrite(ENB_Pin, HIGH);
  pinMode(LedPin, OUTPUT); digitalWrite(LedPin, HIGH);
  L_Motor.begin(L_Motor_RPM, MICROSTEPS);
  R_Motor.begin(R_Motor_RPM, MICROSTEPS);
  penServo.attach(servoPin);
  penup();
  display.init();
  display.setFont(ArialMT_Plain_24);
  display.drawString(20, 0, " Select");
  display.drawString(10, 25, "16 Button");
  display.display();
  delay(300);
}

void loop() {
  if (UDP.parsePacket() > 0) {
    UDP.read(recbuff, 8);
    UDP.flush();
  }
  WiFi_receive();
  unsigned long currentMillis = millis();
  if (ENB_Pin == LOW) {
    if (currentMillis - previousMillis > interval) {
      if (LedState == 0) {
        digitalWrite(LedPin, HIGH);
        LedState = 1;
      }
      else {
        digitalWrite(LedPin, LOW);
        LedState = 0;
      }
      previousMillis = currentMillis;
    }
  }
}

void WiFi_receive() {
  switch (recbuff[0]) {
    case 'F':
      forward(0.2);
      break;

    case 'B':
      backward(0.2);
      break;

    case 'R':
      right(1);
      break;

    case 'L':
      left(1);
      break;

    case '0': //100mm Square Calibration
      display.clear();
      display.drawString(0, 0, "Calibration");
      display.drawString(0, 25, " wait a bit");
      display.display();
      pendown();
      for (int x = 0; x < 12; x++) {
        forward(100);
        left(90);
      }
      penup();
      done();
      display2();
      break;

    case '1': // 8_DIA Right Satrt
      display.clear();
      display.drawString(0, 0, "8 Diamond");
      display.drawString(0, 25, " wait a bit");
      display.display();
      forward(25);
      left(90);
      backward(20);
      left(30);
      for (int x = 0; x < 4; x++) {
        dia8();
      }
      penup();
      right(30);
      backward(20);
      left(90);
      forward(25);
      done();
      display2();
      break;

    case '2': //Heart
      display.clear();
      display.drawString(0, 0, " HEART");
      display.drawString(0, 25, " wait a bit");
      display.display();
      forward(50);
      right(45);
      pendown();
      forward(14.84);
      right(45);
      forward(14);
      right(45);
      forward(49.49);
      right(90);
      forward(49.49);
      right(45);
      forward(14);
      right(45);
      forward(14.84);
      right(45);
      forward(14);
      right(45);
      forward(14.84);
      left(90);
      forward(14.84);
      right(45);
      forward(14);
      penup();
      forward(15);
      penup();
      done();
      display2();
      break;

    case '3': // 3 Diamond
      display.clear();
      display.drawString(0, 0, "3 Diamond");
      display.drawString(0, 25, " wait a bit");
      display.display();
      forward(30);
      right(60);
      pendown();
      forward(20);
      right(60);
      forward(40);
      right(60);
      forward(20);
      left(60);
      backward(20);
      right(60);
      backward(40);
      right(60);
      backward(20);
      left(60);
      forward(20);
      right(60);
      forward(40);
      right(60);
      forward(20);
      penup();
      right(60);
      forward(30);
      done();
      display2();
      break;

    case '4': // 5Stars
      display.clear();
      display.drawString(0, 0, "5 Stars");
      display.drawString(0, 25, " wait a bit");
      display.display();
      forward(30);
      right(72);
      pendown();
      forward(60);
      right(144);
      forward(60);
      right(144);
      forward(60);
      right(144);
      forward(60);
      right(144);
      forward(60);
      penup();
      right(72);
      forward(30);
      done();
      display2();
      break;

    case '5': // 7Stars
      display.clear();
      display.drawString(0, 0, "7 Stars");
      display.drawString(0, 25, " wait a bit");
      display.display();
      forward(30);
      right(77.142);
      pendown();
      forward(60);
      left(25.714);
      backward(60);
      left(25.714);
      forward(60);
      left(25.714);
      backward(60);
      left(25.714);
      forward(60);
      left(25.714);
      backward(60);
      left(25.714);
      forward(60);
      penup();
      right(77.142);
      forward(30);
      done();
      display2();
      break;

    case '6': // HELLO WORLD
      display.clear();
      display.drawString(0, 0, "Hello World");
      display.drawString(0, 25, " wait a bit");
      display.display();
      fontdat_H();
      fontdat_E();
      fontdat_L();
      fontdat_L();
      fontdat_O();
      fontdat_sp(); //space
      fontdat_W();
      fontdat_O();
      fontdat_R();
      fontdat_L();
      fontdat_D();
      penup();
      done();
      display2();
      break;

    case '7': // 012..789
      display.clear();
      display.drawString(0, 0, " 012..789");
      display.drawString(0, 25, " wait a bit");
      display.display();
      fontdat_0();
      fontdat_1();
      fontdat_2();
      fontdat_3();
      fontdat_4();
      fontdat_5();
      fontdat_6();
      fontdat_7();
      fontdat_8();
      fontdat_9();
      fontdat_sp(); //space
      fontdat_dl(); // /
      fontdat_hy(); // -
      penup();
      done();
      display2();
      break;

    case '8': // ABCDEFGHIJKLM
      display.clear();
      display.drawString(0, 0, "ABC...KLM");
      display.drawString(0, 25, " wait a bit");
      display.display();
      fontdat_A();
      fontdat_B();
      fontdat_C();
      fontdat_D();
      fontdat_E();
      fontdat_F();
      fontdat_G();
      fontdat_H();
      fontdat_I();
      fontdat_J();
      fontdat_K();
      fontdat_L();
      fontdat_M();
      penup();
      done();
      display2();
      break;

    case '9': // NOPQRSTUVWXYZ
      display.clear();
      display.drawString(0, 0, "NOP...XYZ");
      display.drawString(0, 25, " wait a bit");
      display.display();
      fontdat_N();
      fontdat_O();
      fontdat_P();
      fontdat_Q();
      fontdat_R();
      fontdat_S();
      fontdat_T();
      fontdat_U();
      fontdat_V();
      fontdat_W();
      fontdat_X();
      fontdat_Y();
      fontdat_Z();
      penup();
      done();
      display2();
      break;

    case 'G': // abcdefghijklm
      display.clear();
      display.drawString(0, 0, "abc...klm");
      display.drawString(0, 25, " wait a bit");
      display.display();
      fontdat_a();
      fontdat_b();
      fontdat_c();
      fontdat_d();
      fontdat_e();
      fontdat_f();
      fontdat_g();
      fontdat_h();
      fontdat_i();
      fontdat_j();
      fontdat_k();
      fontdat_l();
      fontdat_m();
      penup();
      done();
      display2();
      break;

    case 'H': // opqrstuvwxyz
      display.clear();
      display.drawString(0, 0, "opq...xyz");
      display.drawString(0, 25, " wait a bit");
      display.display();
      fontdat_n();
      fontdat_o();
      fontdat_p();
      fontdat_q();
      fontdat_r();
      fontdat_s();
      fontdat_t();
      fontdat_u();
      fontdat_v();
      fontdat_w();
      fontdat_x();
      fontdat_y();
      fontdat_z();
      penup();
      done();
      display2();
      break;

    case 'I': // FontSize fs=3
      display.clear();
      display.drawString(0, 0, "Fontsize 3");
      display.display();
      fs = 3;
      delay(500);
      display2();
      break;

    case 'J': // FontSize fs=2
      display.clear();
      display.drawString(0, 0, "Fontsize 2");
      display.display();
      fs = 2;
      delay(500);
      display2();
      break;

    case 'K': // Penup
      display.clear();
      display.drawString(0, 0, "   Pen UP");
      display.display();
      penup();
      delay(100);
      display2();
      break;

    case 'M': // penup
      display.clear();
      display.drawString(0, 0, "Pen DOWN");
      display.display();
      pendown();
      delay(100);
      display2();
      break;
  }
}

void display2() {
  display.clear();
  display.drawString(20, 0, " Select");
  display.drawString(10, 25, "16 Button");
  display.display();
}

// ----- HELPER FUNCTIONS -----------
int step(float distance) {
  int steps = distance * steps_rev / (wheel_dia * 3.14159);
  return steps;
}

void forward(float distance) {
  float steps = step(distance);
  float degs = (steps / steps_rev) * 360; // #Convert steps to degs in controller.rotate.
  digitalWrite(ENB_Pin, LOW);
  controller.rotate(-degs, degs);
  digitalWrite(ENB_Pin, HIGH);
}

void backward(float distance) {
  float steps = step(distance);
  float degs = (steps / steps_rev) * 360; // #Convert steps to degs in controller.rotate.
  digitalWrite(ENB_Pin, LOW);
  controller.rotate(degs, -degs);
  digitalWrite(ENB_Pin, HIGH);
}

void left(float degrees) {
  float rotation = degrees / 360;
  float distance = wheel_base * 3.14159 * rotation;//3.14159265359 * rotation;//3.1412
  float steps = step(distance);
  float degs = (steps / steps_rev) * 360; // #Convert steps to degs in controller.rotate.
  digitalWrite(ENB_Pin, LOW);
  controller.rotate(degs, degs);
  digitalWrite(ENB_Pin, HIGH);
}

void right(float degrees) {
  float rotation = degrees / 360;
  float distance = wheel_base * 3.14159 * rotation;//3.14159265359 * rotation;//3.1412
  float steps = step(distance);
  float degs = (steps / steps_rev) * 360; // #Convert steps to degs in controller.rotate.
  digitalWrite(ENB_Pin, LOW);
  controller.rotate(-degs, -degs);
  digitalWrite(ENB_Pin, HIGH);
}

void done() { // unlock stepper to save battery
  digitalWrite(ENB_Pin, HIGH);
}

void penup() {
  delay(250);
  penServo.write(PEN_UP);
  delay(250);
}

void pendown() {
  delay(250);
  penServo.write(PEN_DOWN);
  delay(250);
}

//---font data---
void fontdat_A() {
  forward(fs * 2);
  right(68.2);
  pendown();
  forward(sqrt(pow(2, 2) + pow(5, 2))*fs);
  right(21.8);
  forward(fs * 3);
  penup();
  backward(fs * 2);
  right(90);
  pendown();
  forward(fs * 4);
  penup();
  right(90);
  backward(fs * 2);
  pendown();
  forward(fs * 3);
  right(21.7);//-0.1
  forward(sqrt(pow(2, 2) + pow(5, 2))*fs);
  penup();
  right(67.7);//-0.5
  forward(fs * 3);
  done();
}

void fontdat_B() {
  pendown();
  forward(fs * 3);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  left(90);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 3);
  right(90);
  forward(fs * 8);
  penup();
  backward(fs * 4);
  right(90);
  pendown();
  forward(fs * 3);
  penup();
  forward(fs * 2);
  left(90);
  forward(fs * 4);
  right(90);
  done();
}

void fontdat_C() {
  forward(fs * 3);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  penup();
  forward(fs * 4);
  pendown();
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  forward(fs * 2);
  done();
}

void fontdat_D() {
  forward(fs * 3);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 3);
  right(90);
  forward(fs * 8);
  right(90);
  forward(fs * 3);
  penup();
  forward(fs * 2);
  done();
}

void fontdat_E() {
  right(90);
  pendown();
  forward(fs * 8);
  left(90);
  forward(fs * 4);
  penup();
  left(90);
  forward(fs * 4);
  left(90);
  forward(fs);
  pendown();
  forward(fs * 3);
  penup();
  right(90);
  forward(fs * 4);
  right(90);
  pendown();
  forward(fs * 4);
  penup();
  forward(fs);
  done();
}

void fontdat_F() {
  pendown();
  forward(fs * 4);
  penup();
  backward(fs * 4);
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  backward(fs * 4);
  left(90);
  pendown();
  forward(fs * 3);
  penup();
  forward(fs * 2);
  left(90);
  forward(fs * 4);
  right(90);
  done();
}

void fontdat_G() {
  forward(fs * 4);
  left(90);
  backward(fs * 2);
  pendown();
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 6);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  penup();
  left(45);
  backward(fs);
  pendown();
  forward(fs * 4);
  left(90);
  forward(fs * 2);
  penup();
  right(90);
  forward(fs * 4);
  right(90);
  forward(fs * 3);
  done();
}

void fontdat_H() {
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  backward(fs * 4);
  left(90);
  pendown();
  forward(fs * 4);
  penup();
  left(90);
  backward(fs * 4);
  pendown();
  forward(fs * 8);
  penup();
  right(90);
  forward(fs);
  done();
}

void fontdat_I() {
  pendown();
  forward(fs * 2);
  penup();
  backward(fs);
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  left(90);
  backward(fs);
  pendown();
  forward(fs * 2);
  penup();
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_J() {
  forward(fs * 3);
  pendown();
  forward(fs);
  right(90);
  forward(fs * 7);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  forward(fs * 5);
  right(90);
  forward(fs * 5);
  done();
}

void fontdat_K() {
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  left(90);
  forward(fs * 4);
  pendown();
  left(135);
  forward(sqrt(pow(4, 2) + pow(4, 2))*fs);
  right(90);
  forward(sqrt(pow(4, 2) + pow(4, 2))*fs);
  penup();
  right(45);
  forward(fs);
  done();
}

void fontdat_L() {
  right(90);
  pendown();
  forward(fs * 8);
  left(90);
  forward(fs * 4);
  penup();
  left(90);
  forward(fs * 8);
  right(90);
  forward(fs);
  done();
}

void fontdat_M() {
  right(90);
  forward(fs * 8);
  pendown();
  backward(fs * 8);
  left(21.80);
  forward(sqrt(pow(2, 2) + pow(5, 2))*fs);
  left(136.40);
  forward(sqrt(pow(2, 2) + pow(5, 2))*fs);
  left(21.80);
  backward(fs * 8);
  penup();
  right(90);
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
}

void fontdat_N() {
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  backward(fs * 8);
  left(26.57);
  pendown();
  forward(sqrt(pow(4, 2) + pow(8, 2))*fs);
  right(26.57);
  backward(fs * 8);
  penup();
  left(90);
  forward(fs);
  done();
}

void fontdat_O() {
  forward(fs * 3);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  forward(fs * 2);
  done();
}

void fontdat_P() {
  pendown();
  forward(fs * 3);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 3);
  penup();
  right(90);
  backward(fs * 4);
  pendown();
  forward(fs * 8);
  penup();
  right(90);
  forward(fs * 5);
  done();
}

void fontdat_Q() {
  forward(fs * 3);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  backward(fs);
  right(90);
  forward(fs * 6);
  left(45);
  pendown();
  forward(sqrt(pow(2, 2) + pow(2, 2))*fs);
  penup();
  left(45);
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_R() {
  pendown();
  forward(fs * 3);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 3);
  penup();
  backward(fs * 2);
  right(63.43);
  pendown();
  backward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  left(63.43);
  penup();
  forward(fs * 4);
  right(90);
  pendown();
  forward(fs * 8);
  right(90);
  penup();
  forward(fs * 5);
  done();
}

void fontdat_S() {
  right(90);
  forward(fs * 7);
  left(45);
  pendown();
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  penup();
  backward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  done();
}

void fontdat_T() {
  pendown();
  forward(fs * 4);
  penup();
  backward(fs * 2);
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  left(90);
  forward(fs * 3);
  left(90);
  forward(fs * 8);
  right(90);
  forward(fs);
  done();
}

void fontdat_U() {
  right(90);
  pendown();
  forward(fs * 7);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 7);
  penup();
  right(90);
  forward(fs);
  done();
}

void fontdat_V() {
  left(104.04); // 90+14.04
  pendown();
  backward(sqrt(pow(2, 2) + pow(8, 2))*fs);
  right(28.07); // 14.04*2
  forward(sqrt(pow(2, 2) + pow(8, 2))*fs);
  right(75.96); // 90-14.04
  penup();
  forward(fs);
  done();
}

void fontdat_W() {
  left(97.13);
  pendown();
  backward(sqrt(1 + pow(8, 2))*fs);
  right(16.59);
  forward(sqrt(1 + pow(6, 2))*fs);
  left(18.92);
  backward(sqrt(1 + pow(6, 2))*fs);
  right(16.59);
  forward(sqrt(1 + pow(8, 2))*fs);
  penup();
  right(82.80);//-0.07
  forward(fs);
  done();
}

void fontdat_X() {
  right(63.43);
  pendown();
  forward(sqrt(pow(4, 2) + pow(8, 2))*fs);
  penup();
  left(63.43);
  backward(fs * 4);
  left(63.43);
  pendown();
  forward(sqrt(pow(4, 2) + pow(8, 2))*fs);
  penup();
  right(63.43);
  forward(fs);
  done();
}

void fontdat_Y() {
  right(63.43);
  pendown();
  forward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  right(53.13);
  backward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  penup();
  forward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  left(26.57);
  pendown();
  forward(fs * 4);
  penup();
  left(90);
  forward(fs * 3);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_Z() {
  pendown();
  forward(fs * 4);
  left(63.43);
  backward(sqrt(pow(4, 2) + pow(8, 2))*fs);
  penup();
  right(63.43);
  pendown();
  forward(fs * 4);
  penup();
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_a() {
  left(90);
  backward(fs * 3);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 5);
  penup();
  backward(fs);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(18.43);
  forward(sqrt(1 + pow(2, 2))*fs);
  penup();
  left(63.43);
  forward(fs * 4);
  right(90);
  forward(fs);
  done();
}

void fontdat_b() {
  right(90);
  pendown();
  forward(fs * 8);
  left(90);
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 3);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  penup();
  right(90);
  forward(fs * 3);
  right(90);
  forward(fs * 4);
  done();
}

void fontdat_c() {
  forward(fs * 3);
  left(90);
  backward(fs * 3);
  left(45);
  pendown();
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 4);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  penup();
  left(45);
  forward(fs * 7);
  right(90);
  forward(fs);
  done();
}

void fontdat_d() {
  forward(fs * 3);
  right(90);
  pendown();
  forward(fs * 8);
  right(90);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 3);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  forward(fs);
  left(90);
  forward(fs * 3);
  right(90);
  done();
}

void fontdat_e() {
  right(90);
  forward(fs * 5);
  pendown();
  left(90);
  forward(fs * 3);
  left(90);
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 4);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  penup();
  forward(fs);
  left(45);
  forward(fs * 6);
  right(90);
  done();
}

void fontdat_f() {
  forward(fs * 3);
  left(90);
  backward(fs * 2);
  pendown();
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(90);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 7);
  penup();
  backward(fs * 4);
  right(90);
  backward(fs * 2);
  pendown();
  forward(fs * 3);
  penup();
  right(90);
  forward(fs * 4);
  right(90);
  forward(fs * 4);
  done();
}

void fontdat_g() {
  right(90);
  forward(fs * 9);
  pendown();
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 5);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 3);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  penup();
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_h() {
  left(90);
  pendown();
  backward(fs * 8);
  penup();
  forward(fs * 4);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 4);
  penup();
  left(90);
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_i() {
  forward(fs);
  right(90);
  forward(fs * 2);
  pendown();
  forward(fs);
  penup();
  forward(fs);
  pendown();
  forward(fs * 4);
  penup();
  left(90);
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_j() {
  forward(fs * 3);
  right(90);
  forward(fs * 2);
  pendown();
  forward(fs);
  penup();
  forward(fs);
  pendown();
  forward(fs * 5);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  penup();
  forward(fs * 9);
  right(90);
  forward(fs * 4);
  done();
}

void fontdat_k() {
  left(90);
  pendown();
  backward(fs * 8);
  penup();
  forward(fs * 3);
  right(45);
  pendown();
  forward(sqrt(pow(3, 2) + pow(3, 2))*fs);
  penup();
  left(45);
  backward(fs * 6);
  left(26.57);
  pendown();
  forward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  penup();
  right(26.57);
  forward(fs * 4);
  right(90);
  forward(fs * 3);
  done();
}

void fontdat_l() {
  forward(fs);
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  left(90);
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_m() {
  left(90);
  backward(fs * 2);
  pendown();
  backward(fs * 6);
  penup();
  forward(fs * 5);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(90);
  forward(sqrt(2)*fs);
  penup();
  left(135);
  backward(fs * 5);
  pendown();
  forward(fs * 5);
  right(45);
  forward(sqrt(2)*fs);
  right(90);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 5);
  penup();
  backward(fs * 8);
  left(90);
  forward(fs);
  done();
}

void fontdat_n() {
  left(90);
  backward(fs * 2);
  pendown();
  backward(fs * 6);
  penup();
  forward(fs * 5);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  penup();
  left(135);
  pendown();
  backward(fs * 5);
  penup();
  forward(fs * 8);
  right(90);
  forward(fs);
  done();
}

void fontdat_o() {
  left(90);
  backward(fs * 3);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 4);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 4);
  penup();
  forward(fs * 3);
  right(90);
  forward(fs * 4);
  done();
}

void fontdat_p() {
  left(90);
  backward(fs * 7);
  right(90);
  pendown();
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 3);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  left(90);
  forward(fs * 8);
  penup();
  left(90);
  forward(fs * 4);
  left(90);
  forward(fs * 10);
  right(90);
  done();
}

void fontdat_q() {
  right(90);
  forward(fs * 10);
  left(90);
  forward(fs * 3);
  left(90);
  pendown();
  forward(fs * 8);
  left(90);
  forward(fs * 2);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 3);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs * 2);
  penup();
  forward(fs);
  left(90);
  forward(fs * 7);
  right(90);
  done();
}

void fontdat_r() {
  left(90);
  backward(fs * 2);
  pendown();
  backward(fs * 6);
  penup();
  forward(fs * 4);
  right(26.57);
  pendown();
  forward(sqrt(1 + pow(2, 2))*fs);
  right(63.43);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  penup();
  left(45);
  forward(fs);
  left(90);
  forward(fs * 3);
  right(90);
  done();
}

void fontdat_s() {
  forward(fs * 3);
  left(90);
  backward(fs * 3);
  left(45);
  pendown();
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  penup();
  forward(fs * 7);
  right(90);
  forward(fs * 4);
  done();
}

void fontdat_t() {
  forward(fs);
  right(90);
  pendown();
  forward(fs * 7);
  left(45);
  forward(sqrt(2)*fs);
  left(90);
  forward(sqrt(2)*fs);
  left(45);
  penup();
  forward(fs * 5);
  left(90);
  forward(fs);
  pendown();
  forward(fs * 2);
  penup();
  right(90);
  forward(fs * 2);
  right(90);
  forward(fs * 4);
  done();
}

void fontdat_u() {
  right(90);
  forward(fs * 2);
  pendown();
  forward(fs * 5);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  forward(fs);
  left(45);
  forward(sqrt(2)*fs);
  left(45);
  penup();
  backward(fs);
  pendown();
  forward(fs * 6);
  penup();
  forward(fs * 2);
  right(90);
  forward(fs);
  done();
}

void fontdat_v() {
  right(90);
  forward(fs * 2);
  pendown();
  left(9.46);
  forward(sqrt(1 + pow(6, 2))*fs);
  right(9.56 + 18.43);
  backward(sqrt(pow(2, 2) + pow(6, 2))*fs);
  left(18.43);
  penup();
  backward(fs * 2);
  left(90);
  forward(fs);
  done();
}

void fontdat_w() {
  right(90);
  forward(fs * 2);
  pendown();
  left(9.46);
  forward(sqrt(1 + pow(6, 2))*fs);
  right(23.5);
  backward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  left(28.07);
  forward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  right(23.5);
  backward(sqrt(1 + pow(6, 2))*fs);
  left(9.46);
  penup();
  backward(fs * 2);
  left(90);
  forward(fs);
  done();
}

void fontdat_x() {
  right(90);
  forward(fs * 2);
  pendown();
  left(26.57);
  forward(sqrt(pow(3, 2) + pow(6, 2))*fs);
  left(63.43);
  penup();
  backward(fs * 3);
  left(63.43);
  pendown();
  forward(sqrt(pow(3, 2) + pow(6, 2))*fs);
  penup();
  left(26.57);
  forward(fs * 2);
  right(90);
  forward(fs);
  done();
}

void fontdat_y() {
  right(90);
  forward(fs * 2);
  left(26.57);
  pendown();
  forward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  penup();
  backward(sqrt(pow(2, 2) + pow(4, 2))*fs);
  right(26.57);
  forward(fs * 8);
  left(90);
  pendown();
  forward(fs);
  left(75.96);
  forward(sqrt(pow(2, 2) + pow(8, 2))*fs);
  penup();
  left(14.04);
  forward(fs * 2);
  right(90);
  forward(fs);
  done();
}

void fontdat_z() {
  right(90);
  forward(fs * 2);
  left(90);
  pendown();
  forward(fs * 3);
  left(63.43);
  backward(sqrt(pow(3, 2) + pow(6, 2))*fs);
  right(63.43);
  forward(fs * 3);
  penup();
  left(90);
  forward(fs * 8);
  right(90);
  forward(fs);
  done();
}

void fontdat_0() {
  forward(fs);
  pendown();
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  penup();
  backward(sqrt(2)*fs);
  left(45);
  backward(fs * 6);
  right(33.69);
  pendown();
  forward(sqrt(pow(4, 2) + pow(6, 2))*fs);
  penup();
  left(33.69);
  forward(fs);
  right(90);
  done();
}

void fontdat_1() {
  forward(fs * 2);
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  right(90);
  backward(fs);
  pendown();
  forward(fs * 2);
  penup();
  right(90);
  forward(fs * 7);
  right(45);
  pendown();
  forward(sqrt(2)*fs);
  penup();
  right(45);
  forward(fs * 2);
  done();
}

void fontdat_2() {
  left(90);
  backward(fs * 2);
  pendown();
  forward(fs);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs * 4);
  left(45);
  forward(fs);
  left(90);
  forward(fs * 4);
  penup();
  forward(fs);
  left(90);
  forward(fs * 8);
  right(90);
  done();
}

void fontdat_3() {
  forward(fs * 3);
  pendown();
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  backward(fs * 2);
  left(135);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 1);
  penup();
  forward(fs * 4);
  pendown();
  forward(fs * 1);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  forward(fs * 2);
  done();
}

void fontdat_4() {
  forward(fs);
  right(90);
  forward(fs);
  right(14.04);
  pendown();
  forward(sqrt(1 + pow(4, 2))*fs);
  left(104.04);
  forward(fs * 4);
  penup();
  right(90);
  forward(fs * 3);
  right(90);
  forward(fs);
  right(90);
  pendown();
  forward(fs * 8);
  penup();
  right(90);
  forward(fs * 2);
  done();
}

void fontdat_5() {
  pendown();
  forward(fs * 4);
  penup();
  backward(fs * 4);
  right(90);
  pendown();
  forward(fs * 3);
  left(90);
  forward(fs * 3);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 3);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  penup();
  forward(fs * 6);
  right(90);
  forward(fs * 5);
  done();
}

void fontdat_6() {
  right(90);
  forward(fs * 4);
  left(90);
  pendown();
  forward(fs * 3);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs);
  penup();
  backward(fs * 2);
  left(90);
  forward(fs);
  done();
}

void fontdat_7() {
  left(90);
  backward(fs * 2);
  pendown();
  forward(fs * 2);
  right(90);
  forward(fs * 4);
  right(90);
  forward(fs * 2);
  right(18.43);
  forward(sqrt(pow(6, 2) + pow(2, 2))*fs);
  penup();
  left(18.43);
  backward(fs * 8);
  left(90);
  forward(fs * 4);
  done();
}

void fontdat_8() {
  forward(fs * 4);
  pendown();
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  backward(fs * 2);
  left(135);
  pendown();
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  left(90);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  forward(fs * 3);
  done();
}

void fontdat_9() {
  forward(fs * 4);
  right(90);
  forward(fs * 4);
  right(90);
  pendown();
  forward(fs * 3);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 6);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  right(45);
  forward(sqrt(2)*fs);
  right(45);
  forward(fs * 2);
  penup();
  forward(fs * 6);
  right(90);
  forward(fs * 5);
  done();
  done();
}

void fontdat_dl() { // "/" Diagonal line
  left(90);
  backward(fs * 8);
  right(20.56);
  pendown();
  forward(sqrt(pow(3, 2) + pow(8, 2))*fs);
  right(69.44);
  penup();
  forward(fs);
}

void fontdat_hy() { // "-" hyphen
  right(90);
  forward(fs * 4);
  left(90);
  pendown();
  forward(fs * 3);
  penup();
  left(90);
  forward(fs * 4);
  right(90);
  forward(fs);
}

void fontdat_sp() { // " " space
  forward(fs * 3);
}

void dia8() {
  pendown();
  forward(20);
  right(60);
  forward(20);
  left(60);
  backward(20);
  right(60);
  backward(40);
  left(60);
  backward(20);
  right(60);
  forward(20);
  left(60);
  forward(20);
  right(45);
}

by Paradise
元のページヘ戻る