https://github.com/omarbazaraa/cnc-machine
A CNC machine powered by Arduino for solving Android Flow game, and drawing images.
https://github.com/omarbazaraa/cnc-machine
algorithm arduino cnc opencv serial-communication
Last synced: about 2 months ago
JSON representation
A CNC machine powered by Arduino for solving Android Flow game, and drawing images.
- Host: GitHub
- URL: https://github.com/omarbazaraa/cnc-machine
- Owner: OmarBazaraa
- Created: 2017-02-20T19:08:47.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-06-25T12:38:25.000Z (almost 8 years ago)
- Last Synced: 2025-09-04T13:54:52.949Z (9 months ago)
- Topics: algorithm, arduino, cnc, opencv, serial-communication
- Language: C++
- Homepage:
- Size: 14.3 MB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Antar CNC Machine
A CNC machine powered by Arduino with the following features:
* Solving Flow game
* Drawing images
* Manual calibration
* Playing piano
* Sense 9 different issues that can damage the machine or lead to wrong results
* Fully expandable
* Contain power backup circuit
* Precise accuracy

### Trailer Video:
[](http://www.youtube.com/watch?v=A8BskRCSG7A "CNC Machine")
# Project Structure
## Controller
A console application written in Java that establish asynchronous communication with the Arduino to control the CNC-Machine from the computer.
It allows the user to select one of the following tasks:
* Solve flow game.
* Paint photo on paper.
* Play piano from the keyboard.
* Calibrate the CNC manually.
The controller is designed in a fully expandable way.
All the logic to communicate and configure the CNC is encapsulated in `CNCTask` class.
So we can simply add new tasks by just extending `CNCTask` class and implementing few methods
without the need to deal with the underlying logic for serial communications with the Arduino.
## Arduino
A C-program burnt on the Arduino that:
* Controls the motors and the sensors on the CNC machine and execute the instructions received from the controller program.
* Has a simple logic for protecting the CNC against some faults that might occur.
## Flow Solver
A C++ program that takes a screenshot for Flow game level, analyses it and perform one of the following tasks:
* Run an algorithm for solving the game level.
* Detect the "Next Level" button.
Finally, it returns an instruction-string that the CNC can perform.
## Painter
A C++ program that takes an image and convert it into an instruction-string that the CNC can perform.