Proiectul doreste recreerea de imagini date ca input in format gcode pe foaie cu ajutorul unui pix si a motoarelor ce pot atinge orice punct din planul XOY
Ideea de la care am pornit a fost vizionarea pe YouTube a mai multor videoclipuri despre imprimante 3D dar cum o imprimanta 3D ar fi fost un proiect mult prea complex pentru timpul si resursele mele momentan, am decis sa mai tai o dimensiune :)
Utilitatea proiectului se poate rezuma fie la entertainment insa poate fi folosit si ca o imprimanta nu tocmai ideala. Ideea principala e ca fiecare persoana care vede proiectul sa poata cere un desen (nu prea complicat) si sa plece cu el acasa pastrand astfel o amintire
Bill of materials:
Codul aplicatiei a fost dezvoltat folosind VSCode + Extensia de Arduino (Care la randul ei se foloseste de Arduino IDE) Repository GitHub: https://github.com/adriangeorge/CNC-Plotter
Librarii:
Servo.h - folosit pentru controlarea servomotorului de la capul de scriere
Algoritmi folositi / functii implementate:
Functii de ridicare si coborare a creionului **pen_up()/pen_down()** Functie pentru executia unui singur pas **step(int dir, int axis)** Functie pentru miscare pe axa X si Y cu specificare a pozitiei creionului **move(int stepsX, int stepsY, bool new_pen_state)** Functie pentru miscare la anumite coordonate **move_to(int x, int y, bool pen_state)** In loop se poate prelua o instructiune G-Code in formatul G01 X<STEPS_X> Y<STEPS_Y> Z<If 0 => pen_down() else pen_up()>
Utilizare: Userul poate transmite prin interfata seriala instructiuni GCODE G01 iar plotter-ul se va deplasa la coordonatele specificate. Acest mod de comunicare permite utilizarea unui script de python pentru transmiterea instructiunilor si astfel desenarea oricarei forme (in teorie)
La miscarea pe axa Y dispozitivul oscileaza foarte tare, din pacate nu am reusit sa gasesc o solutie pentru acest lucru momentan.
A fost foarte dragut sa pot invata sa fac modele pentru imprimarea 3D si lucrul hands-on cu componente mi se pare la fel foarte util.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.