<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>CNC by Estarlin Lara Montero</title>
      <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e</link>
      <description>Impresora 2D</description>
      <language>en-us</language>
      <pubDate>2023-04-20 03:12:16 UTC</pubDate>
      <lastBuildDate>2023-05-04 15:38:12 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url></url>
      </image>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561054115</link>
         <description><![CDATA[<div>2-casetas de dvd.<br>1-arduino.<br>1-targeta driver.<br>1-servo motor.<br>8-tornillos tuercas y arandelas.</div>]]></description>
         <enclosure url="" />
         <pubDate>2023-04-20 03:18:04 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561054115</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561063526</link>
         <description><![CDATA[<div>Arduino:Esta aplicación nos ayudó a programar el arduino.<br><br>&nbsp;Inkscape:Esta aplicación nos ayudó a vectorizar imagenes y a descargarlas en gcode.<br><br>Pronterface:Esta aplicación es la que nos ayuda a utilizar la máquina.</div>]]></description>
         <enclosure url="" />
         <pubDate>2023-04-20 03:27:03 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561063526</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561066365</link>
         <description><![CDATA[<div>#include &lt;Servo.h&gt;</div><div>#include &lt;AFMotor.h&gt;</div><div><br></div><div>#define LINE_BUFFER_LENGTH 512</div><div><br></div><div>char STEP = MICROSTEP ;</div><div><br></div><div>// Servo position for Up and Down&nbsp;</div><div>const int penZUp = 120;</div><div>const int penZDown = 50;</div><div><br></div><div>// Servo on PWM pin 10</div><div>const int penServoPin =10 ;</div><div><br></div><div>// Should be right for DVD steppers, but is not too important here</div><div>const int stepsPerRevolution = 48;&nbsp;</div><div>//&nbsp;</div><div>// create servo object to control a servo&nbsp;</div><div>Servo penServo; &nbsp;</div><div><br></div><div>// Initialize steppers for X- and Y-axis using this Arduino pins for the L293D H-bridge</div><div>AF_Stepper myStepperY(stepsPerRevolution,1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>AF_Stepper myStepperX(stepsPerRevolution,2); &nbsp;</div><div><br></div><div>/* Structures, global variables&nbsp; &nbsp; */</div><div>struct point {&nbsp;</div><div>&nbsp; float x;&nbsp;</div><div>&nbsp; float y;&nbsp;</div><div>&nbsp; float z;&nbsp;</div><div>};</div><div><br></div><div>// Current position of plothead</div><div>struct point actuatorPos;</div><div><br></div><div>//&nbsp; Drawing settings, should be OK</div><div>float StepInc = 1;</div><div>int StepDelay = 1;</div><div>int LineDelay =0;</div><div>int penDelay = 50;</div><div><br></div><div>// Motor steps to go 1 millimeter.</div><div>// Use test sketch to go 100 steps. Measure the length of line.&nbsp;</div><div>// Calculate steps per mm. Enter here.</div><div>float StepsPerMillimeterX = 100.0;</div><div>float StepsPerMillimeterY = 100.0;</div><div><br></div><div>// Drawing robot limits, in mm</div><div>// OK to start with. Could go up to 50 mm if calibrated well.&nbsp;</div><div>float Xmin = 0;</div><div>float Xmax = 40;</div><div>float Ymin = 0;</div><div>float Ymax = 40;</div><div>float Zmin = 0;</div><div>float Zmax = 1;</div><div><br></div><div>float Xpos = Xmin;</div><div>float Ypos = Ymin;</div><div>float Zpos = Zmax;&nbsp;</div><div><br></div><div>// Set to true to get debug output.</div><div>boolean verbose = false;</div><div><br></div><div>//&nbsp; Needs to interpret&nbsp;</div><div>//&nbsp; G1 for moving</div><div>//&nbsp; G4 P300 (wait 150ms)</div><div>//&nbsp; M300 S30 (pen down)</div><div>//&nbsp; M300 S50 (pen up)</div><div>//&nbsp; Discard anything with a (</div><div>//&nbsp; Discard any other command!</div><div><br></div><div>/**********************</div><div>&nbsp;* void setup() - Initialisations</div><div>&nbsp;***********************/</div><div>void setup() {</div><div>&nbsp; //&nbsp; Setup</div><div>&nbsp;&nbsp;</div><div>&nbsp; Serial.begin( 9600 );</div><div>&nbsp;&nbsp;</div><div>&nbsp; penServo.attach(penServoPin);</div><div>&nbsp; penServo.write(penZUp);</div><div>&nbsp; delay(100);</div><div><br></div><div>&nbsp; // Decrease if necessary</div><div>&nbsp; myStepperX.setSpeed(600);</div><div><br></div><div>&nbsp; myStepperY.setSpeed(600); &nbsp;</div><div>&nbsp;&nbsp;</div><div><br></div><div>&nbsp; //&nbsp; Set &amp; move to initial default position</div><div>&nbsp; // TBD</div><div><br></div><div>&nbsp; //&nbsp; Notifications!!!</div><div>&nbsp; Serial.println("Mini CNC Plotter alive and kicking!");</div><div>&nbsp; Serial.print("X range is from ");&nbsp;</div><div>&nbsp; Serial.print(Xmin);&nbsp;</div><div>&nbsp; Serial.print(" to ");&nbsp;</div><div>&nbsp; Serial.print(Xmax);&nbsp;</div><div>&nbsp; Serial.println(" mm.");&nbsp;</div><div>&nbsp; Serial.print("Y range is from ");&nbsp;</div><div>&nbsp; Serial.print(Ymin);&nbsp;</div><div>&nbsp; Serial.print(" to ");&nbsp;</div><div>&nbsp; Serial.print(Ymax);&nbsp;</div><div>&nbsp; Serial.println(" mm.");&nbsp;</div><div>}</div><div><br></div><div>/**********************</div><div>&nbsp;* void loop() - Main loop</div><div>&nbsp;***********************/</div><div>void loop()&nbsp;</div><div>{</div><div>&nbsp;&nbsp;</div><div>&nbsp; delay(100);</div><div>&nbsp; char line[ LINE_BUFFER_LENGTH ];</div><div>&nbsp; char c;</div><div>&nbsp; int lineIndex;</div><div>&nbsp; bool lineIsComment, lineSemiColon;</div><div><br></div><div>&nbsp; lineIndex = 0;</div><div>&nbsp; lineSemiColon = false;</div><div>&nbsp; lineIsComment = false;</div><div><br></div><div>&nbsp; while (1) {</div><div><br></div><div>&nbsp; &nbsp; // Serial reception - Mostly from Grbl, added semicolon support</div><div>&nbsp; &nbsp; while ( Serial.available()&gt;0 ) {</div><div>&nbsp; &nbsp; &nbsp; c = Serial.read();</div><div>&nbsp; &nbsp; &nbsp; if (( c == '\n') || (c == '\r') ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// End of line reached</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if ( lineIndex &gt; 0 ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Line is complete. Then execute!</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line[ lineIndex ] = '\0';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Terminate string</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (verbose) {&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.print( "Received : ");&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.println( line );&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; processIncomingLine( line, lineIndex );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineIndex = 0;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; else {&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Empty or comment line. Skip block.</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; lineIsComment = false;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; lineSemiColon = false;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; Serial.println("ok");&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; else {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if ( (lineIsComment) || (lineSemiColon) ) { &nbsp; // Throw away all comment characters</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( c == ')' )&nbsp; lineIsComment = false;&nbsp; &nbsp; &nbsp;// End of comment. Resume line.</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; else {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( c &lt;= ' ' ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Throw away whitepace and control characters</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else if ( c == '/' ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Block delete not supported. Ignore character.</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else if ( c == '(' ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Enable comments flag and ignore all characters until ')' or EOL.</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineIsComment = true;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else if ( c == ';' ) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineSemiColon = true;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else if ( lineIndex &gt;= LINE_BUFFER_LENGTH-1 ) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.println( "ERROR - lineBuffer overflow" );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineIsComment = false;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineSemiColon = false;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else if ( c &gt;= 'a' &amp;&amp; c &lt;= 'z' ) {&nbsp; &nbsp; &nbsp; &nbsp; // Upcase lowercase</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line[ lineIndex++ ] = c-'a'+'A';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line[ lineIndex++ ] = c;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; }</div><div>&nbsp; }</div><div>}</div><div><br></div><div>void processIncomingLine( char* line, int charNB ) {</div><div>&nbsp; int currentIndex = 0;</div><div>&nbsp; char buffer[ 64 ];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Hope that 64 is enough for 1 parameter</div><div>&nbsp; struct point newPos;</div><div><br></div><div>&nbsp; newPos.x = 0.0;</div><div>&nbsp; newPos.y = 0.0;</div><div><br></div><div>&nbsp; //&nbsp; Needs to interpret&nbsp;</div><div>&nbsp; //&nbsp; G1 for moving</div><div>&nbsp; //&nbsp; G4 P300 (wait 150ms)</div><div>&nbsp; //&nbsp; G1 X60 Y30</div><div>&nbsp; //&nbsp; G1 X30 Y50</div><div>&nbsp; //&nbsp; M300 S30 (pen down)</div><div>&nbsp; //&nbsp; M300 S50 (pen up)</div><div>&nbsp; //&nbsp; Discard anything with a (</div><div>&nbsp; //&nbsp; Discard any other command!</div><div><br></div><div>&nbsp; while( currentIndex &lt; charNB ) {</div><div>&nbsp; &nbsp; switch ( line[ currentIndex++ ] ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Select command, if any</div><div>&nbsp; &nbsp; case 'U':</div><div>&nbsp; &nbsp; &nbsp; penUp();&nbsp;</div><div>&nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 'D':</div><div>&nbsp; &nbsp; &nbsp; penDown();&nbsp;</div><div>&nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 'G':</div><div>&nbsp; &nbsp; &nbsp; buffer[0] = line[ currentIndex++ ];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // /!\ Dirty - Only works with 2 digit commands</div><div>&nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; buffer[1] = line[ currentIndex++ ];</div><div>&nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; buffer[2] = '\0';</div><div>&nbsp; &nbsp; &nbsp; buffer[1] = '\0';</div><div><br></div><div>&nbsp; &nbsp; &nbsp; switch ( atoi( buffer ) ){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Select G command</div><div>&nbsp; &nbsp; &nbsp; case 0:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// G00 &amp; G01 - Movement or fast movement. Same here</div><div>&nbsp; &nbsp; &nbsp; case 1:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; // /!\ Dirty - Suppose that X is before Y</div><div>&nbsp; &nbsp; &nbsp; &nbsp; char* indexX = strchr( line+currentIndex, 'X' );&nbsp; // Get X/Y position in the string (if any)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; char* indexY = strchr( line+currentIndex, 'Y' );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if ( indexY &lt;= 0 ) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newPos.x = atof( indexX + 1);&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newPos.y = actuatorPos.y;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; else if ( indexX &lt;= 0 ) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newPos.y = atof( indexY + 1);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newPos.x = actuatorPos.x;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; else {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newPos.y = atof( indexY + 1);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; indexY = '\0';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newPos.x = atof( indexX + 1);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; drawLine(newPos.x, newPos.y );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; Serial.println("ok");</div><div>&nbsp; &nbsp; &nbsp; &nbsp; actuatorPos.x = newPos.x;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; actuatorPos.y = newPos.y;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 'M':</div><div>&nbsp; &nbsp; &nbsp; buffer[0] = line[ currentIndex++ ];&nbsp; &nbsp; &nbsp; &nbsp; // /!\ Dirty - Only works with 3 digit commands</div><div>&nbsp; &nbsp; &nbsp; buffer[1] = line[ currentIndex++ ];</div><div>&nbsp; &nbsp; &nbsp; buffer[2] = line[ currentIndex++ ];</div><div>&nbsp; &nbsp; &nbsp; buffer[3] = '\0';</div><div>&nbsp; &nbsp; &nbsp; switch ( atoi( buffer ) ){</div><div>&nbsp; &nbsp; &nbsp; case 300:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; char* indexS = strchr( line+currentIndex, 'S' );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; float Spos = atof( indexS + 1);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Serial.println("ok");</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Spos == 30) {&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; penDown();&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Spos == 50) {&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; penUp();&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; case 114:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // M114 - Repport position</div><div>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print( "Absolute position : X = " );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print( actuatorPos.x );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print( "&nbsp; -&nbsp; Y = " );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; Serial.println( actuatorPos.y );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; &nbsp; default:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print( "Command not recognized : M");</div><div>&nbsp; &nbsp; &nbsp; &nbsp; Serial.println( buffer );</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; }</div><div>&nbsp; }</div><div><br><br><br></div><div>}</div><div><br><br></div><div>/*********************************</div><div>&nbsp;* Draw a line from (x0;y0) to (x1;y1).</div><div>&nbsp;* int (x1;y1) : Starting coordinates</div><div>&nbsp;* int (x2;y2) : Ending coordinates</div><div>&nbsp;**********************************/</div><div>void drawLine(float x1, float y1) {</div><div><br></div><div>&nbsp; if (verbose)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; Serial.print("fx1, fy1: ");</div><div>&nbsp; &nbsp; Serial.print(x1);</div><div>&nbsp; &nbsp; Serial.print(",");</div><div>&nbsp; &nbsp; Serial.print(y1);</div><div>&nbsp; &nbsp; Serial.println("");</div><div>&nbsp; } &nbsp;</div><div><br></div><div>&nbsp; //&nbsp; Bring instructions within limits</div><div>&nbsp; if (x1 &gt;= Xmax) {&nbsp;</div><div>&nbsp; &nbsp; x1 = Xmax;&nbsp;</div><div>&nbsp; }</div><div>&nbsp; if (x1 &lt;= Xmin) {&nbsp;</div><div>&nbsp; &nbsp; x1 = Xmin;&nbsp;</div><div>&nbsp; }</div><div>&nbsp; if (y1 &gt;= Ymax) {&nbsp;</div><div>&nbsp; &nbsp; y1 = Ymax;&nbsp;</div><div>&nbsp; }</div><div>&nbsp; if (y1 &lt;= Ymin) {&nbsp;</div><div>&nbsp; &nbsp; y1 = Ymin;&nbsp;</div><div>&nbsp; }</div><div><br></div><div>&nbsp; if (verbose)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; Serial.print("Xpos, Ypos: ");</div><div>&nbsp; &nbsp; Serial.print(Xpos);</div><div>&nbsp; &nbsp; Serial.print(",");</div><div>&nbsp; &nbsp; Serial.print(Ypos);</div><div>&nbsp; &nbsp; Serial.println("");</div><div>&nbsp; }</div><div><br></div><div>&nbsp; if (verbose)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; Serial.print("x1, y1: ");</div><div>&nbsp; &nbsp; Serial.print(x1);</div><div>&nbsp; &nbsp; Serial.print(",");</div><div>&nbsp; &nbsp; Serial.print(y1);</div><div>&nbsp; &nbsp; Serial.println("");</div><div>&nbsp; }</div><div><br></div><div>&nbsp; //&nbsp; Convert coordinates to steps</div><div>&nbsp; x1 = (int)(x1*StepsPerMillimeterX);</div><div>&nbsp; y1 = (int)(y1*StepsPerMillimeterY);</div><div>&nbsp; float x0 = Xpos;</div><div>&nbsp; float y0 = Ypos;</div><div><br></div><div>&nbsp; //&nbsp; Let's find out the change for the coordinates</div><div>&nbsp; long dx = abs(x1-x0);</div><div>&nbsp; long dy = abs(y1-y0);</div><div>&nbsp; int sx = x0&lt;x1 ? StepInc : -StepInc;</div><div>&nbsp; int sy = y0&lt;y1 ? StepInc : -StepInc;</div><div><br></div><div>&nbsp; long i;</div><div>&nbsp; long over = 0;</div><div><br></div><div>&nbsp; if (dx &gt; dy) {</div><div>&nbsp; &nbsp; for (i=0; i&lt;dx; ++i) {</div><div>&nbsp; &nbsp; &nbsp; myStepperX.onestep(sx,STEP);</div><div>&nbsp; &nbsp; &nbsp; over+=dy;</div><div>&nbsp; &nbsp; &nbsp; if (over&gt;=dx) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; over-=dx;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; myStepperY.onestep(sy,STEP);</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; delay(StepDelay);</div><div>&nbsp; &nbsp; }</div><div>&nbsp; }</div><div>&nbsp; else {</div><div>&nbsp; &nbsp; for (i=0; i&lt;dy; ++i) {</div><div>&nbsp; &nbsp; &nbsp; myStepperY.onestep(sy,STEP);</div><div>&nbsp; &nbsp; &nbsp; over+=dx;</div><div>&nbsp; &nbsp; &nbsp; if (over&gt;=dy) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; over-=dy;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; myStepperX.onestep(sx,STEP);</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; delay(StepDelay);</div><div>&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;</div><div>&nbsp; }</div><div><br></div><div>&nbsp; if (verbose)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; Serial.print("dx, dy:");</div><div>&nbsp; &nbsp; Serial.print(dx);</div><div>&nbsp; &nbsp; Serial.print(",");</div><div>&nbsp; &nbsp; Serial.print(dy);</div><div>&nbsp; &nbsp; Serial.println("");</div><div>&nbsp; }</div><div><br></div><div>&nbsp; if (verbose)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; Serial.print("Going to (");</div><div>&nbsp; &nbsp; Serial.print(x0);</div><div>&nbsp; &nbsp; Serial.print(",");</div><div>&nbsp; &nbsp; Serial.print(y0);</div><div>&nbsp; &nbsp; Serial.println(")");</div><div>&nbsp; }</div><div><br></div><div>&nbsp; //&nbsp; Delay before any next lines are submitted</div><div>&nbsp; delay(LineDelay);</div><div>&nbsp; //&nbsp; Update the positions</div><div>&nbsp; Xpos = x1;</div><div>&nbsp; Ypos = y1;</div><div>}</div><div><br></div><div>//&nbsp; Raises pen</div><div>void penUp() {&nbsp;</div><div>&nbsp; penServo.write(penZUp);&nbsp;</div><div>&nbsp; delay(penDelay);&nbsp;</div><div>&nbsp; Zpos=Zmax;&nbsp;</div><div>&nbsp; digitalWrite(15, LOW);</div><div>&nbsp; &nbsp; digitalWrite(16, HIGH);</div><div>&nbsp; if (verbose) {&nbsp;</div><div>&nbsp; &nbsp; Serial.println("Pen up!");&nbsp;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; }&nbsp;</div><div>}</div><div>//&nbsp; Lowers pen</div><div>void penDown() {&nbsp;</div><div>&nbsp; penServo.write(penZDown);&nbsp;</div><div>&nbsp; delay(penDelay);&nbsp;</div><div>&nbsp; Zpos=Zmin;&nbsp;</div><div>&nbsp; digitalWrite(15, HIGH);</div><div>&nbsp; &nbsp; digitalWrite(16, LOW);</div><div>&nbsp; if (verbose) {&nbsp;</div><div>&nbsp; &nbsp; Serial.println("Pen down.");&nbsp;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; }&nbsp;</div><div>}</div>]]></description>
         <enclosure url="" />
         <pubDate>2023-04-20 03:29:30 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561066365</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561068437</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1898145787/b70a34471438b2b172874d5b1e94b695/340285025_1499808630551835_74575983155288700_n.jpg" />
         <pubDate>2023-04-20 03:31:16 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561068437</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561068760</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1898145787/1b06b3b7a309940b2f7dfd588269c40c/339473424_3469776583307539_6607484194591414627_n.jpg" />
         <pubDate>2023-04-20 03:31:35 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561068760</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561069122</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1898145787/2373a15a142ec33715bd438bb38528d5/339604414_628101335829680_2198942710874637257_n.jpg" />
         <pubDate>2023-04-20 03:32:00 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561069122</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561079678</link>
         <description><![CDATA[<div>En el procedimiento lo que hicimos fue desarmar las casetas de dvd para retirarle los lectores que tienen por dentro,despues de eso procedimos a soldarle algunos cables a los motores pequeños que traen los lectores.<br><br>Después procedimos a hacerle algunos agujeros a las tapas de la caseta,luego le colocamos los tornillos,tuercas y arandelas en cada agujero de los lectores.<br><br>También procedimos a montar todo y luego programar el Arduino.&nbsp; &nbsp;</div>]]></description>
         <enclosure url="" />
         <pubDate>2023-04-20 03:42:31 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561079678</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561081958</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1898145787/c0e4a5d7fa6f4f0620cdf306932ddba6/V_deo_sin_t_tulo___Hecho_con_Clipchamp__1_.mp4" />
         <pubDate>2023-04-20 03:45:04 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561081958</guid>
      </item>
      <item>
         <title>Como vectorizar una imagen y descargarla en gcode</title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561087209</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://youtu.be/1QykGhbqH0Q" />
         <pubDate>2023-04-20 03:51:22 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561087209</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561089588</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://youtu.be/KsZn5lQo1DY" />
         <pubDate>2023-04-20 03:53:58 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561089588</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561091602</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://youtu.be/qMWEW3rzd2Q" />
         <pubDate>2023-04-20 03:55:41 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561091602</guid>
      </item>
      <item>
         <title>Estos link son de como armarlo y programarla</title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561093290</link>
         <description><![CDATA[]]></description>
         <enclosure url="" />
         <pubDate>2023-04-20 03:57:50 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561093290</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561096474</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1898145787/c50c26db36fa8024e393d378822d51d9/V_deo_sin_t_tulo___Hecho_con_Clipchamp.mp4" />
         <pubDate>2023-04-20 04:01:23 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561096474</guid>
      </item>
      <item>
         <title></title>
         <author>laramonteroestarlin</author>
         <link>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561882250</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1898145787/6e03854b75fa2a2a266c4f2fa052911a/339927588_936021977516833_4627249448905360211_n.jpg" />
         <pubDate>2023-04-20 13:51:35 UTC</pubDate>
         <guid>https://padlet.com/laramonteroestarlin/8hssvabtnjclmb6e/wish/2561882250</guid>
      </item>
   </channel>
</rss>
