INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MATO
Por: GgabrielPOWs • 25/11/2019 • Trabalho acadêmico • 2.952 Palavras (12 Páginas) • 213 Visualizações
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MATO
GROSSO - Campús Cel. Octayde Jorge da Silva
6731.3B G2
Aluno: João Gabriel Brasil Da Costa
Cuiabá- MT
2019
Aluna: João Gabriel Brasil Da Costa
Impressora 2D
Cuiabá-MT
2019
Materiais :
02- Drives de computador
01- Shield
01- Arduino
01- Caneta
X- Parafusos
01- Furadeira
X- Jacarezinhos ( presilias )
01- Cabo de 4 cores
- Placa
- Blocos de madeiras
01- Suporte para a caneta
01- Alicate
O código comentado :
#include
#include
#define LINE_BUFFER_LENGTH 512
char STEP = MICROSTEP ;
// Posição servo para cima e para baixo const int penZUp = 99;
const int penZDown = 70;
// Servo on PWM pin 10 const int penServoPin =10 ;
// Deve ser adequado para os leitores de DVD, mas não é muito importante const int stepsPerRevolution = 40;
// criar objeto servo para controlar um servo
Servo penServo;
// Inicialize steppers para os eixos X e Y usando os pinos do Arduino para a ponte H
L293D
AF_Stepper myStepperY(stepsPerRevolution,1);
AF_Stepper myStepperX(stepsPerRevolution,2);
/* Estruturas, variáveis globais */ struct point { float x; float y; float z;
};
// Posição atual do plothead struct point actuatorPos;
// As configurações de desenho devem estar OK float StepInc = 1;
int StepDelay = 0; int LineDelay =0; int penDelay = 50;
// Etapas do motor para ir 1 milímetro.
// Use o esboço de teste para executar 100 etapas. Meça o comprimento da linha.
// Calcular etapas por mm. Entre aqui. float StepsPerMillimeterX = 100.0; float StepsPerMillimeterY = 100.0;
// Desenho dos limites do robô, em mm
// OK para começar. Poderia subir até 50 mm se bem calibrado.
float Xmin = 0; float Xmax = 35; float Ymin = 0; float Ymax = 35; float Zmin = 0; float Zmax = 1;
float Xpos = Xmin; float Ypos = Ymin; float Zpos = Zmax;
// Defina como verdadeiro para obter a saída de depuração. boolean verbose = false; // Precisa interpretar
// G1 para mover
// G4 P300 (espera 150ms)
// M300 S30 (caneta para baixo)
// M300 S50 (caneta para cima) // Descartar qualquer coisa com um (
// Descarte qualquer outro comando!
/**********************
* void setup() - Initialisations
***********************/ void setup() {
// Setup
Serial.begin( 9600 );
penServo.attach(penServoPin); penServo.write(penZUp); delay(100);
// Decrease if necessary myStepperX.setSpeed(600);
myStepperY.setSpeed(600);
// Definir e mover para a posição padrão inicial
// TBD
// Notificações !!!
Serial.println("Mini CNC Plotter alive and detonando!");
Serial.print("X range is from ");
Serial.print(Xmin);
Serial.print(" to ");
Serial.print(Xmax);
Serial.println(" mm.");
Serial.print("Y range is from ");
Serial.print(Ymin);
Serial.print(" to ");
Serial.print(Ymax);
Serial.println(" mm.");
}
/**********************
* void loop() - Main loop ***********************/ void loop()
{
delay(100);
char line[ LINE_BUFFER_LENGTH ];
char c; int lineIndex;
bool lineIsComment, lineSemiColon;
lineIndex = 0; lineSemiColon = false; lineIsComment = false;
while (1) {
// Recepção serial - principalmente do Grbl, adicionado suporte de ponto e vírgula while ( Serial.available()>0 ) { c = Serial.read();
if (( c == '\n') || (c == '\r') ) { //Fim da linha atingido if ( lineIndex > 0 ) { // A linha está completa. Então execute!
line[ lineIndex ] = '\0'; // Terminar sequência if (verbose) {
Serial.print( "Received : ");
Serial.println( line );
}
processIncomingLine( line, lineIndex ); lineIndex = 0;
} else {
// Linha vazia ou comentário. Pular bloco.
}
lineIsComment = false; lineSemiColon = false;
Serial.println("ok");
}
else {
if ( (lineIsComment) || (lineSemiColon) ) { // Jogue fora todos os caracteres de comentário if ( c == ')' ) lineIsComment = false; // Fim do comentário. Retomar a linha.
} else {
if ( c <= ' ' ) { // Jogue fora o espaço em branco e controle os caracteres
}
else if ( c == '/' ) { // A exclusão de bloco não é suportada. Ignorar caractere.
}
else if ( c == '(' ) { // Ative o sinalizador de comentários e ignore todos os caracteres até ')' ou EOL.
lineIsComment = true;
}
else if ( c == ';' ) { lineSemiColon = true;
...