<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Arduino Automatic Wire Cutter and Stripper -- Episode 368</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Arduino Automatic Wire Cutter and Stripper -- Episode 368</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368</link><pubDate>Fri, 16 Nov 2018 08:24:00 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:71678c02-048d-4947-82ea-5c18726e785f</guid><dc:creator>Matt</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368#comments</comments><description>Current Revision posted to Documents by Matt on 11/16/2018 8:24:00 AM&lt;br /&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img alt="image"  src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;span style="font-size:18px;font-weight:bold;"&gt;Automatic Wire Cutter and Stripper&lt;/span&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 Presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3796/vcp-biography-dj" data-e14adj="t"&gt;DJ Harrigan&amp;#39;s VCP Profile&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style="display:block;margin:0 auto;width:80%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="padding-bottom:12px;"&gt;&lt;span&gt;&lt;a href="https://www.youtube.com/watch?v=WVnbbqSEDU0"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p style="background-color:#e9f6fc;border:1px solid #b8d7e5;margin:0;max-width:634px;padding:8px;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Open Sans&amp;#39;, Arial, sans-serif;text-align:justify;"&gt;Say goodbye to cramped wrists and handheld gadgets for cutting wire and say hello to your new workhorse on the workbench: the A.W.C.S. The &amp;ldquo;Ox&amp;rdquo; is an automatic wire cutting and stripping machine meant to take some of the busywork out of building electronic gadgets. Will it succeed? Will it actually save time? Will my wrists be spared from carpal tunnel and tendonitis? Let&amp;rsquo;s find out!&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1gt3jrlun0"&gt;&lt;span style="color:#3334ca;"&gt;Supplemental Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li style="margin:0;padding:0px;"&gt;&lt;a href="/challenges-projects/element14-presents/m/files/147422" data-e14adj="t"&gt;Project Code Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;Adafruit_CharacterOLED.h&amp;gt;
#include &amp;lt;AccelStepper.h&amp;gt;
#include &amp;lt;Bounce2.h&amp;gt;
#include &amp;lt;Encoder.h&amp;gt;




#define ENCODER_DO_NOT_USE_INTERRUPTS
#define PIN_ENABLE_FEED 21
#define PIN_ENC_A 2
#define PIN_ENC_B 3
#define PIN_BUTTON_ENC 4
#define PIN_BUTTON_RED 5
#define PIN_LED 13
#define PIN_SENSOR A0


#define WIRE_QUANT_MIN 1
#define WIRE_QUANT_MAX 100
#define WIRE_MIN_LEN 5
#define WIRE_AWG 22




Adafruit_CharacterOLED lcd(OLED_V2, 6, 7, 8, 9, 10, 11, 12);
AccelStepper stepCut(1, 19, 18); // (DRIVER, STEP, DIR)
AccelStepper stepFeed(1, 15, 14);
Encoder encoder(PIN_ENC_A, PIN_ENC_B);
Bounce buttonOK = Bounce();
Bounce buttonRED = Bounce();




int curSpool = 0; // in future, give each spool a unique id and track total length cut
int curSpoolRemaining = 0;


int mainMode = 0;
int subMode = 0;
int lastSubMode = -99;
int scrollPos = 0;
int lastScrollPos = -99;
long encPos = -999;
long lastEncPos = 0;


long retractPos = -3600;
long stripPos = -1000; //
long stripFeedDistance = 0;
long lengthFeedDistance = 0;
long cutPos = 200; 
long targetPos = 0;
boolean isHomed = false;
int bladeCycleState = 0;
int sensorVal = 0;


uint16_t wireQuantity = 0;
uint16_t wireLength = 0; // in milimeters
uint16_t wireStripLength = 0; 
uint16_t wiresCut = 0;


float conductor_diam = 0.64516; // 22 AWG
float feed_diam = 22.0; // uncalibrated!
float feed_circum = PI * feed_diam; // 69.115mm per rev
//float feed_res = feed_circum / 200.0; // .346mm per step
float feed_res = 0.346;


// Z travel is 1/16&amp;quot; (1.5875mm) per revolution
// both motors are 1.8deg per step (200 per revolution)
// the cut motor driver has a noncofigurable default 10x microstepping rate
// so z resolution = 0.00079375mm per &amp;quot;full&amp;quot; step sent
// leaving us with ~1260 steps per mm z travel


boolean ledState = 0;
long curTime = 0;
long lastTime = 0;
int deltaTime = 100;


void setup(){


  Serial.begin(115200);
  lcd.begin(16, 2);
  lcd.print(&amp;quot;AWCS READY!&amp;quot;);
  stepCut.setPinsInverted(true, true);
  stepFeed.setPinsInverted(true, true);
  stepFeed.setMaxSpeed(2000);
  stepFeed.setAcceleration(6000);
  stepCut.setMaxSpeed(20000);
  stepCut.setAcceleration(40000);
  pinMode(PIN_ENABLE_FEED, OUTPUT);
  pinMode(PIN_BUTTON_ENC, INPUT_PULLUP);
  pinMode(PIN_BUTTON_RED, INPUT_PULLUP);
  pinMode(PIN_LED, OUTPUT);
  buttonOK.attach(PIN_BUTTON_ENC);
  buttonRED.attach(PIN_BUTTON_RED);
  buttonOK.interval(5);
  buttonRED.interval(5);
  
  digitalWrite(PIN_ENABLE_FEED, LOW);
  delay(200);
  digitalWrite(PIN_ENABLE_FEED, HIGH);
  delay(200);
  digitalWrite(PIN_ENABLE_FEED, LOW);
  //setZHOME():
  setBlade(&amp;#39;H&amp;#39;);
  //lcd.clear();
  printMenu();
  printCursor(0);
  subMode = 5;
  setBlade(&amp;#39;R&amp;#39;);
}


void loop(){


  /*curTime = millis(); // VERY BASIC Calibration measurement
  if (curTime - lastTime &amp;gt; deltaTime){
    lastTime = curTime;
     getInput();
    //lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(&amp;quot;POS:   &amp;quot;);
    lcd.setCursor(4, 0);
    lcd.print(scrollPos);
    lcd.setCursor(0, 1);
    lcd.print(&amp;quot;SEN:    &amp;quot;);
    lcd.setCursor(4, 1);
    lcd.print(sensorVal);
    cutPos = 63 * scrollPos;
    stepCut.moveTo(cutPos);
  }
  stepCut.run();*/
  
  getInput();
  
  switch(mainMode){
    
    case 0: // MAIN MENU
        switch(subMode){
          case 0: // choose quantity
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 999)scrollPos = 1;
              if (scrollPos &amp;lt; 1)scrollPos = 999;
              lastScrollPos = scrollPos;
              wireQuantity = scrollPos;
              lcd.setCursor(5, 0);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(5, 0);
              lcd.print(wireQuantity);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 1: // choose length (resolution of 5mm)
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 99)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 99;
              lastScrollPos = scrollPos;
              wireLength = scrollPos * 5;
              lcd.setCursor(13, 0);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(13, 0);
              lcd.print(wireLength);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 2: // choose strip length (default strip both ends)
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 999)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 999;
              lastScrollPos = scrollPos;
              wireStripLength = scrollPos;
              lcd.setCursor(5, 1);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(5, 1);
              lcd.print(wireStripLength);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 3: // run
              subMode = 5;
              mainMode = 1; // RUN!
              lcd.clear();
              lcd.home();
              lcd.print(&amp;quot;NOW CUTTING:&amp;quot;);
              printJobStatus();
              setBlade(&amp;#39;R&amp;#39;);
              stepFeed.setCurrentPosition(0);
              stripFeedDistance = 32* round(float(wireStripLength)/feed_res);
              lengthFeedDistance = 32* round((2.0*float(wireStripLength))/feed_res);
              Serial.print(&amp;quot;FEED STEPS: &amp;quot;);Serial.println(stripFeedDistance);
              Serial.print(&amp;quot;FEED DIST: &amp;quot;);Serial.println(lengthFeedDistance);
              
          break;
          case 4: // clear
            resetParameters();
            printMenu();
            returnToMenu();
          
          break;
          case 5: // scrolling
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 4)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 4;
              lastScrollPos = scrollPos;
              printCursor(scrollPos);
              }
              if (buttonOK.fell()){
                subMode = scrollPos;
                //delay(200);
            }
          break;
        }
    break;
    
    case 1: // RUN
    
      // loop through quantity, allow mid-job canceling
      switch (bladeCycleState){
        case 0: // initial retract, then feed length of strip
          if (stepCut.distanceToGo() == 0){ // allow the blade to retract
            printJobStatus(); // show wire X of N wires
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(stripFeedDistance); // feed length of strip
          }
        break;
        case 1: // feed, then strip
          if (stepFeed.distanceToGo() == 0){ // allow strip length to fininsh feeding
            bladeCycleState++;
            setBlade(&amp;#39;S&amp;#39;);
          }
        break;
        case 2: // strip, then retract
          if (stepCut.distanceToGo() == 0){ // allow time to strip
            bladeCycleState++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
        case 3: // retract, then feed length of wire
          if (stepCut.distanceToGo() == 0){ // allow retraction
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(lengthFeedDistance);
          }
        break;
        case 4: // feed, then strip
          if (stepFeed.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;S&amp;#39;);
          }
        break;
        case 5: // strip, then retract
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
         case 6: // retract, then feed
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(stripFeedDistance);
          }
        break;
        case 7: // retract, then feed
          if (stepFeed.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;C&amp;#39;);
          }
        break;
        case 8: // cut, then retract and loop if more wires need to run.
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState = 0;
            wiresCut++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
      }

      // return to main menu when done or cancel the job
      if (buttonRED.fell() || wiresCut &amp;gt;= wireQuantity){
        mainMode = 0;
        resetParameters();
        subMode = 5;
        returnToMenu();
        printMenu();
        printCursor(0);
      }
    break;
    
  }
  // the motors only really move if there is a remaning position to travel,
  // and this needs to be called often enough that nesting it 
  // inside some other function doesn&amp;#39;t help much, so we&amp;#39;ll just keep the .run() here
  stepFeed.run();
  stepCut.run();
  
  


} // END MAIN LOOP


void printJobStatus(){
   lcd.setCursor(0, 1);
   lcd.print(&amp;quot;WIRE     OF   &amp;quot;);
   lcd.setCursor(5, 1);
   lcd.print(wiresCut+1);
   lcd.setCursor(11, 1);
   lcd.print(wireQuantity);
}


void setBlade(char bladePos){
  switch (bladePos){
    case &amp;#39;H&amp;#39;: // home
      while (!isHomed){
        curTime = millis();
        if (curTime - lastTime &amp;gt; 100){
          lastTime = curTime;
          sensorVal = analogRead(PIN_SENSOR);
          if (sensorVal &amp;lt; 430){
            targetPos += 63;
            stepCut.moveTo(targetPos);
          } else {
            isHomed = true;
            stepCut.setCurrentPosition(0);
          } 
        }
        stepCut.run();
      }
    break;
    case &amp;#39;R&amp;#39;: // retract
      stepCut.moveTo(retractPos);
    break;
    case &amp;#39;S&amp;#39;: // strip
      stepCut.moveTo(stripPos);
    break;
    case &amp;#39;C&amp;#39;: // cut
      stepCut.moveTo(cutPos);
    break;
  }
}


void returnToMenu(){
  scrollPos = subMode;
  subMode = 5;
}


void printCursor(int cursorPos){
  //clear old cursor positions
  lcd.setCursor(0, 0);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(8, 0);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(0, 1);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(8, 1);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(12, 1);
  lcd.print(&amp;quot; &amp;quot;);
  switch(cursorPos){
    case 0:
      lcd.setCursor(0, 0);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 1:
      lcd.setCursor(8, 0);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 2:
      lcd.setCursor(0, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 3:
      lcd.setCursor(8, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 4:
      lcd.setCursor(12, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
  }
}


void printMenu(){
  lcd.setCursor(0, 0);
  lcd.print(&amp;quot; QTY:    WRL:   &amp;quot;);
  lcd.setCursor(0, 1);
  lcd.print(&amp;quot; STL:    RUN CLR&amp;quot;);
}


void resetParameters(){
  wireQuantity = 0;
  wireLength = 0;
  wireStripLength = 0;
  wiresCut = 0;
  bladeCycleState = 0;
  stripFeedDistance = 0;
  lengthFeedDistance = 0;
}


void getInput(){
  buttonOK.update();
  buttonRED.update();
  if (buttonOK.fell()){
    ledState = !ledState;
    digitalWrite(PIN_LED, ledState);
  }
  encPos = encoder.read();
  if (abs(encPos - lastEncPos) &amp;gt; 4){ // did the encoder move one detent?
    if (encPos - lastEncPos &amp;gt; 0){ // positive
      scrollPos++;
    } else { // negative
      scrollPos--;
    }
    lastEncPos = encPos;
  }
  sensorVal = analogRead(PIN_SENSOR);
}&lt;/pre&gt;&lt;/p&gt;
&lt;div style="display:none;"&gt;&lt;/div&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1gt3jrlun1"&gt;&lt;span style="color:#3334ca;"&gt;Bill of Material:&lt;/span&gt;&lt;/h2&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;table class="jiveBorder" style="border:1px solid #000000;width:100%;" border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Product Name&lt;/strong&gt;&lt;/th&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Manufacturer&lt;/strong&gt;&lt;/th&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Quantity&lt;br /&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;span&gt;&lt;a id="e14-product-link-10717" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2610515,2507569,2822195,2749921,2830990,2759299,2819047,2218977,1086614,2663523,5052592,1995941&amp;nsku=34R9658,16M4202,46AC1955,66K9711,47AC4177,56W4347,44AC9084,44W3454,25H7937,53W9525,15J7654,72R3599&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('10717'));" data-farnell="2610515,2507569,2822195,2749921,2830990,2759299,2819047,2218977,1086614,2663523,5052592,1995941" data-newark="34R9658,16M4202,46AC1955,66K9711,47AC4177,56W4347,44AC9084,44W3454,25H7937,53W9525,15J7654,72R3599" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;
&lt;p style="margin:0;"&gt;&lt;strong&gt;&lt;span&gt;Stepper Motor Bipolar 1 A Two Phase 3.4 ohm 6.5 mH &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;SANYO DENKI - SANMOTION&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-d06d4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2610515&amp;nsku=34R9658&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d06d4'));" data-farnell="2610515" data-newark="34R9658" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;
&lt;p style="margin:0;"&gt;&lt;strong&gt;&lt;span&gt;Stepper Motor Power Step High Torque Bipolar 294 in-oz 2.8 A Two Phase 1.1 ohm 3.8 mH &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;LIN ENGINEERING&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-1c1e5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2507569&amp;nsku=16M4202&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1c1e5'));" data-farnell="2507569" data-newark="16M4202" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TMCM-1070 -&amp;nbsp; Stepper Motor Driver, 2-Phase, Single Axis, 2.8A, 24V DC Output, USB, RS485, CAN&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TRINAMIC&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-d44c5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2822195&amp;nsku=46AC1955&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d44c5'));" data-farnell="2822195" data-newark="46AC1955" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;Motor Driver R701 Microstepping Two Phase 12 to 80 Vdc 7 A 560 W 200 kHz &lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;LIN ENGINEERING&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-62fcf" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2749921&amp;nsku=66K9711&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('62fcf'));" data-farnell="2749921" data-newark="66K9711" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;A100067 -&amp;nbsp; Development Board, Arduino Mega 2560 Rev3 RETAIL, ATmega2560 MCU, 54 3.3V I/O, 16 Analogue Inputs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ARDUINO&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-89e88" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2830990&amp;nsku=47AC4177&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('89e88'));" data-farnell="2830990" data-newark="47AC4177" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;1141 -&amp;nbsp; Assembled Data Logging Shield For Arduino&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ADAFRUIT&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-36ef9" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2759299&amp;nsku=56W4347&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('36ef9'));" data-farnell="2759299" data-newark="56W4347" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;24-15112 -&amp;nbsp; Wire, PVC, Red, 22 AWG, 100 ft, 30.5 m&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;STELLAR LABS&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-53de4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2819047&amp;nsku=44AC9084&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('53de4'));" data-farnell="2819047" data-newark="44AC9084" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;OLED Character Display&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ADAFRUIT&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-99b64" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2218977&amp;nsku=44W3454&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('99b64'));" data-farnell="2218977" data-newark="44W3454" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Pushbutton Switch Off(On SPST 125 V 50 V 400 mA Solder &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;APEM&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-0eb1c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=1086614&amp;nsku=25H7937&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0eb1c'));" data-farnell="1086614" data-newark="25H7937" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Incremental Encoder 5 VDC 2 Channels 60 rpm 24 Detents 24 Pulses PEC11R Series &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;BOURNS&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-1e4c0" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2663523&amp;nsku=53W9525&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1e4c0'));" data-farnell="2663523" data-newark="53W9525" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Hall Effect Proximity Sensor Flange Mount 55100 Series Analogue 4.5 to 5.5 Vdc &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;HAMLIN&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-d7eaa" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=5052592&amp;nsku=15J7654&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d7eaa'));" data-farnell="5052592" data-newark="15J7654" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;AC/DC Enclosed Power Supply(PSU ITE 1 Outputs 200 W 24 V 8.4 A &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TDK-LAMBDA&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-1bd5b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=1995941&amp;nsku=72R3599&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1bd5b'));" data-farnell="1995941" data-newark="72R3599" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1gt3jrlun2"&gt;&lt;span style="color:#3334ca;"&gt;Additional Parts:&lt;/span&gt;&lt;/h2&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;table class="jiveBorder" style="border:1px solid #000000;width:100%;" border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Product Name&lt;/strong&gt;&lt;/th&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Quantity&lt;br /&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;
&lt;p style="margin:0;"&gt;&lt;strong&gt;SCHLEUNIGER CS 9100 &amp;ldquo;V&amp;rdquo; STYLE CUTTING AND STRIPPING BLADES&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;"&gt;&lt;/p&gt;
&lt;div class="migration-injected-attachments"&gt;
&lt;table style="border:0;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan="2"&gt;&lt;span id="attid_https://www.element14.com/community/api/core/v3/attachments/277974" class="_se_attachment"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: oled, stripper, automatic, arduino_vcp, manufacturing, vcp_arduino, element14 presents, friday_releasedj, wire cutter, adafruit, atmega2560, arduino, arduino_mega, automation, dj harrington, friday_release, e14presents_djharrigan&lt;/div&gt;
</description></item><item><title>Episode 368: Arduino Automatic Wire Cutter and Stripper</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368/revision/3</link><pubDate>Mon, 03 Apr 2023 13:10:59 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:71678c02-048d-4947-82ea-5c18726e785f</guid><dc:creator>cstanton</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368#comments</comments><description>Revision 3 posted to Documents by cstanton on 4/3/2023 1:10:59 PM&lt;br /&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/"&gt;&lt;img alt="image"  src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;span style="font-size:18px;font-weight:bold;"&gt;Automatic Wire Cutter and Stripper&lt;/span&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/"&gt;element14 Presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3796/vcp-biography-dj"&gt;DJ Harrigan&amp;#39;s VCP Profile&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style="display:block;margin:0 auto;width:80%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="padding-bottom:12px;"&gt;&lt;span&gt;&lt;a href="https://www.youtube.com/watch?v=WVnbbqSEDU0"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p style="background-color:#e9f6fc;border:1px solid #b8d7e5;margin:0;max-width:634px;padding:8px;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Open Sans&amp;#39;, Arial, sans-serif;text-align:justify;"&gt;Say goodbye to cramped wrists and handheld gadgets for cutting wire and say hello to your new workhorse on the workbench: the A.W.C.S. The &amp;ldquo;Ox&amp;rdquo; is an automatic wire cutting and stripping machine meant to take some of the busywork out of building electronic gadgets. Will it succeed? Will it actually save time? Will my wrists be spared from carpal tunnel and tendonitis? Let&amp;rsquo;s find out!&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1gt3jrlun0"&gt;&lt;span style="color:#3334ca;"&gt;Supplemental Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li style="margin:0;padding:0px;"&gt;&lt;a href="/challenges-projects/element14-presents/m/files/147422"&gt;Project Code Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;Adafruit_CharacterOLED.h&amp;gt;
#include &amp;lt;AccelStepper.h&amp;gt;
#include &amp;lt;Bounce2.h&amp;gt;
#include &amp;lt;Encoder.h&amp;gt;




#define ENCODER_DO_NOT_USE_INTERRUPTS
#define PIN_ENABLE_FEED 21
#define PIN_ENC_A 2
#define PIN_ENC_B 3
#define PIN_BUTTON_ENC 4
#define PIN_BUTTON_RED 5
#define PIN_LED 13
#define PIN_SENSOR A0


#define WIRE_QUANT_MIN 1
#define WIRE_QUANT_MAX 100
#define WIRE_MIN_LEN 5
#define WIRE_AWG 22




Adafruit_CharacterOLED lcd(OLED_V2, 6, 7, 8, 9, 10, 11, 12);
AccelStepper stepCut(1, 19, 18); // (DRIVER, STEP, DIR)
AccelStepper stepFeed(1, 15, 14);
Encoder encoder(PIN_ENC_A, PIN_ENC_B);
Bounce buttonOK = Bounce();
Bounce buttonRED = Bounce();




int curSpool = 0; // in future, give each spool a unique id and track total length cut
int curSpoolRemaining = 0;


int mainMode = 0;
int subMode = 0;
int lastSubMode = -99;
int scrollPos = 0;
int lastScrollPos = -99;
long encPos = -999;
long lastEncPos = 0;


long retractPos = -3600;
long stripPos = -1000; //
long stripFeedDistance = 0;
long lengthFeedDistance = 0;
long cutPos = 200; 
long targetPos = 0;
boolean isHomed = false;
int bladeCycleState = 0;
int sensorVal = 0;


uint16_t wireQuantity = 0;
uint16_t wireLength = 0; // in milimeters
uint16_t wireStripLength = 0; 
uint16_t wiresCut = 0;


float conductor_diam = 0.64516; // 22 AWG
float feed_diam = 22.0; // uncalibrated!
float feed_circum = PI * feed_diam; // 69.115mm per rev
//float feed_res = feed_circum / 200.0; // .346mm per step
float feed_res = 0.346;


// Z travel is 1/16&amp;quot; (1.5875mm) per revolution
// both motors are 1.8deg per step (200 per revolution)
// the cut motor driver has a noncofigurable default 10x microstepping rate
// so z resolution = 0.00079375mm per &amp;quot;full&amp;quot; step sent
// leaving us with ~1260 steps per mm z travel


boolean ledState = 0;
long curTime = 0;
long lastTime = 0;
int deltaTime = 100;


void setup(){


  Serial.begin(115200);
  lcd.begin(16, 2);
  lcd.print(&amp;quot;AWCS READY!&amp;quot;);
  stepCut.setPinsInverted(true, true);
  stepFeed.setPinsInverted(true, true);
  stepFeed.setMaxSpeed(2000);
  stepFeed.setAcceleration(6000);
  stepCut.setMaxSpeed(20000);
  stepCut.setAcceleration(40000);
  pinMode(PIN_ENABLE_FEED, OUTPUT);
  pinMode(PIN_BUTTON_ENC, INPUT_PULLUP);
  pinMode(PIN_BUTTON_RED, INPUT_PULLUP);
  pinMode(PIN_LED, OUTPUT);
  buttonOK.attach(PIN_BUTTON_ENC);
  buttonRED.attach(PIN_BUTTON_RED);
  buttonOK.interval(5);
  buttonRED.interval(5);
  
  digitalWrite(PIN_ENABLE_FEED, LOW);
  delay(200);
  digitalWrite(PIN_ENABLE_FEED, HIGH);
  delay(200);
  digitalWrite(PIN_ENABLE_FEED, LOW);
  //setZHOME():
  setBlade(&amp;#39;H&amp;#39;);
  //lcd.clear();
  printMenu();
  printCursor(0);
  subMode = 5;
  setBlade(&amp;#39;R&amp;#39;);
}


void loop(){


  /*curTime = millis(); // VERY BASIC Calibration measurement
  if (curTime - lastTime &amp;gt; deltaTime){
    lastTime = curTime;
     getInput();
    //lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(&amp;quot;POS:   &amp;quot;);
    lcd.setCursor(4, 0);
    lcd.print(scrollPos);
    lcd.setCursor(0, 1);
    lcd.print(&amp;quot;SEN:    &amp;quot;);
    lcd.setCursor(4, 1);
    lcd.print(sensorVal);
    cutPos = 63 * scrollPos;
    stepCut.moveTo(cutPos);
  }
  stepCut.run();*/
  
  getInput();
  
  switch(mainMode){
    
    case 0: // MAIN MENU
        switch(subMode){
          case 0: // choose quantity
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 999)scrollPos = 1;
              if (scrollPos &amp;lt; 1)scrollPos = 999;
              lastScrollPos = scrollPos;
              wireQuantity = scrollPos;
              lcd.setCursor(5, 0);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(5, 0);
              lcd.print(wireQuantity);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 1: // choose length (resolution of 5mm)
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 99)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 99;
              lastScrollPos = scrollPos;
              wireLength = scrollPos * 5;
              lcd.setCursor(13, 0);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(13, 0);
              lcd.print(wireLength);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 2: // choose strip length (default strip both ends)
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 999)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 999;
              lastScrollPos = scrollPos;
              wireStripLength = scrollPos;
              lcd.setCursor(5, 1);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(5, 1);
              lcd.print(wireStripLength);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 3: // run
              subMode = 5;
              mainMode = 1; // RUN!
              lcd.clear();
              lcd.home();
              lcd.print(&amp;quot;NOW CUTTING:&amp;quot;);
              printJobStatus();
              setBlade(&amp;#39;R&amp;#39;);
              stepFeed.setCurrentPosition(0);
              stripFeedDistance = 32* round(float(wireStripLength)/feed_res);
              lengthFeedDistance = 32* round((2.0*float(wireStripLength))/feed_res);
              Serial.print(&amp;quot;FEED STEPS: &amp;quot;);Serial.println(stripFeedDistance);
              Serial.print(&amp;quot;FEED DIST: &amp;quot;);Serial.println(lengthFeedDistance);
              
          break;
          case 4: // clear
            resetParameters();
            printMenu();
            returnToMenu();
          
          break;
          case 5: // scrolling
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 4)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 4;
              lastScrollPos = scrollPos;
              printCursor(scrollPos);
              }
              if (buttonOK.fell()){
                subMode = scrollPos;
                //delay(200);
            }
          break;
        }
    break;
    
    case 1: // RUN
    
      // loop through quantity, allow mid-job canceling
      switch (bladeCycleState){
        case 0: // initial retract, then feed length of strip
          if (stepCut.distanceToGo() == 0){ // allow the blade to retract
            printJobStatus(); // show wire X of N wires
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(stripFeedDistance); // feed length of strip
          }
        break;
        case 1: // feed, then strip
          if (stepFeed.distanceToGo() == 0){ // allow strip length to fininsh feeding
            bladeCycleState++;
            setBlade(&amp;#39;S&amp;#39;);
          }
        break;
        case 2: // strip, then retract
          if (stepCut.distanceToGo() == 0){ // allow time to strip
            bladeCycleState++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
        case 3: // retract, then feed length of wire
          if (stepCut.distanceToGo() == 0){ // allow retraction
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(lengthFeedDistance);
          }
        break;
        case 4: // feed, then strip
          if (stepFeed.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;S&amp;#39;);
          }
        break;
        case 5: // strip, then retract
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
         case 6: // retract, then feed
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(stripFeedDistance);
          }
        break;
        case 7: // retract, then feed
          if (stepFeed.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;C&amp;#39;);
          }
        break;
        case 8: // cut, then retract and loop if more wires need to run.
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState = 0;
            wiresCut++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
      }

      // return to main menu when done or cancel the job
      if (buttonRED.fell() || wiresCut &amp;gt;= wireQuantity){
        mainMode = 0;
        resetParameters();
        subMode = 5;
        returnToMenu();
        printMenu();
        printCursor(0);
      }
    break;
    
  }
  // the motors only really move if there is a remaning position to travel,
  // and this needs to be called often enough that nesting it 
  // inside some other function doesn&amp;#39;t help much, so we&amp;#39;ll just keep the .run() here
  stepFeed.run();
  stepCut.run();
  
  


} // END MAIN LOOP


void printJobStatus(){
   lcd.setCursor(0, 1);
   lcd.print(&amp;quot;WIRE     OF   &amp;quot;);
   lcd.setCursor(5, 1);
   lcd.print(wiresCut+1);
   lcd.setCursor(11, 1);
   lcd.print(wireQuantity);
}


void setBlade(char bladePos){
  switch (bladePos){
    case &amp;#39;H&amp;#39;: // home
      while (!isHomed){
        curTime = millis();
        if (curTime - lastTime &amp;gt; 100){
          lastTime = curTime;
          sensorVal = analogRead(PIN_SENSOR);
          if (sensorVal &amp;lt; 430){
            targetPos += 63;
            stepCut.moveTo(targetPos);
          } else {
            isHomed = true;
            stepCut.setCurrentPosition(0);
          } 
        }
        stepCut.run();
      }
    break;
    case &amp;#39;R&amp;#39;: // retract
      stepCut.moveTo(retractPos);
    break;
    case &amp;#39;S&amp;#39;: // strip
      stepCut.moveTo(stripPos);
    break;
    case &amp;#39;C&amp;#39;: // cut
      stepCut.moveTo(cutPos);
    break;
  }
}


void returnToMenu(){
  scrollPos = subMode;
  subMode = 5;
}


void printCursor(int cursorPos){
  //clear old cursor positions
  lcd.setCursor(0, 0);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(8, 0);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(0, 1);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(8, 1);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(12, 1);
  lcd.print(&amp;quot; &amp;quot;);
  switch(cursorPos){
    case 0:
      lcd.setCursor(0, 0);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 1:
      lcd.setCursor(8, 0);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 2:
      lcd.setCursor(0, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 3:
      lcd.setCursor(8, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 4:
      lcd.setCursor(12, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
  }
}


void printMenu(){
  lcd.setCursor(0, 0);
  lcd.print(&amp;quot; QTY:    WRL:   &amp;quot;);
  lcd.setCursor(0, 1);
  lcd.print(&amp;quot; STL:    RUN CLR&amp;quot;);
}


void resetParameters(){
  wireQuantity = 0;
  wireLength = 0;
  wireStripLength = 0;
  wiresCut = 0;
  bladeCycleState = 0;
  stripFeedDistance = 0;
  lengthFeedDistance = 0;
}


void getInput(){
  buttonOK.update();
  buttonRED.update();
  if (buttonOK.fell()){
    ledState = !ledState;
    digitalWrite(PIN_LED, ledState);
  }
  encPos = encoder.read();
  if (abs(encPos - lastEncPos) &amp;gt; 4){ // did the encoder move one detent?
    if (encPos - lastEncPos &amp;gt; 0){ // positive
      scrollPos++;
    } else { // negative
      scrollPos--;
    }
    lastEncPos = encPos;
  }
  sensorVal = analogRead(PIN_SENSOR);
}&lt;/pre&gt;&lt;/p&gt;
&lt;div style="display:none;"&gt;&lt;/div&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1gt3jrlun1"&gt;&lt;span style="color:#3334ca;"&gt;Bill of Material:&lt;/span&gt;&lt;/h2&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;table class="jiveBorder" style="border:1px solid #000000;width:100%;" border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Product Name&lt;/strong&gt;&lt;/th&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Manufacturer&lt;/strong&gt;&lt;/th&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Quantity&lt;br /&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;span&gt;&lt;a id="e14-product-link-3b8ed" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2610515,2507569,2822195,2749921,2830990,2759299,2819047,2218977,1086614,2663523,5052592,1995941&amp;nsku=34R9658,16M4202,46AC1955,66K9711,47AC4177,56W4347,44AC9084,44W3454,25H7937,53W9525,15J7654,72R3599&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3b8ed'));" data-farnell="2610515,2507569,2822195,2749921,2830990,2759299,2819047,2218977,1086614,2663523,5052592,1995941" data-newark="34R9658,16M4202,46AC1955,66K9711,47AC4177,56W4347,44AC9084,44W3454,25H7937,53W9525,15J7654,72R3599" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;
&lt;p style="margin:0;"&gt;&lt;strong&gt;&lt;span&gt;Stepper Motor Bipolar 1 A Two Phase 3.4 ohm 6.5 mH &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;SANYO DENKI - SANMOTION&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-188d3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2610515&amp;nsku=34R9658&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('188d3'));" data-farnell="2610515" data-newark="34R9658" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;
&lt;p style="margin:0;"&gt;&lt;strong&gt;&lt;span&gt;Stepper Motor Power Step High Torque Bipolar 294 in-oz 2.8 A Two Phase 1.1 ohm 3.8 mH &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;LIN ENGINEERING&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-e627b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2507569&amp;nsku=16M4202&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('e627b'));" data-farnell="2507569" data-newark="16M4202" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TMCM-1070 -&amp;nbsp; Stepper Motor Driver, 2-Phase, Single Axis, 2.8A, 24V DC Output, USB, RS485, CAN&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TRINAMIC&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-ca9eb" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2822195&amp;nsku=46AC1955&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ca9eb'));" data-farnell="2822195" data-newark="46AC1955" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;Motor Driver R701 Microstepping Two Phase 12 to 80 Vdc 7 A 560 W 200 kHz &lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;LIN ENGINEERING&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-1a3ee" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2749921&amp;nsku=66K9711&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1a3ee'));" data-farnell="2749921" data-newark="66K9711" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;A100067 -&amp;nbsp; Development Board, Arduino Mega 2560 Rev3 RETAIL, ATmega2560 MCU, 54 3.3V I/O, 16 Analogue Inputs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ARDUINO&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-27477" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2830990&amp;nsku=47AC4177&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('27477'));" data-farnell="2830990" data-newark="47AC4177" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;1141 -&amp;nbsp; Assembled Data Logging Shield For Arduino&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ADAFRUIT&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-00292" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2759299&amp;nsku=56W4347&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('00292'));" data-farnell="2759299" data-newark="56W4347" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;24-15112 -&amp;nbsp; Wire, PVC, Red, 22 AWG, 100 ft, 30.5 m&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;STELLAR LABS&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-863bb" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2819047&amp;nsku=44AC9084&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('863bb'));" data-farnell="2819047" data-newark="44AC9084" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;OLED Character Display&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ADAFRUIT&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-edb74" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2218977&amp;nsku=44W3454&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('edb74'));" data-farnell="2218977" data-newark="44W3454" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Pushbutton Switch Off(On SPST 125 V 50 V 400 mA Solder &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;APEM&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-f07d9" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=1086614&amp;nsku=25H7937&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f07d9'));" data-farnell="1086614" data-newark="25H7937" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Incremental Encoder 5 VDC 2 Channels 60 rpm 24 Detents 24 Pulses PEC11R Series &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;BOURNS&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-80939" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2663523&amp;nsku=53W9525&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('80939'));" data-farnell="2663523" data-newark="53W9525" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Hall Effect Proximity Sensor Flange Mount 55100 Series Analogue 4.5 to 5.5 Vdc &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;HAMLIN&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-44c27" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=5052592&amp;nsku=15J7654&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('44c27'));" data-farnell="5052592" data-newark="15J7654" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;AC/DC Enclosed Power Supply(PSU ITE 1 Outputs 200 W 24 V 8.4 A &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TDK-LAMBDA&lt;/strong&gt;&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-b4c60" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=1995941&amp;nsku=72R3599&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b4c60'));" data-farnell="1995941" data-newark="72R3599" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1gt3jrlun2"&gt;&lt;span style="color:#3334ca;"&gt;Additional Parts:&lt;/span&gt;&lt;/h2&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;table class="jiveBorder" style="border:1px solid #000000;width:100%;" border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Product Name&lt;/strong&gt;&lt;/th&gt;
&lt;th style="background-color:#6690bc;border:1px solid #000000;color:#ffffff;padding:2px;text-align:left;" valign="middle"&gt;&lt;strong&gt;Quantity&lt;br /&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;
&lt;p style="margin:0;"&gt;&lt;strong&gt;SCHLEUNIGER CS 9100 &amp;ldquo;V&amp;rdquo; STYLE CUTTING AND STRIPPING BLADES&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0;"&gt;&lt;/p&gt;
&lt;div class="migration-injected-attachments"&gt;
&lt;table style="border:0;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan="2"&gt;&lt;span id="attid_https://www.element14.com/community/api/core/v3/attachments/277974" class="_se_attachment"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: oled, stripper, automatic, arduino_vcp, manufacturing, vcp_arduino, element14 presents, friday_releasedj, wire cutter, adafruit, atmega2560, arduino, arduino_mega, automation, dj harrington, friday_release, e14presents_djharrigan&lt;/div&gt;
</description></item><item><title>Episode 368: Arduino Automatic Wire Cutter and Stripper</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368/revision/2</link><pubDate>Mon, 14 Mar 2022 09:13:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:71678c02-048d-4947-82ea-5c18726e785f</guid><dc:creator>Matt</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368#comments</comments><description>Revision 2 posted to Documents by Matt on 3/14/2022 9:13:58 AM&lt;br /&gt;
&lt;div style="background:#ffffff;padding:14px 16px 16px 18px;margin:0;vertical-align:top;border:1px solid #dadada;"&gt;&lt;div style="float:left;display:inline-block;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/"&gt;&lt;img alt="image" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px"  /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;span style="font-size:18px;font-weight:bold;"&gt;Automatic Wire Cutter and Stripper&lt;/span&gt;&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/"&gt;element14 Presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3796/vcp-biography-dj"&gt;DJ Harrigan&amp;#39;s VCP Profile&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table style="width:80%;display:block;margin:0 auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-bottom:12px;"&gt;&lt;span&gt;&lt;a href="https://www.youtube.com/watch?v=WVnbbqSEDU0"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p style="margin:0;border:1px solid #b8d7e5;background-color:#e9f6fc;padding:8px;max-width:634px;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Open Sans&amp;#39;, Arial, sans-serif;text-align:justify;"&gt;Say goodbye to cramped wrists and handheld gadgets for cutting wire and say hello to your new workhorse on the workbench: the A.W.C.S. The “Ox” is an automatic wire cutting and stripping machine meant to take some of the busywork out of building electronic gadgets. Will it succeed? Will it actually save time? Will my wrists be spared from carpal tunnel and tendonitis? Let’s find out!&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;&lt;span style="color:#3334ca;"&gt;Supplemental Content:&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;Adafruit_CharacterOLED.h&amp;gt;
#include &amp;lt;AccelStepper.h&amp;gt;
#include &amp;lt;Bounce2.h&amp;gt;
#include &amp;lt;Encoder.h&amp;gt;




#define ENCODER_DO_NOT_USE_INTERRUPTS
#define PIN_ENABLE_FEED 21
#define PIN_ENC_A 2
#define PIN_ENC_B 3
#define PIN_BUTTON_ENC 4
#define PIN_BUTTON_RED 5
#define PIN_LED 13
#define PIN_SENSOR A0


#define WIRE_QUANT_MIN 1
#define WIRE_QUANT_MAX 100
#define WIRE_MIN_LEN 5
#define WIRE_AWG 22




Adafruit_CharacterOLED lcd(OLED_V2, 6, 7, 8, 9, 10, 11, 12);
AccelStepper stepCut(1, 19, 18); // (DRIVER, STEP, DIR)
AccelStepper stepFeed(1, 15, 14);
Encoder encoder(PIN_ENC_A, PIN_ENC_B);
Bounce buttonOK = Bounce();
Bounce buttonRED = Bounce();




int curSpool = 0; // in future, give each spool a unique id and track total length cut
int curSpoolRemaining = 0;


int mainMode = 0;
int subMode = 0;
int lastSubMode = -99;
int scrollPos = 0;
int lastScrollPos = -99;
long encPos = -999;
long lastEncPos = 0;


long retractPos = -3600;
long stripPos = -1000; //
long stripFeedDistance = 0;
long lengthFeedDistance = 0;
long cutPos = 200; 
long targetPos = 0;
boolean isHomed = false;
int bladeCycleState = 0;
int sensorVal = 0;


uint16_t wireQuantity = 0;
uint16_t wireLength = 0; // in milimeters
uint16_t wireStripLength = 0; 
uint16_t wiresCut = 0;


float conductor_diam = 0.64516; // 22 AWG
float feed_diam = 22.0; // uncalibrated!
float feed_circum = PI * feed_diam; // 69.115mm per rev
//float feed_res = feed_circum / 200.0; // .346mm per step
float feed_res = 0.346;


// Z travel is 1/16&amp;quot; (1.5875mm) per revolution
// both motors are 1.8deg per step (200 per revolution)
// the cut motor driver has a noncofigurable default 10x microstepping rate
// so z resolution = 0.00079375mm per &amp;quot;full&amp;quot; step sent
// leaving us with ~1260 steps per mm z travel


boolean ledState = 0;
long curTime = 0;
long lastTime = 0;
int deltaTime = 100;


void setup(){


  Serial.begin(115200);
  lcd.begin(16, 2);
  lcd.print(&amp;quot;AWCS READY!&amp;quot;);
  stepCut.setPinsInverted(true, true);
  stepFeed.setPinsInverted(true, true);
  stepFeed.setMaxSpeed(2000);
  stepFeed.setAcceleration(6000);
  stepCut.setMaxSpeed(20000);
  stepCut.setAcceleration(40000);
  pinMode(PIN_ENABLE_FEED, OUTPUT);
  pinMode(PIN_BUTTON_ENC, INPUT_PULLUP);
  pinMode(PIN_BUTTON_RED, INPUT_PULLUP);
  pinMode(PIN_LED, OUTPUT);
  buttonOK.attach(PIN_BUTTON_ENC);
  buttonRED.attach(PIN_BUTTON_RED);
  buttonOK.interval(5);
  buttonRED.interval(5);
  
  digitalWrite(PIN_ENABLE_FEED, LOW);
  delay(200);
  digitalWrite(PIN_ENABLE_FEED, HIGH);
  delay(200);
  digitalWrite(PIN_ENABLE_FEED, LOW);
  //setZHOME():
  setBlade(&amp;#39;H&amp;#39;);
  //lcd.clear();
  printMenu();
  printCursor(0);
  subMode = 5;
  setBlade(&amp;#39;R&amp;#39;);
}


void loop(){


  /*curTime = millis(); // VERY BASIC Calibration measurement
  if (curTime - lastTime &amp;gt; deltaTime){
    lastTime = curTime;
     getInput();
    //lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(&amp;quot;POS:   &amp;quot;);
    lcd.setCursor(4, 0);
    lcd.print(scrollPos);
    lcd.setCursor(0, 1);
    lcd.print(&amp;quot;SEN:    &amp;quot;);
    lcd.setCursor(4, 1);
    lcd.print(sensorVal);
    cutPos = 63 * scrollPos;
    stepCut.moveTo(cutPos);
  }
  stepCut.run();*/
  
  getInput();
  
  switch(mainMode){
    
    case 0: // MAIN MENU
        switch(subMode){
          case 0: // choose quantity
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 999)scrollPos = 1;
              if (scrollPos &amp;lt; 1)scrollPos = 999;
              lastScrollPos = scrollPos;
              wireQuantity = scrollPos;
              lcd.setCursor(5, 0);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(5, 0);
              lcd.print(wireQuantity);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 1: // choose length (resolution of 5mm)
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 99)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 99;
              lastScrollPos = scrollPos;
              wireLength = scrollPos * 5;
              lcd.setCursor(13, 0);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(13, 0);
              lcd.print(wireLength);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 2: // choose strip length (default strip both ends)
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 999)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 999;
              lastScrollPos = scrollPos;
              wireStripLength = scrollPos;
              lcd.setCursor(5, 1);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(5, 1);
              lcd.print(wireStripLength);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 3: // run
              subMode = 5;
              mainMode = 1; // RUN!
              lcd.clear();
              lcd.home();
              lcd.print(&amp;quot;NOW CUTTING:&amp;quot;);
              printJobStatus();
              setBlade(&amp;#39;R&amp;#39;);
              stepFeed.setCurrentPosition(0);
              stripFeedDistance = 32* round(float(wireStripLength)/feed_res);
              lengthFeedDistance = 32* round((2.0*float(wireStripLength))/feed_res);
              Serial.print(&amp;quot;FEED STEPS: &amp;quot;);Serial.println(stripFeedDistance);
              Serial.print(&amp;quot;FEED DIST: &amp;quot;);Serial.println(lengthFeedDistance);
              
          break;
          case 4: // clear
            resetParameters();
            printMenu();
            returnToMenu();
          
          break;
          case 5: // scrolling
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 4)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 4;
              lastScrollPos = scrollPos;
              printCursor(scrollPos);
              }
              if (buttonOK.fell()){
                subMode = scrollPos;
                //delay(200);
            }
          break;
        }
    break;
    
    case 1: // RUN
    
      // loop through quantity, allow mid-job canceling
      switch (bladeCycleState){
        case 0: // initial retract, then feed length of strip
          if (stepCut.distanceToGo() == 0){ // allow the blade to retract
            printJobStatus(); // show wire X of N wires
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(stripFeedDistance); // feed length of strip
          }
        break;
        case 1: // feed, then strip
          if (stepFeed.distanceToGo() == 0){ // allow strip length to fininsh feeding
            bladeCycleState++;
            setBlade(&amp;#39;S&amp;#39;);
          }
        break;
        case 2: // strip, then retract
          if (stepCut.distanceToGo() == 0){ // allow time to strip
            bladeCycleState++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
        case 3: // retract, then feed length of wire
          if (stepCut.distanceToGo() == 0){ // allow retraction
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(lengthFeedDistance);
          }
        break;
        case 4: // feed, then strip
          if (stepFeed.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;S&amp;#39;);
          }
        break;
        case 5: // strip, then retract
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
         case 6: // retract, then feed
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(stripFeedDistance);
          }
        break;
        case 7: // retract, then feed
          if (stepFeed.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;C&amp;#39;);
          }
        break;
        case 8: // cut, then retract and loop if more wires need to run.
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState = 0;
            wiresCut++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
      }

      // return to main menu when done or cancel the job
      if (buttonRED.fell() || wiresCut &amp;gt;= wireQuantity){
        mainMode = 0;
        resetParameters();
        subMode = 5;
        returnToMenu();
        printMenu();
        printCursor(0);
      }
    break;
    
  }
  // the motors only really move if there is a remaning position to travel,
  // and this needs to be called often enough that nesting it 
  // inside some other function doesn&amp;#39;t help much, so we&amp;#39;ll just keep the .run() here
  stepFeed.run();
  stepCut.run();
  
  


} // END MAIN LOOP


void printJobStatus(){
   lcd.setCursor(0, 1);
   lcd.print(&amp;quot;WIRE     OF   &amp;quot;);
   lcd.setCursor(5, 1);
   lcd.print(wiresCut+1);
   lcd.setCursor(11, 1);
   lcd.print(wireQuantity);
}


void setBlade(char bladePos){
  switch (bladePos){
    case &amp;#39;H&amp;#39;: // home
      while (!isHomed){
        curTime = millis();
        if (curTime - lastTime &amp;gt; 100){
          lastTime = curTime;
          sensorVal = analogRead(PIN_SENSOR);
          if (sensorVal &amp;lt; 430){
            targetPos += 63;
            stepCut.moveTo(targetPos);
          } else {
            isHomed = true;
            stepCut.setCurrentPosition(0);
          } 
        }
        stepCut.run();
      }
    break;
    case &amp;#39;R&amp;#39;: // retract
      stepCut.moveTo(retractPos);
    break;
    case &amp;#39;S&amp;#39;: // strip
      stepCut.moveTo(stripPos);
    break;
    case &amp;#39;C&amp;#39;: // cut
      stepCut.moveTo(cutPos);
    break;
  }
}


void returnToMenu(){
  scrollPos = subMode;
  subMode = 5;
}


void printCursor(int cursorPos){
  //clear old cursor positions
  lcd.setCursor(0, 0);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(8, 0);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(0, 1);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(8, 1);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(12, 1);
  lcd.print(&amp;quot; &amp;quot;);
  switch(cursorPos){
    case 0:
      lcd.setCursor(0, 0);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 1:
      lcd.setCursor(8, 0);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 2:
      lcd.setCursor(0, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 3:
      lcd.setCursor(8, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 4:
      lcd.setCursor(12, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
  }
}


void printMenu(){
  lcd.setCursor(0, 0);
  lcd.print(&amp;quot; QTY:    WRL:   &amp;quot;);
  lcd.setCursor(0, 1);
  lcd.print(&amp;quot; STL:    RUN CLR&amp;quot;);
}


void resetParameters(){
  wireQuantity = 0;
  wireLength = 0;
  wireStripLength = 0;
  wiresCut = 0;
  bladeCycleState = 0;
  stripFeedDistance = 0;
  lengthFeedDistance = 0;
}


void getInput(){
  buttonOK.update();
  buttonRED.update();
  if (buttonOK.fell()){
    ledState = !ledState;
    digitalWrite(PIN_LED, ledState);
  }
  encPos = encoder.read();
  if (abs(encPos - lastEncPos) &amp;gt; 4){ // did the encoder move one detent?
    if (encPos - lastEncPos &amp;gt; 0){ // positive
      scrollPos++;
    } else { // negative
      scrollPos--;
    }
    lastEncPos = encPos;
  }
  sensorVal = analogRead(PIN_SENSOR);
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="display:none;"&gt;&lt;/div&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;&lt;span style="color:#3334ca;"&gt;Bill of Material:&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table border="1" class="jiveBorder" style="border:1px solid #000000;width:100%;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Product Name&lt;/strong&gt;&lt;/th&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Manufacturer&lt;/strong&gt;&lt;/th&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Quantity&lt;br /&gt;&lt;/strong&gt;&lt;/th&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;span&gt;&lt;a id="e14-product-link-b9202" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2610515,2507569,2822195,2749921,2830990,2759299,2819047,2218977,1086614,2663523,5052592,1995941&amp;nsku=34R9658,16M4202,46AC1955,66K9711,47AC4177,56W4347,44AC9084,44W3454,25H7937,53W9525,15J7654,72R3599&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b9202'));" data-farnell="2610515,2507569,2822195,2749921,2830990,2759299,2819047,2218977,1086614,2663523,5052592,1995941" data-newark="34R9658,16M4202,46AC1955,66K9711,47AC4177,56W4347,44AC9084,44W3454,25H7937,53W9525,15J7654,72R3599" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;p style="margin:0;"&gt;&lt;strong&gt;&lt;span&gt;Stepper Motor Bipolar 1 A Two Phase 3.4 ohm 6.5 mH &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;SANYO DENKI - SANMOTION&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-1c510" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2610515&amp;nsku=34R9658&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1c510'));" data-farnell="2610515" data-newark="34R9658" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;p style="margin:0;"&gt;&lt;strong&gt;&lt;span&gt;Stepper Motor Power Step High Torque Bipolar 294 in-oz 2.8 A Two Phase 1.1 ohm 3.8 mH &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;LIN ENGINEERING&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-ad6d9" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2507569&amp;nsku=16M4202&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ad6d9'));" data-farnell="2507569" data-newark="16M4202" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TMCM-1070 -&amp;nbsp; Stepper Motor Driver, 2-Phase, Single Axis, 2.8A, 24V DC Output, USB, RS485, CAN&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TRINAMIC&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-fd94e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2822195&amp;nsku=46AC1955&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('fd94e'));" data-farnell="2822195" data-newark="46AC1955" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;Motor Driver R701 Microstepping Two Phase 12 to 80 Vdc 7 A 560 W 200 kHz &lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;LIN ENGINEERING&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-9330b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2749921&amp;nsku=66K9711&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9330b'));" data-farnell="2749921" data-newark="66K9711" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;A100067 -&amp;nbsp; Development Board, Arduino Mega 2560 Rev3 RETAIL, ATmega2560 MCU, 54 3.3V I/O, 16 Analogue Inputs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ARDUINO&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-1b50e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2830990&amp;nsku=47AC4177&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1b50e'));" data-farnell="2830990" data-newark="47AC4177" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;1141 -&amp;nbsp; Assembled Data Logging Shield For Arduino&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ADAFRUIT&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-9f5d3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2759299&amp;nsku=56W4347&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9f5d3'));" data-farnell="2759299" data-newark="56W4347" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;24-15112 -&amp;nbsp; Wire, PVC, Red, 22 AWG, 100 ft, 30.5 m&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;STELLAR LABS&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-0258d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2819047&amp;nsku=44AC9084&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0258d'));" data-farnell="2819047" data-newark="44AC9084" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;OLED Character Display&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ADAFRUIT&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-c9951" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2218977&amp;nsku=44W3454&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c9951'));" data-farnell="2218977" data-newark="44W3454" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Pushbutton Switch Off(On SPST 125 V 50 V 400 mA Solder &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;APEM&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-7c122" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=1086614&amp;nsku=25H7937&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7c122'));" data-farnell="1086614" data-newark="25H7937" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Incremental Encoder 5 VDC 2 Channels 60 rpm 24 Detents 24 Pulses PEC11R Series &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;BOURNS&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-3f5d2" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=2663523&amp;nsku=53W9525&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3f5d2'));" data-farnell="2663523" data-newark="53W9525" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Hall Effect Proximity Sensor Flange Mount 55100 Series Analogue 4.5 to 5.5 Vdc &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;HAMLIN&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-b14f5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=5052592&amp;nsku=15J7654&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b14f5'));" data-farnell="5052592" data-newark="15J7654" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;AC/DC Enclosed Power Supply(PSU ITE 1 Outputs 200 W 24 V 8.4 A &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TDK-LAMBDA&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;a id="e14-product-link-d5d10" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="link" href="https://referral.element14.com/OrderCodeView?fsku=1995941&amp;nsku=72R3599&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-link" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d5d10'));" data-farnell="1995941" data-newark="72R3599" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;&lt;span style="color:#3334ca;"&gt;Additional Parts:&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table border="1" class="jiveBorder" style="border:1px solid #000000;width:100%;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Product Name&lt;/strong&gt;&lt;/th&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Quantity&lt;br /&gt;&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;p style="margin:0;"&gt;&lt;strong&gt;SCHLEUNIGER CS 9100 “V” STYLE CUTTING AND STRIPPING BLADES&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div class="migration-injected-attachments"&gt;&lt;div style="font-weight:bold;margin:15px 0 5px 0;"&gt;Attachments:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;table style="border:0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span class="_se_attachment" id="attid_https://www.element14.com/community/api/core/v3/attachments/277974"&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-wikis-components-files/00-00-00-03-81/Code.zip"&gt;community.element14.com/.../Code.zip&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: oled, stripper, automatic, arduino_vcp, manufacturing, vcp_arduino, element14 presents, friday_releasedj, wire cutter, adafruit, atmega2560, arduino, arduino_mega, automation, dj harrington, friday_release, e14presents_djharrigan&lt;/div&gt;
</description></item><item><title>Episode 368: Arduino Automatic Wire Cutter and Stripper</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368/revision/1</link><pubDate>Wed, 13 Mar 2019 23:30:47 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:71678c02-048d-4947-82ea-5c18726e785f</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/3977/arduino-automatic-wire-cutter-and-stripper----episode-368#comments</comments><description>Revision 1 posted to Documents by tariq.ahmad on 3/13/2019 11:30:47 PM&lt;br /&gt;
&lt;div style="background:#ffffff;padding:14px 16px 16px 18px;margin:0;vertical-align:top;border:1px solid #dadada;"&gt;&lt;div style="float:left;display:inline-block;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/"&gt;&lt;img alt="image" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px"  /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;span style="font-size:18px;font-weight:bold;"&gt;Automatic Wire Cutter and Stripper&lt;/span&gt;&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/"&gt;element14 Presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3796/vcp-biography-dj"&gt;DJ Harrigan&amp;#39;s VCP Profile&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table style="width:80%;display:block;margin:0 auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-bottom:12px;"&gt;&lt;span&gt;&lt;a href="https://www.youtube.com/watch?v=WVnbbqSEDU0"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p style="margin:0;border:1px solid #b8d7e5;background-color:#e9f6fc;padding:8px;max-width:634px;"&gt;&lt;span style="color:#000000;font-family:&amp;#39;Open Sans&amp;#39;, Arial, sans-serif;text-align:justify;"&gt;Say goodbye to cramped wrists and handheld gadgets for cutting wire and say hello to your new workhorse on the workbench: the A.W.C.S. The “Ox” is an automatic wire cutting and stripping machine meant to take some of the busywork out of building electronic gadgets. Will it succeed? Will it actually save time? Will my wrists be spared from carpal tunnel and tendonitis? Let’s find out!&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;&lt;span style="color:#3334ca;"&gt;Supplemental Content:&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;Adafruit_CharacterOLED.h&amp;gt;
#include &amp;lt;AccelStepper.h&amp;gt;
#include &amp;lt;Bounce2.h&amp;gt;
#include &amp;lt;Encoder.h&amp;gt;




#define ENCODER_DO_NOT_USE_INTERRUPTS
#define PIN_ENABLE_FEED 21
#define PIN_ENC_A 2
#define PIN_ENC_B 3
#define PIN_BUTTON_ENC 4
#define PIN_BUTTON_RED 5
#define PIN_LED 13
#define PIN_SENSOR A0


#define WIRE_QUANT_MIN 1
#define WIRE_QUANT_MAX 100
#define WIRE_MIN_LEN 5
#define WIRE_AWG 22




Adafruit_CharacterOLED lcd(OLED_V2, 6, 7, 8, 9, 10, 11, 12);
AccelStepper stepCut(1, 19, 18); // (DRIVER, STEP, DIR)
AccelStepper stepFeed(1, 15, 14);
Encoder encoder(PIN_ENC_A, PIN_ENC_B);
Bounce buttonOK = Bounce();
Bounce buttonRED = Bounce();




int curSpool = 0; // in future, give each spool a unique id and track total length cut
int curSpoolRemaining = 0;


int mainMode = 0;
int subMode = 0;
int lastSubMode = -99;
int scrollPos = 0;
int lastScrollPos = -99;
long encPos = -999;
long lastEncPos = 0;


long retractPos = -3600;
long stripPos = -1000; //
long stripFeedDistance = 0;
long lengthFeedDistance = 0;
long cutPos = 200; 
long targetPos = 0;
boolean isHomed = false;
int bladeCycleState = 0;
int sensorVal = 0;


uint16_t wireQuantity = 0;
uint16_t wireLength = 0; // in milimeters
uint16_t wireStripLength = 0; 
uint16_t wiresCut = 0;


float conductor_diam = 0.64516; // 22 AWG
float feed_diam = 22.0; // uncalibrated!
float feed_circum = PI * feed_diam; // 69.115mm per rev
//float feed_res = feed_circum / 200.0; // .346mm per step
float feed_res = 0.346;


// Z travel is 1/16&amp;quot; (1.5875mm) per revolution
// both motors are 1.8deg per step (200 per revolution)
// the cut motor driver has a noncofigurable default 10x microstepping rate
// so z resolution = 0.00079375mm per &amp;quot;full&amp;quot; step sent
// leaving us with ~1260 steps per mm z travel


boolean ledState = 0;
long curTime = 0;
long lastTime = 0;
int deltaTime = 100;


void setup(){


  Serial.begin(115200);
  lcd.begin(16, 2);
  lcd.print(&amp;quot;AWCS READY!&amp;quot;);
  stepCut.setPinsInverted(true, true);
  stepFeed.setPinsInverted(true, true);
  stepFeed.setMaxSpeed(2000);
  stepFeed.setAcceleration(6000);
  stepCut.setMaxSpeed(20000);
  stepCut.setAcceleration(40000);
  pinMode(PIN_ENABLE_FEED, OUTPUT);
  pinMode(PIN_BUTTON_ENC, INPUT_PULLUP);
  pinMode(PIN_BUTTON_RED, INPUT_PULLUP);
  pinMode(PIN_LED, OUTPUT);
  buttonOK.attach(PIN_BUTTON_ENC);
  buttonRED.attach(PIN_BUTTON_RED);
  buttonOK.interval(5);
  buttonRED.interval(5);
  
  digitalWrite(PIN_ENABLE_FEED, LOW);
  delay(200);
  digitalWrite(PIN_ENABLE_FEED, HIGH);
  delay(200);
  digitalWrite(PIN_ENABLE_FEED, LOW);
  //setZHOME():
  setBlade(&amp;#39;H&amp;#39;);
  //lcd.clear();
  printMenu();
  printCursor(0);
  subMode = 5;
  setBlade(&amp;#39;R&amp;#39;);
}


void loop(){


  /*curTime = millis(); // VERY BASIC Calibration measurement
  if (curTime - lastTime &amp;gt; deltaTime){
    lastTime = curTime;
     getInput();
    //lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(&amp;quot;POS:   &amp;quot;);
    lcd.setCursor(4, 0);
    lcd.print(scrollPos);
    lcd.setCursor(0, 1);
    lcd.print(&amp;quot;SEN:    &amp;quot;);
    lcd.setCursor(4, 1);
    lcd.print(sensorVal);
    cutPos = 63 * scrollPos;
    stepCut.moveTo(cutPos);
  }
  stepCut.run();*/
  
  getInput();
  
  switch(mainMode){
    
    case 0: // MAIN MENU
        switch(subMode){
          case 0: // choose quantity
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 999)scrollPos = 1;
              if (scrollPos &amp;lt; 1)scrollPos = 999;
              lastScrollPos = scrollPos;
              wireQuantity = scrollPos;
              lcd.setCursor(5, 0);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(5, 0);
              lcd.print(wireQuantity);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 1: // choose length (resolution of 5mm)
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 99)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 99;
              lastScrollPos = scrollPos;
              wireLength = scrollPos * 5;
              lcd.setCursor(13, 0);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(13, 0);
              lcd.print(wireLength);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 2: // choose strip length (default strip both ends)
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 999)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 999;
              lastScrollPos = scrollPos;
              wireStripLength = scrollPos;
              lcd.setCursor(5, 1);
              lcd.print(&amp;quot;   &amp;quot;); // clear
              lcd.setCursor(5, 1);
              lcd.print(wireStripLength);
            }
            if (buttonOK.fell())returnToMenu();
          break;
          case 3: // run
              subMode = 5;
              mainMode = 1; // RUN!
              lcd.clear();
              lcd.home();
              lcd.print(&amp;quot;NOW CUTTING:&amp;quot;);
              printJobStatus();
              setBlade(&amp;#39;R&amp;#39;);
              stepFeed.setCurrentPosition(0);
              stripFeedDistance = 32* round(float(wireStripLength)/feed_res);
              lengthFeedDistance = 32* round((2.0*float(wireStripLength))/feed_res);
              Serial.print(&amp;quot;FEED STEPS: &amp;quot;);Serial.println(stripFeedDistance);
              Serial.print(&amp;quot;FEED DIST: &amp;quot;);Serial.println(lengthFeedDistance);
              
          break;
          case 4: // clear
            resetParameters();
            printMenu();
            returnToMenu();
          
          break;
          case 5: // scrolling
            if( scrollPos != lastScrollPos){
              if (scrollPos &amp;gt; 4)scrollPos = 0;
              if (scrollPos &amp;lt; 0)scrollPos = 4;
              lastScrollPos = scrollPos;
              printCursor(scrollPos);
              }
              if (buttonOK.fell()){
                subMode = scrollPos;
                //delay(200);
            }
          break;
        }
    break;
    
    case 1: // RUN
    
      // loop through quantity, allow mid-job canceling
      switch (bladeCycleState){
        case 0: // initial retract, then feed length of strip
          if (stepCut.distanceToGo() == 0){ // allow the blade to retract
            printJobStatus(); // show wire X of N wires
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(stripFeedDistance); // feed length of strip
          }
        break;
        case 1: // feed, then strip
          if (stepFeed.distanceToGo() == 0){ // allow strip length to fininsh feeding
            bladeCycleState++;
            setBlade(&amp;#39;S&amp;#39;);
          }
        break;
        case 2: // strip, then retract
          if (stepCut.distanceToGo() == 0){ // allow time to strip
            bladeCycleState++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
        case 3: // retract, then feed length of wire
          if (stepCut.distanceToGo() == 0){ // allow retraction
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(lengthFeedDistance);
          }
        break;
        case 4: // feed, then strip
          if (stepFeed.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;S&amp;#39;);
          }
        break;
        case 5: // strip, then retract
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
         case 6: // retract, then feed
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            stepFeed.setCurrentPosition(0);
            stepFeed.moveTo(stripFeedDistance);
          }
        break;
        case 7: // retract, then feed
          if (stepFeed.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState++;
            setBlade(&amp;#39;C&amp;#39;);
          }
        break;
        case 8: // cut, then retract and loop if more wires need to run.
          if (stepCut.distanceToGo() == 0){ // allow feed movement etc.
            bladeCycleState = 0;
            wiresCut++;
            setBlade(&amp;#39;R&amp;#39;);
          }
        break;
      }

      // return to main menu when done or cancel the job
      if (buttonRED.fell() || wiresCut &amp;gt;= wireQuantity){
        mainMode = 0;
        resetParameters();
        subMode = 5;
        returnToMenu();
        printMenu();
        printCursor(0);
      }
    break;
    
  }
  // the motors only really move if there is a remaning position to travel,
  // and this needs to be called often enough that nesting it 
  // inside some other function doesn&amp;#39;t help much, so we&amp;#39;ll just keep the .run() here
  stepFeed.run();
  stepCut.run();
  
  


} // END MAIN LOOP


void printJobStatus(){
   lcd.setCursor(0, 1);
   lcd.print(&amp;quot;WIRE     OF   &amp;quot;);
   lcd.setCursor(5, 1);
   lcd.print(wiresCut+1);
   lcd.setCursor(11, 1);
   lcd.print(wireQuantity);
}


void setBlade(char bladePos){
  switch (bladePos){
    case &amp;#39;H&amp;#39;: // home
      while (!isHomed){
        curTime = millis();
        if (curTime - lastTime &amp;gt; 100){
          lastTime = curTime;
          sensorVal = analogRead(PIN_SENSOR);
          if (sensorVal &amp;lt; 430){
            targetPos += 63;
            stepCut.moveTo(targetPos);
          } else {
            isHomed = true;
            stepCut.setCurrentPosition(0);
          } 
        }
        stepCut.run();
      }
    break;
    case &amp;#39;R&amp;#39;: // retract
      stepCut.moveTo(retractPos);
    break;
    case &amp;#39;S&amp;#39;: // strip
      stepCut.moveTo(stripPos);
    break;
    case &amp;#39;C&amp;#39;: // cut
      stepCut.moveTo(cutPos);
    break;
  }
}


void returnToMenu(){
  scrollPos = subMode;
  subMode = 5;
}


void printCursor(int cursorPos){
  //clear old cursor positions
  lcd.setCursor(0, 0);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(8, 0);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(0, 1);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(8, 1);
  lcd.print(&amp;quot; &amp;quot;);
  lcd.setCursor(12, 1);
  lcd.print(&amp;quot; &amp;quot;);
  switch(cursorPos){
    case 0:
      lcd.setCursor(0, 0);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 1:
      lcd.setCursor(8, 0);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 2:
      lcd.setCursor(0, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 3:
      lcd.setCursor(8, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
    case 4:
      lcd.setCursor(12, 1);
      lcd.print(&amp;quot;&amp;gt;&amp;quot;);
    break;
  }
}


void printMenu(){
  lcd.setCursor(0, 0);
  lcd.print(&amp;quot; QTY:    WRL:   &amp;quot;);
  lcd.setCursor(0, 1);
  lcd.print(&amp;quot; STL:    RUN CLR&amp;quot;);
}


void resetParameters(){
  wireQuantity = 0;
  wireLength = 0;
  wireStripLength = 0;
  wiresCut = 0;
  bladeCycleState = 0;
  stripFeedDistance = 0;
  lengthFeedDistance = 0;
}


void getInput(){
  buttonOK.update();
  buttonRED.update();
  if (buttonOK.fell()){
    ledState = !ledState;
    digitalWrite(PIN_LED, ledState);
  }
  encPos = encoder.read();
  if (abs(encPos - lastEncPos) &amp;gt; 4){ // did the encoder move one detent?
    if (encPos - lastEncPos &amp;gt; 0){ // positive
      scrollPos++;
    } else { // negative
      scrollPos--;
    }
    lastEncPos = encPos;
  }
  sensorVal = analogRead(PIN_SENSOR);
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="display:none;"&gt;&lt;/div&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;&lt;span style="color:#3334ca;"&gt;Bill of Material:&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table border="1" class="jiveBorder" style="border:1px solid #000000;width:100%;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Product Name&lt;/strong&gt;&lt;/th&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Manufacturer&lt;/strong&gt;&lt;/th&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Quantity&lt;br /&gt;&lt;/strong&gt;&lt;/th&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-vuXM3aG9-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2610515,2507569,2822195,2749921,2830990,2759299,2819047,2218977,1086614,2663523,5052592,1995941&amp;amp;nsku=34R9658,16M4202,46AC1955,66K9711,47AC4177,56W4347,44AC9084,44W3454,25H7937,53W9525,15J7654,72R3599&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2610515,2507569,2822195,2749921,2830990,2759299,2819047,2218977,1086614,2663523,5052592,1995941&amp;amp;nsku=34R9658,16M4202,46AC1955,66K9711,47AC4177,56W4347,44AC9084,44W3454,25H7937,53W9525,15J7654,72R3599&amp;amp;COM=noscript" target="_blank"&gt;Buy Kit&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-vuXM3aG9-unlinked"&gt;Buy Kit&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;p style="margin:0;"&gt;&lt;strong&gt;&lt;span&gt;Stepper Motor Bipolar 1 A Two Phase 3.4 ohm 6.5 mH &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;SANYO DENKI - SANMOTION&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-hxdoAPAC-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2610515&amp;amp;nsku=34R9658&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2610515&amp;amp;nsku=34R9658&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-hxdoAPAC-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;p style="margin:0;"&gt;&lt;strong&gt;&lt;span&gt;Stepper Motor Power Step High Torque Bipolar 294 in-oz 2.8 A Two Phase 1.1 ohm 3.8 mH &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;LIN ENGINEERING&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-icGv6XbM-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2507569&amp;amp;nsku=16M4202&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2507569&amp;amp;nsku=16M4202&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-icGv6XbM-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TMCM-1070 -&amp;nbsp; Stepper Motor Driver, 2-Phase, Single Axis, 2.8A, 24V DC Output, USB, RS485, CAN&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TRINAMIC&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-6ek0zBpf-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2822195&amp;amp;nsku=46AC1955&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2822195&amp;amp;nsku=46AC1955&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-6ek0zBpf-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;Motor Driver R701 Microstepping Two Phase 12 to 80 Vdc 7 A 560 W 200 kHz &lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;LIN ENGINEERING&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-AHHhLGKK-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2749921&amp;amp;nsku=66K9711&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2749921&amp;amp;nsku=66K9711&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-AHHhLGKK-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;A100067 -&amp;nbsp; Development Board, Arduino Mega 2560 Rev3 RETAIL, ATmega2560 MCU, 54 3.3V I/O, 16 Analogue Inputs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ARDUINO&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-abUGXJBd-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2830990&amp;amp;nsku=47AC4177&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2830990&amp;amp;nsku=47AC4177&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-abUGXJBd-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;1141 -&amp;nbsp; Assembled Data Logging Shield For Arduino&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ADAFRUIT&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-lBq84sgW-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2759299&amp;amp;nsku=56W4347&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2759299&amp;amp;nsku=56W4347&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-lBq84sgW-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;24-15112 -&amp;nbsp; Wire, PVC, Red, 22 AWG, 100 ft, 30.5 m&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;STELLAR LABS&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-0dxNdzNS-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2819047&amp;amp;nsku=44AC9084&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2819047&amp;amp;nsku=44AC9084&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-0dxNdzNS-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;OLED Character Display&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;ADAFRUIT&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-piQrqbSn-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2218977&amp;amp;nsku=44W3454&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2218977&amp;amp;nsku=44W3454&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-piQrqbSn-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Pushbutton Switch Off(On SPST 125 V 50 V 400 mA Solder &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;APEM&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-MmhC1D94-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=1086614&amp;amp;nsku=25H7937&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=1086614&amp;amp;nsku=25H7937&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-MmhC1D94-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Incremental Encoder 5 VDC 2 Channels 60 rpm 24 Detents 24 Pulses PEC11R Series &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;BOURNS&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-EbUyqxWc-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=2663523&amp;amp;nsku=53W9525&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=2663523&amp;amp;nsku=53W9525&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-EbUyqxWc-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;Hall Effect Proximity Sensor Flange Mount 55100 Series Analogue 4.5 to 5.5 Vdc &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;HAMLIN&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-3rvkjyRy-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=5052592&amp;amp;nsku=15J7654&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=5052592&amp;amp;nsku=15J7654&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-3rvkjyRy-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;AC/DC Enclosed Power Supply(PSU ITE 1 Outputs 200 W 24 V 8.4 A &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;strong&gt;TDK-LAMBDA&lt;/strong&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;span&gt;&lt;span class="e14-init-shown e14-product-link-buynow" id="addProduct-1WZriZTi-linked" style="white-space:nowrap;"&gt;&lt;a class="jive-link-product-addtolist" href="https://www.element14.com/community/view-product.jspa?fsku=1995941&amp;amp;nsku=72R3599&amp;amp;COM=noscript" target="_blank"&gt;&lt;span class="pf-widget-map pf-productlink-cart-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="jive-link-product pf-embedded-product-link" href="https://www.element14.com/community/view-product.jspa?fsku=1995941&amp;amp;nsku=72R3599&amp;amp;COM=noscript" target="_blank"&gt;Buy Now&lt;/a&gt;&lt;/span&gt;&lt;span class="e14-init-hidden" id="addProduct-1WZriZTi-unlinked"&gt;Buy Now&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;&lt;span style="color:#3334ca;"&gt;Additional Parts:&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table border="1" class="jiveBorder" style="border:1px solid #000000;width:100%;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Product Name&lt;/strong&gt;&lt;/th&gt;&lt;th style="border:1px solid black;border:1px solid #000000;padding:2px;color:#ffffff;background-color:#6690bc;text-align:left;" valign="middle"&gt;&lt;strong&gt;Quantity&lt;br /&gt;&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;&lt;p style="margin:0;"&gt;&lt;strong&gt;SCHLEUNIGER CS 9100 “V” STYLE CUTTING AND STRIPPING BLADES&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border:1px solid black;border:1px solid #000000;padding:2px;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div class="migration-injected-attachments"&gt;&lt;div style="font-weight:bold;margin:15px 0 5px 0;"&gt;Attachments:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;table style="border:0;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span class="_se_attachment" id="attid_https://www.element14.com/community/api/core/v3/attachments/277974"&gt;&lt;a href="https://community.element14.com/cfs-file/__key/communityserver-wikis-components-files/00-00-00-03-81/Code.zip"&gt;community.element14.com/.../Code.zip&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: oled, stripper, automatic, arduino_vcp, manufacturing, vcp_arduino, element14 presents, friday_releasedj, wire cutter, adafruit, atmega2560, arduino, arduino_mega, automation, dj harrington, friday_release, e14presents_djharrigan&lt;/div&gt;
</description></item></channel></rss>