https://github.com/alessandrokonrad/arduino-writing-machine
Arduino CNC writing machine with a pen and a DVD player
https://github.com/alessandrokonrad/arduino-writing-machine
arduino arduino-uno cnc coordinates creative-coding dvd dvd-drive h-bridge motor polar polar-coordinates servo-motor starter-kit stepper-motor write
Last synced: 3 months ago
JSON representation
Arduino CNC writing machine with a pen and a DVD player
- Host: GitHub
- URL: https://github.com/alessandrokonrad/arduino-writing-machine
- Owner: alessandrokonrad
- License: apache-2.0
- Created: 2019-02-28T14:05:50.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-03-25T19:05:57.000Z (over 6 years ago)
- Last Synced: 2025-03-16T11:42:01.217Z (7 months ago)
- Topics: arduino, arduino-uno, cnc, coordinates, creative-coding, dvd, dvd-drive, h-bridge, motor, polar, polar-coordinates, servo-motor, starter-kit, stepper-motor, write
- Language: C++
- Homepage:
- Size: 15.6 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Arduino Writing Machine

The following project is a CNC machine with a polar coordinate system build on an Arduino.
## Components
* Arduino UNO R3 - The Most Complete Starter Kit
* 1 DVD - Player
* H-Bridge (with L293D: https://lastminuteengineers.com/stepper-motor-l293d-arduino-tutorial/)
* Pen
* Tape and some screws
* Some wood## How it works
I am using the stepper motor and the servo motor of the Arduino Kit and the stepper motor of the DVD player.
The DVD stepper motor controls the radius and the the Arduino stepper motor the angle (polar coordinates).
On the DVD stepper I put some piece of wood, which I attached the servo motor and the pen on. The
steppers and the servo are controled by some Arduino libraries.
On top of these libraries I built my own functions in order to use the system properly.Functions:
* print(String string, int font_size) -> takes a string of only uppercase letters, which I had to define by myself (see code); it automatically jumps into the next line, if written text >= 2 PI - some threshold* penUp()
* penDown()
* movePos(int radius, int angle) -> moves position relative to its currentPos
* moveAt(int radius, int angle) -> moves absolute to the position
* draw(int radius, int angle) -> draws and moves position relative to its currentPos
* drawAt(int radius, int angle) -> draws and moves absolute to the position
* getDifference(int radius, int angle, String direction) -> updates x_diff and y_diff by the difference of the currentPos, targetPos and the direction, so either clockwise or counter clockwise
* isRotated() -> checks if angle >= 2 PI
