| Hardware components | ||||||
|  | 
 | × | 1 | |||
| 
 | × | 1 | ||||
|  | 
 | × | 1 | |||
| Software apps and online services | ||||||
|  | 
 | |||||
| Hand tools and fabrication machines | ||||||
|  | 
 | |||||
I made this machine to measure adhesive and tension of medical tape, according to the procedure of ASTM standard such as:
ASTM D 3654 /D 3654M: 2011 STANDARD TESTMETHODS FOR SHEAR ADHESION OF PRESSURE-SENSITIVE TAPES (2006 R 2011)
BSI ISO 4587 : 2003 2003 ADHESIVESDETERMINATION OF TENSILE LAP-SHEAR STRENGTH OF RIGID-TO-RIGID BONDED ASSEMBLIES(W)
ASTM D 3121 : 2006 (Optional)STANDARD TEST METHODFOR TACK OF PRESSURE-SENSITIVE ADHESIVES BY ROLLING BALL R(1999)
ASTM D 6195 : 2003 STANDARD TESTMETHODS FOR LOOP TACK
ASTM D 1876 : 2008 STANDARD TESTMETHOD FOR PEEL RESISTANCE OF ADHESIVES (T-PEEL TEST)
ASTM D 3330 /D 3330M: 2010 STANDARD TESTMETHOD FORPEEL ADHESION OF PRESSURE-SENSITIVE TAPE
the device is working with 5 phase stepper motor, load cell driver, tft lcd driver, joystick and...
all mechanical part is designed by me and produced by CNC machine.
r// ***In the name of allah***//
//this program is written by Mahdi Hajy Alimohamadi for MATT machin. its inclouded all function for load cell, thermal printer, joystic , TFT LCD//
//date of last freamware  02/2017
#include "Adafruit_Thermal.h"
Adafruit_Thermal printer(&Serial2);
#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>
#include <SD.h>
#include <SPI.h>
#include "HX711.h"
#define calibration_factor -7050.0 
#define SD_CS 10
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
  // Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
 #define DOUT  22
#define CLK  23
HX711 scale(DOUT, CLK);
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
int down= 39;
int up = 38;
int senup = 51;
int senmid = 52;
int sendown = 53;
int joystic = A15;
int bott = 26;
 float kilo = 0;
 float avr =0;
 float maxi=0;
 float sum=0;
 int counter=0;
const int f1 = 50;
const int f2 = 49;
const int f3 = 48;
const int f4 = 47;
const int f5 = 46;
const int f6 = 45;
const int startkey = 44;
const int stopkey = 43;
const int printkey = 42;
const int stor = 41;
const int resetkey = 40;
void setup(void)
{
   Serial2.begin(9600);
//scale.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch
  scale.tare();
 // SDFP540 (0x9341)
  
 tft.begin(0x9341);
  
   pinMode (bott, INPUT_PULLUP);
  pinMode(down, OUTPUT);
  pinMode(up, OUTPUT);
  pinMode(senup, INPUT); 
  pinMode(senmid, INPUT);
  pinMode(sendown, INPUT); 
  pinMode(f1, INPUT_PULLUP); 
  pinMode(f2, INPUT_PULLUP); 
  pinMode(f3, INPUT_PULLUP); 
  pinMode(f4, INPUT_PULLUP); 
  pinMode(f5, INPUT_PULLUP); 
  pinMode(f6, INPUT_PULLUP); 
  pinMode(startkey, INPUT_PULLUP); 
  pinMode(stopkey, INPUT_PULLUP); 
  pinMode(printkey, INPUT_PULLUP); 
  pinMode(resetkey, INPUT_PULLUP); 
  pinMode(stor, INPUT_PULLUP); 
int value = 0;
 /* printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: MANUAL");
  printer.feed(1);
  printer.boldOn();
  printer.println("Ahesive Test : Roller Plate");
  printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
  printer.print("Average Force: ");
  printer.print(avr);
  printer.println("  N");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  N");
printer.feed(1);
  printer.print("Number of samples:");
      printer.println(counter);
  printer.feed(1);
  printer.println("Speed ratio: ");
      printer.println(counter);
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
  */
  
}
//////////////////////////////////////////////////////////////////////////////1inch square
void mili (void){
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println(" 1 Inch Square Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait... ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("The head is going to be set in the     proper position");  
    for(int i=25000; i>1; i--){
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
  delayMicroseconds(200);                       
  digitalWrite(down, LOW);    
  delayMicroseconds(200);  
    }
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("1 Inch Square Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please use a loop of      adhesive tape with length of 25 cm and attach to the moving clamp.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 220);
        tft.println("Press START to start.");  
                       tft.setCursor(10, 250);
        tft.println("Press STOP to cancel.");
while (true){
if (digitalRead (startkey) == LOW){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Test is in progress...");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait to finish the  test.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
    for(int i=2000; i>1; i--){
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
  delay(1);                       
  digitalWrite(down, LOW);    
  delay(1);  
    }
    delay(500);
    scale.tare();    
    for(int j=30; j>1; j--){
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
    for(int i=100; i>1; i--){
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1);  
    }
}
tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finished.");
//tft.setCursor(30, 104);
//tft.setTextColor(WHITE);  tft.setTextSize(2);
//tft.println("Avarege Force:");
//tft.setTextColor(YELLOW);  tft.setTextSize(3);
//tft.setCursor(300,100);
//tft.println(avr);
//tft.setCursor(390, 100);
//tft.println("N");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println("  Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
tft.setCursor(30, 194);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Speed rate:");
tft.setCursor(300, 190);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println("5 mm/s");
tft.setTextColor(CYAN);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To print results press PRINT."); 
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP.");    
        while (1){
if (digitalRead (stopkey) == LOW){
     loop();
}
if (digitalRead (printkey) == LOW){
             tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: AUTOMATIC");
  printer.feed(1);
  printer.boldOn();
  printer.println("Adhesive Test: 1Inch Square Test");
  printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
 // printer.print("Average Force: ");
  //printer.print(avr);
  //printer.println("  N");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
      printer.println(counter);
  printer.feed(1);
  printer.print("Speed ratio: ");
      printer.println("5 mm/s");
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
  loop();
}
}
   
}   
}
}
////////////////////////////////////////////////////////////////////////TERMINATION  
 void terminate (void)  { 
        tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(5, 50);
        tft.println("Test Is Terminated By User");
  tft.setTextColor(WHITE);  tft.setTextSize(2);
       tft.setCursor(5, 150);
        tft.println("To print final result prees PRINT.");
               tft.setCursor(5, 180);
        tft.println("To store final result press STORE.");
                  tft.setTextColor(MAGENTA);  tft.setTextSize(2);
               tft.setCursor(5, 240);
        tft.println("To restart press STOP.");
while (1){
    if (digitalRead (stopkey) == LOW){
     loop();
  }
        delay(1);
}        
}
/////////////////////////////////////////////////////////////////////////////////////////////-180degree
void degree (void){
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println(" 180 Degree Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait... ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("The head is going to be set in the     proper position");  
    for(int i=25000; i>1; i--){
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
  delayMicroseconds(200);                       
  digitalWrite(down, LOW);    
  delayMicroseconds(200);  
    }
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("180 Degree Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please use appropret clamp and attache one side the specimen to the moving clamp and attache other side to plate.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 260);
        tft.println("Press START to start.");  
                       tft.setCursor(10, 290);
        tft.println("Press STOP to cancel.");
while (true){
if (digitalRead (startkey) == LOW){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Test is in progress...");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("please wait to finish te test.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
    scale.tare();    
    for(int j=110; j>1; j--){
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
    for(int i=100; i>1; i--){
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1);  
    }
}
tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finshed.");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Avarege Force:");
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(300,100);
tft.println(avr);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 100);
tft.println(" Newton");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println(" Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
tft.setCursor(30, 194);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Speed rate:");
tft.setCursor(300, 190);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println("5 mm/s");
tft.setTextColor(CYAN);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To print results press PRINT."); 
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP.");    
        while (1){
if (digitalRead (stopkey) == LOW){
     loop();
}
if (digitalRead (printkey) == LOW){
             tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: AUTOMATIC");
  printer.feed(1);
  printer.boldOn();
  printer.println("Adhesive Test: 180 degree");
  printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
  printer.print("Average Force: ");
  printer.print(avr);
  printer.println("  Newton");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
      printer.println(counter);
  printer.feed(1);
  printer.print("Speed ratio: ");
      printer.println("5 mm/s");
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
  loop();
}
}
}
}}  
/////////////////////////////////////////////////////////alarm
void alarm (void){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(5, 50);
        tft.println("ALARM!");
  tft.setTextColor(WHITE);  tft.setTextSize(2);
       tft.setCursor(5, 150);
        tft.println("The force is raeched limit       (>40 N)");
               tft.setCursor(5, 180);
        tft.println("Please remove tape ad restart test.");
                  tft.setTextColor(MAGENTA);  tft.setTextSize(2);
               tft.setCursor(5, 240);
        tft.println("To restart press STOP.");
        while(true){
          if (digitalRead (stopkey) == LOW){
terminate();
  
}}}
 ////////////////////////////////////////////////////////////////////////////////////////////////////////MAIN LOOP
void loop(void)
{
//////////////////////////////////////////////////////////////////////////////////////////////////////////Initialaizing  
kilo=0;
maxi=0;
sum=0;
avr=0;
counter=0;
  /////////logo
  tft.setRotation(3);
    tft.fillScreen(WHITE);
    tft.fillScreen(MAGENTA);
    tft.fillScreen(WHITE);
    tft.setTextColor(BLUE);
    tft.setTextSize(7); 
      tft.setCursor(100, 50);
  tft.println("M A T T");
    tft.setTextColor(CYAN);  tft.setTextSize(3); 
      tft.setCursor(5, 150);
  tft.println("Medical Adhesive Tape Test");  
      tft.setTextColor(BLACK);  tft.setTextSize(2); 
      tft.setCursor(20, 230);
  tft.println("Designed and Developed by DNP co."); 
        tft.setCursor(20, 260);
  tft.println("www.DNP-CO.ir"); 
        tft.setCursor(20, 290);
  tft.println("Tel: +98-912 522 1037"); 
  delay(5000); 
///////////////////////
      tft.fillScreen(BLACK);
    tft.setTextColor(WHITE);  tft.setTextSize(1);
  tft.setCursor(10, 10);
  tft.println("Version. 2.6 Sep 2017");
  tft.setTextColor(WHITE);  tft.setTextSize(3);
  tft.setCursor(100, 50);
  tft.println("Initializing...");
  tft.setTextColor(YELLOW);  tft.setTextSize(2);
    tft.setCursor(30, 100);
  tft.println("Self Test:");
    tft.setCursor(30, 120);
  tft.println("Limit Sensors, Motor, ROM, Loadcell ");
    tft.setTextColor(WHITE);  tft.setTextSize(2);
      tft.setCursor(150, 150);
  tft.println("Please wait...");
  
      tft.setTextColor(WHITE);  tft.setTextSize(2);
      tft.setCursor(10, 290);
 tft.println("www.DNP-CO.ir              09125221037");
for (int n=3; n>0; n--){
        tft.setTextColor(YELLOW);  tft.setTextSize(2);
       tft.setCursor(210, 220);  
   tft.println(n);
//    tft.setCursor(210, 240); 
       //   tft.println(kilo);
     delay(1000);
      tft.setTextColor(BLACK);  tft.setTextSize(2);
       tft.setCursor(210, 220);  
   tft.println(n);
    //   tft.setCursor(210, 240); 
    //      tft.println(kilo);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////Auto Position
tft.fillScreen(BLACK);
        tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(50, 50);
         tft.println("Auto Set Postition...");
        tft.setTextColor(WHITE);  tft.setTextSize(2);
       tft.setCursor(5, 100);
         tft.println("Please wait while the haed is going to    be set in the zero position.");
               tft.setTextColor(WHITE);  tft.setTextSize(2);
      tft.setCursor(10, 270);
  tft.println("www.DNP-CO.ir              09125221037");
  while (true) 
  {
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delayMicroseconds(200);                       
  digitalWrite(up, LOW);    
  delayMicroseconds(200); 
      if (digitalRead(senup)== HIGH){
        delay(10);
        if(digitalRead(senup)==HIGH){
      break;
        }
    }  
  }
    
  for (int m=200; m>0; m--){
     digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
delayMicroseconds(200);
digitalWrite(down, LOW);    
delayMicroseconds(200);
  
  }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////Manual / Auto  selection
   tft.fillScreen(BLACK);
        tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
         tft.println("Please select Test Mode: ");
                 tft.setTextColor(WHITE);  tft.setTextSize(3);
         tft.setCursor(5, 130);
 tft.println("For Manual press 1.");
          tft.setCursor(5, 180);
 tft.println("For Auto press 2");
  while (1){
  if (digitalRead(f1) == LOW){
manualmode();
  }
if (digitalRead(f2) == LOW){
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Please select the type of test");
tft.setTextColor(WHITE);  tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("For Tension Test press F1.");  
                       tft.setCursor(10, 230);
        tft.println("For Adhesive Test press F2.");
  while (1){
  if (digitalRead(f1) == LOW){
tension();
  }
    if (digitalRead(f2) == LOW){
      
       tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Adhesie test selection:");
tft.setTextColor(WHITE);  tft.setTextSize(2);
              tft.setCursor(10, 150);
        tft.println("Roller Plate = F1");  
                       tft.setCursor(10, 180);
        tft.println("1 Inch Square= F2.");
tft.setCursor(10, 210);
        tft.println("180 degree test = F3.");
        tft.setTextColor(MAGENTA);
 tft.setCursor(10, 270);
        tft.println("To cancel press STOP.");       
while (true){
    if (digitalRead(f1) == LOW){
      rollerplate();
      
    }
        if (digitalRead(f2) == LOW){
mili();
    }
        if (digitalRead(f3) == LOW){
degree();
}
        if (digitalRead(stopkey) == LOW){
terminate();
}
}
}
}  
}
}
tft.fillScreen(BLACK);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////TENSION
  void tension (void){
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Tension test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait... ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("The head is going to be set in the       proper position.");  
  while (digitalRead(sendown) == LOW) 
  {
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
delayMicroseconds(200);
digitalWrite(down, LOW);    
delayMicroseconds(200);
}
    for (int m=1000; m>0; m--){
     digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
delayMicroseconds(200);
digitalWrite(up, LOW);    
delayMicroseconds(200);
  
  }
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Tension test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please attache appropriateclamp according to the    width of tape.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("Press START to start.");  
                       tft.setCursor(10, 230);
        tft.println("Press STOP to cancel.");
while (true){
    if (digitalRead (startkey) == LOW){
     break;}
    if (digitalRead (stopkey) == LOW){
terminate();} 
  
}
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Test is in progress...");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("please wait to finish the test.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("Press STOP to cancel.");
    scale.tare();  
    for (int i=0; i<1000 ; i++){
  if (digitalRead(senmid)== HIGH)break;
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1);  
  }  
 while (digitalRead(senmid) == LOW) 
  {
    
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
if (digitalRead (stopkey) == LOW){
//.......................................................................................................................................................................................
terminate();}
for (int i=0; i<500 ; i++){
  if (digitalRead(senmid)== HIGH)break;
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1);  
  }
  if(kilo < avr)break;
  } 
////////////////////////result show
tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finshed.");
//tft.setCursor(30, 104);
//tft.setTextColor(WHITE);  tft.setTextSize(2);
//tft.println("Avarege Force:");
//tft.setTextColor(YELLOW);  tft.setTextSize(2);
//tft.setCursor(300,100);
//tft.println(avr);
//tft.setCursor(390, 100);
//tft.println("Newton");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(YELLOW);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println(" Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
tft.setCursor(30, 194);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Speed rate:");
tft.setCursor(300, 190);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println("5 mm/s");
tft.setTextColor(CYAN);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To print results press PRINT."); 
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP.");    
        while (1){
if (digitalRead (stopkey) == LOW){
     loop();
}
if (digitalRead (printkey) == LOW){
        tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: AUTOMATIC");
  printer.feed(1);
  printer.boldOn();
  printer.println("Tension Test");
  printer.boldOff();
  printer.feed(3);
 // printer.setSize('S');
 // printer.print("Average Force: ");
 // printer.print(avr);
 // printer.println("  N");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
      printer.println(counter);
  printer.feed(1);
  printer.print("Speed ratio: ");
      printer.println("5 mm/s");
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
  loop();
}
} /////////////////////////////////////
  }
 ////////////////////////////////////////////////////////////////////////////////ROLLER PLATE
void rollerplate (void){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Roller Plate Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait... ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("The head is going to be set in the       proper position");  
  while (digitalRead(sendown) == LOW) 
  {
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
delayMicroseconds(200);
digitalWrite(down, LOW);    
delayMicroseconds(200);
}
      for (int m=500; m>0; m--){
     digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
delayMicroseconds(200);
digitalWrite(up, LOW);    
delayMicroseconds(200);
  
  }
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Tension test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 105);
        tft.println("Please attache             Roller Plate. ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("Press START to start.");  
                       tft.setCursor(10, 230);
        tft.println("Press STOP to cancel.");
while (true){
if (digitalRead (startkey) == LOW){
break;
  }
  if (digitalRead (stopkey) == LOW){
terminate();
  }
}
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Test is in progress...");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait to finish the test.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("Press STOP to cancel.");
   scale.tare();   
         
 while (digitalRead(senmid) == LOW) 
  {
    while (digitalRead(senmid) == LOW) {
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
for (int i=0; i<100 ; i++){
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1); 
  digitalWrite (stopkey, HIGH);
  int key =0;
  key = digitalRead (stopkey);
   if (key == LOW) {
  terminate(); }
  }}
  }
      for (int m=500; m>0; m--){
     digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
  delay(1);                       
  digitalWrite(down, LOW);    
  delay(1);  
  
  }
  
   tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finshed.");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Avarege Force:");
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(300,100);
tft.println(avr);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 100);
tft.println(" Newton");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println(" Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
tft.setCursor(30, 194);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Speed rate:");
tft.setCursor(300, 190);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println("5 mm/s");
tft.setTextColor(CYAN);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To print results press PRINT."); 
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP.");     
        while (1){
if (digitalRead (stopkey) == LOW){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(4);
tft.setCursor(5, 50);
tft.println("WARRNING!!!");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(3);
tft.println("Remove plate's cable      from the head.");
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP."); 
while(true){
if (digitalRead (stopkey) == LOW){
     loop();}}
}
if (digitalRead (printkey) == LOW){
             tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: AUTOMATIC");
  printer.feed(1);
  printer.boldOn();
  printer.println("Adhesive Test: Roller Plate");
  printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
  printer.print("Average Force: ");
  printer.print(avr);
  printer.println("  Newton");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
      printer.println(counter);
  printer.feed(1);
  printer.print("Speed ratio: ");
      printer.println("5 mm/s");
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
     tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(4);
tft.setCursor(5, 50);
tft.println("WARRNING!!!");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(3);
tft.println("Remove plate's cable      from the head.");
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP."); 
while(true){
if (digitalRead (stopkey) == LOW){
  loop();}}
}
}    
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////MANUAL MODE
 void manualmode (void)
 {
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Manual Mode is selected");
tft.setTextColor(WHITE);  tft.setTextSize(2);
       tft.setCursor(10, 150);
        tft.println("Press START to continiu.");
               tft.setCursor(10, 200);
        tft.println("Press STOP to cancel.");
         while (1){
    if (digitalRead (startkey) == LOW){
    goto manual;
  }
    if (digitalRead (stopkey) == LOW){
  terminate();
  }
  }
    manual:  
  /////////////////////////////////////////////////////////////////////////////////////////////////////////joystick
  kilo=0;
  maxi=0;
  counter=0;
  avr=0;
maxi=0;
sum=0;
int value =0;
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(2);
       tft.setCursor(5, 50);
        tft.println("Use Joystick to move head up and down.");  
               tft.setCursor(5, 100);
        tft.println(""); 
                       tft.setCursor(5, 150);
        tft.println("To finish test press STOP.");   
    tft.setTextColor(WHITE);  tft.setTextSize(4);
scale.tare();  
while(true)
 {
 delay(500);
  value = analogRead(joystic);
    value = value/100; 
    if (digitalRead (stopkey) == LOW){
     break;
    }/*//////
      kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
    *///////
   while (value>7){
for(int i=200; i>1; i--){
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
delayMicroseconds(700);
digitalWrite(up, LOW);    
delayMicroseconds(700);
}
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
  value = analogRead(joystic);
    value = value/100; 
  }
  while( value<3){
     digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
delayMicroseconds(200);
digitalWrite(down, LOW);    
delayMicroseconds(200);
value = analogRead(joystic);
    value = value/100;
  }
}
tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finshed.");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Avarege Force:");
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(300,100);
tft.println(avr);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 100);
tft.println(" Newton");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println(" Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
     
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To restart press STOP.");     
        while (1){
if (digitalRead (stopkey) == LOW){
    goto manual;
}
if (digitalRead (resetkey) == LOW){
    loop();
}
if (digitalRead (printkey) == LOW){
             tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: MANUAL");
  printer.feed(1);
  printer.boldOn();
  printer.println("Tension Test");
   printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
  printer.print("Average Force: ");
  printer.print(avr);
  printer.println("  Newton");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
  
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
  goto manual;
}
}  
 } 
r// ***In the name of allah***//
//this program is written by Mahdi Hajy Alimohamadi for MATT machin. its inclouded all function for load cell, thermal printer, joystic , TFT LCD//
//date of last freamware  02/2017
#include "Adafruit_Thermal.h"
Adafruit_Thermal printer(&Serial2);
#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>
#include <SD.h>
#include <SPI.h>
#include "HX711.h"
#define calibration_factor -7050.0 
#define SD_CS 10
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
  // Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
 #define DOUT  22
#define CLK  23
HX711 scale(DOUT, CLK);
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
int down= 39;
int up = 38;
int senup = 51;
int senmid = 52;
int sendown = 53;
int joystic = A15;
int bott = 26;
 float kilo = 0;
 float avr =0;
 float maxi=0;
 float sum=0;
 int counter=0;
const int f1 = 50;
const int f2 = 49;
const int f3 = 48;
const int f4 = 47;
const int f5 = 46;
const int f6 = 45;
const int startkey = 44;
const int stopkey = 43;
const int printkey = 42;
const int stor = 41;
const int resetkey = 40;
void setup(void)
{
   Serial2.begin(9600);
//scale.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch
  scale.tare();
 // SDFP540 (0x9341)
  
 tft.begin(0x9341);
  
   pinMode (bott, INPUT_PULLUP);
  pinMode(down, OUTPUT);
  pinMode(up, OUTPUT);
  pinMode(senup, INPUT); 
  pinMode(senmid, INPUT);
  pinMode(sendown, INPUT); 
  pinMode(f1, INPUT_PULLUP); 
  pinMode(f2, INPUT_PULLUP); 
  pinMode(f3, INPUT_PULLUP); 
  pinMode(f4, INPUT_PULLUP); 
  pinMode(f5, INPUT_PULLUP); 
  pinMode(f6, INPUT_PULLUP); 
  pinMode(startkey, INPUT_PULLUP); 
  pinMode(stopkey, INPUT_PULLUP); 
  pinMode(printkey, INPUT_PULLUP); 
  pinMode(resetkey, INPUT_PULLUP); 
  pinMode(stor, INPUT_PULLUP); 
int value = 0;
 /* printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: MANUAL");
  printer.feed(1);
  printer.boldOn();
  printer.println("Ahesive Test : Roller Plate");
  printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
  printer.print("Average Force: ");
  printer.print(avr);
  printer.println("  N");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  N");
printer.feed(1);
  printer.print("Number of samples:");
      printer.println(counter);
  printer.feed(1);
  printer.println("Speed ratio: ");
      printer.println(counter);
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
  */
  
}
//////////////////////////////////////////////////////////////////////////////1inch square
void mili (void){
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println(" 1 Inch Square Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait... ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("The head is going to be set in the     proper position");  
    for(int i=25000; i>1; i--){
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
  delayMicroseconds(200);                       
  digitalWrite(down, LOW);    
  delayMicroseconds(200);  
    }
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("1 Inch Square Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please use a loop of      adhesive tape with length of 25 cm and attach to the moving clamp.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 220);
        tft.println("Press START to start.");  
                       tft.setCursor(10, 250);
        tft.println("Press STOP to cancel.");
while (true){
if (digitalRead (startkey) == LOW){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Test is in progress...");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait to finish the  test.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
    for(int i=2000; i>1; i--){
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
  delay(1);                       
  digitalWrite(down, LOW);    
  delay(1);  
    }
    delay(500);
    scale.tare();    
    for(int j=30; j>1; j--){
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
    for(int i=100; i>1; i--){
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1);  
    }
}
tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finished.");
//tft.setCursor(30, 104);
//tft.setTextColor(WHITE);  tft.setTextSize(2);
//tft.println("Avarege Force:");
//tft.setTextColor(YELLOW);  tft.setTextSize(3);
//tft.setCursor(300,100);
//tft.println(avr);
//tft.setCursor(390, 100);
//tft.println("N");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println("  Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
tft.setCursor(30, 194);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Speed rate:");
tft.setCursor(300, 190);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println("5 mm/s");
tft.setTextColor(CYAN);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To print results press PRINT."); 
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP.");    
        while (1){
if (digitalRead (stopkey) == LOW){
     loop();
}
if (digitalRead (printkey) == LOW){
             tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: AUTOMATIC");
  printer.feed(1);
  printer.boldOn();
  printer.println("Adhesive Test: 1Inch Square Test");
  printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
 // printer.print("Average Force: ");
  //printer.print(avr);
  //printer.println("  N");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
      printer.println(counter);
  printer.feed(1);
  printer.print("Speed ratio: ");
      printer.println("5 mm/s");
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
  loop();
}
}
   
}   
}
}
////////////////////////////////////////////////////////////////////////TERMINATION  
 void terminate (void)  { 
        tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(5, 50);
        tft.println("Test Is Terminated By User");
  tft.setTextColor(WHITE);  tft.setTextSize(2);
       tft.setCursor(5, 150);
        tft.println("To print final result prees PRINT.");
               tft.setCursor(5, 180);
        tft.println("To store final result press STORE.");
                  tft.setTextColor(MAGENTA);  tft.setTextSize(2);
               tft.setCursor(5, 240);
        tft.println("To restart press STOP.");
while (1){
    if (digitalRead (stopkey) == LOW){
     loop();
  }
        delay(1);
}        
}
/////////////////////////////////////////////////////////////////////////////////////////////-180degree
void degree (void){
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println(" 180 Degree Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait... ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("The head is going to be set in the     proper position");  
    for(int i=25000; i>1; i--){
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
  delayMicroseconds(200);                       
  digitalWrite(down, LOW);    
  delayMicroseconds(200);  
    }
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("180 Degree Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please use appropret clamp and attache one side the specimen to the moving clamp and attache other side to plate.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 260);
        tft.println("Press START to start.");  
                       tft.setCursor(10, 290);
        tft.println("Press STOP to cancel.");
while (true){
if (digitalRead (startkey) == LOW){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Test is in progress...");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("please wait to finish te test.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
    scale.tare();    
    for(int j=110; j>1; j--){
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
    for(int i=100; i>1; i--){
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1);  
    }
}
tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finshed.");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Avarege Force:");
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(300,100);
tft.println(avr);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 100);
tft.println(" Newton");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println(" Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
tft.setCursor(30, 194);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Speed rate:");
tft.setCursor(300, 190);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println("5 mm/s");
tft.setTextColor(CYAN);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To print results press PRINT."); 
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP.");    
        while (1){
if (digitalRead (stopkey) == LOW){
     loop();
}
if (digitalRead (printkey) == LOW){
             tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: AUTOMATIC");
  printer.feed(1);
  printer.boldOn();
  printer.println("Adhesive Test: 180 degree");
  printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
  printer.print("Average Force: ");
  printer.print(avr);
  printer.println("  Newton");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
      printer.println(counter);
  printer.feed(1);
  printer.print("Speed ratio: ");
      printer.println("5 mm/s");
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
  loop();
}
}
}
}}  
/////////////////////////////////////////////////////////alarm
void alarm (void){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(5, 50);
        tft.println("ALARM!");
  tft.setTextColor(WHITE);  tft.setTextSize(2);
       tft.setCursor(5, 150);
        tft.println("The force is raeched limit       (>40 N)");
               tft.setCursor(5, 180);
        tft.println("Please remove tape ad restart test.");
                  tft.setTextColor(MAGENTA);  tft.setTextSize(2);
               tft.setCursor(5, 240);
        tft.println("To restart press STOP.");
        while(true){
          if (digitalRead (stopkey) == LOW){
terminate();
  
}}}
 ////////////////////////////////////////////////////////////////////////////////////////////////////////MAIN LOOP
void loop(void)
{
//////////////////////////////////////////////////////////////////////////////////////////////////////////Initialaizing  
kilo=0;
maxi=0;
sum=0;
avr=0;
counter=0;
  /////////logo
  tft.setRotation(3);
    tft.fillScreen(WHITE);
    tft.fillScreen(MAGENTA);
    tft.fillScreen(WHITE);
    tft.setTextColor(BLUE);
    tft.setTextSize(7); 
      tft.setCursor(100, 50);
  tft.println("M A T T");
    tft.setTextColor(CYAN);  tft.setTextSize(3); 
      tft.setCursor(5, 150);
  tft.println("Medical Adhesive Tape Test");  
      tft.setTextColor(BLACK);  tft.setTextSize(2); 
      tft.setCursor(20, 230);
  tft.println("Designed and Developed by DNP co."); 
        tft.setCursor(20, 260);
  tft.println("www.DNP-CO.ir"); 
        tft.setCursor(20, 290);
  tft.println("Tel: +98-912 522 1037"); 
  delay(5000); 
///////////////////////
      tft.fillScreen(BLACK);
    tft.setTextColor(WHITE);  tft.setTextSize(1);
  tft.setCursor(10, 10);
  tft.println("Version. 2.6 Sep 2017");
  tft.setTextColor(WHITE);  tft.setTextSize(3);
  tft.setCursor(100, 50);
  tft.println("Initializing...");
  tft.setTextColor(YELLOW);  tft.setTextSize(2);
    tft.setCursor(30, 100);
  tft.println("Self Test:");
    tft.setCursor(30, 120);
  tft.println("Limit Sensors, Motor, ROM, Loadcell ");
    tft.setTextColor(WHITE);  tft.setTextSize(2);
      tft.setCursor(150, 150);
  tft.println("Please wait...");
  
      tft.setTextColor(WHITE);  tft.setTextSize(2);
      tft.setCursor(10, 290);
 tft.println("www.DNP-CO.ir              09125221037");
for (int n=3; n>0; n--){
        tft.setTextColor(YELLOW);  tft.setTextSize(2);
       tft.setCursor(210, 220);  
   tft.println(n);
//    tft.setCursor(210, 240); 
       //   tft.println(kilo);
     delay(1000);
      tft.setTextColor(BLACK);  tft.setTextSize(2);
       tft.setCursor(210, 220);  
   tft.println(n);
    //   tft.setCursor(210, 240); 
    //      tft.println(kilo);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////Auto Position
tft.fillScreen(BLACK);
        tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(50, 50);
         tft.println("Auto Set Postition...");
        tft.setTextColor(WHITE);  tft.setTextSize(2);
       tft.setCursor(5, 100);
         tft.println("Please wait while the haed is going to    be set in the zero position.");
               tft.setTextColor(WHITE);  tft.setTextSize(2);
      tft.setCursor(10, 270);
  tft.println("www.DNP-CO.ir              09125221037");
  while (true) 
  {
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delayMicroseconds(200);                       
  digitalWrite(up, LOW);    
  delayMicroseconds(200); 
      if (digitalRead(senup)== HIGH){
        delay(10);
        if(digitalRead(senup)==HIGH){
      break;
        }
    }  
  }
    
  for (int m=200; m>0; m--){
     digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
delayMicroseconds(200);
digitalWrite(down, LOW);    
delayMicroseconds(200);
  
  }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////Manual / Auto  selection
   tft.fillScreen(BLACK);
        tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
         tft.println("Please select Test Mode: ");
                 tft.setTextColor(WHITE);  tft.setTextSize(3);
         tft.setCursor(5, 130);
 tft.println("For Manual press 1.");
          tft.setCursor(5, 180);
 tft.println("For Auto press 2");
  while (1){
  if (digitalRead(f1) == LOW){
manualmode();
  }
if (digitalRead(f2) == LOW){
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Please select the type of test");
tft.setTextColor(WHITE);  tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("For Tension Test press F1.");  
                       tft.setCursor(10, 230);
        tft.println("For Adhesive Test press F2.");
  while (1){
  if (digitalRead(f1) == LOW){
tension();
  }
    if (digitalRead(f2) == LOW){
      
       tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Adhesie test selection:");
tft.setTextColor(WHITE);  tft.setTextSize(2);
              tft.setCursor(10, 150);
        tft.println("Roller Plate = F1");  
                       tft.setCursor(10, 180);
        tft.println("1 Inch Square= F2.");
tft.setCursor(10, 210);
        tft.println("180 degree test = F3.");
        tft.setTextColor(MAGENTA);
 tft.setCursor(10, 270);
        tft.println("To cancel press STOP.");       
while (true){
    if (digitalRead(f1) == LOW){
      rollerplate();
      
    }
        if (digitalRead(f2) == LOW){
mili();
    }
        if (digitalRead(f3) == LOW){
degree();
}
        if (digitalRead(stopkey) == LOW){
terminate();
}
}
}
}  
}
}
tft.fillScreen(BLACK);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////TENSION
  void tension (void){
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Tension test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait... ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("The head is going to be set in the       proper position.");  
  while (digitalRead(sendown) == LOW) 
  {
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
delayMicroseconds(200);
digitalWrite(down, LOW);    
delayMicroseconds(200);
}
    for (int m=1000; m>0; m--){
     digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
delayMicroseconds(200);
digitalWrite(up, LOW);    
delayMicroseconds(200);
  
  }
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Tension test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please attache appropriateclamp according to the    width of tape.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("Press START to start.");  
                       tft.setCursor(10, 230);
        tft.println("Press STOP to cancel.");
while (true){
    if (digitalRead (startkey) == LOW){
     break;}
    if (digitalRead (stopkey) == LOW){
terminate();} 
  
}
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Test is in progress...");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("please wait to finish the test.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("Press STOP to cancel.");
    scale.tare();  
    for (int i=0; i<1000 ; i++){
  if (digitalRead(senmid)== HIGH)break;
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1);  
  }  
 while (digitalRead(senmid) == LOW) 
  {
    
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
if (digitalRead (stopkey) == LOW){
//.......................................................................................................................................................................................
terminate();}
for (int i=0; i<500 ; i++){
  if (digitalRead(senmid)== HIGH)break;
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1);  
  }
  if(kilo < avr)break;
  } 
////////////////////////result show
tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finshed.");
//tft.setCursor(30, 104);
//tft.setTextColor(WHITE);  tft.setTextSize(2);
//tft.println("Avarege Force:");
//tft.setTextColor(YELLOW);  tft.setTextSize(2);
//tft.setCursor(300,100);
//tft.println(avr);
//tft.setCursor(390, 100);
//tft.println("Newton");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(YELLOW);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println(" Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
tft.setCursor(30, 194);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Speed rate:");
tft.setCursor(300, 190);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println("5 mm/s");
tft.setTextColor(CYAN);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To print results press PRINT."); 
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP.");    
        while (1){
if (digitalRead (stopkey) == LOW){
     loop();
}
if (digitalRead (printkey) == LOW){
        tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: AUTOMATIC");
  printer.feed(1);
  printer.boldOn();
  printer.println("Tension Test");
  printer.boldOff();
  printer.feed(3);
 // printer.setSize('S');
 // printer.print("Average Force: ");
 // printer.print(avr);
 // printer.println("  N");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
      printer.println(counter);
  printer.feed(1);
  printer.print("Speed ratio: ");
      printer.println("5 mm/s");
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
  loop();
}
} /////////////////////////////////////
  }
 ////////////////////////////////////////////////////////////////////////////////ROLLER PLATE
void rollerplate (void){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Roller Plate Test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait... ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("The head is going to be set in the       proper position");  
  while (digitalRead(sendown) == LOW) 
  {
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
delayMicroseconds(200);
digitalWrite(down, LOW);    
delayMicroseconds(200);
}
      for (int m=500; m>0; m--){
     digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
delayMicroseconds(200);
digitalWrite(up, LOW);    
delayMicroseconds(200);
  
  }
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Tension test.");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 105);
        tft.println("Please attache             Roller Plate. ");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("Press START to start.");  
                       tft.setCursor(10, 230);
        tft.println("Press STOP to cancel.");
while (true){
if (digitalRead (startkey) == LOW){
break;
  }
  if (digitalRead (stopkey) == LOW){
terminate();
  }
}
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Test is in progress...");
tft.setTextColor(MAGENTA); 
tft.setTextSize(3);
       tft.setCursor(10, 100);
        tft.println("Please wait to finish the test.");
        tft.setTextColor(WHITE); tft.setTextSize(2);
               tft.setCursor(10, 200);
        tft.println("Press STOP to cancel.");
   scale.tare();   
         
 while (digitalRead(senmid) == LOW) 
  {
    while (digitalRead(senmid) == LOW) {
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
for (int i=0; i<100 ; i++){
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
  delay(1);                       
  digitalWrite(up, LOW);    
  delay(1); 
  digitalWrite (stopkey, HIGH);
  int key =0;
  key = digitalRead (stopkey);
   if (key == LOW) {
  terminate(); }
  }}
  }
      for (int m=500; m>0; m--){
     digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
  delay(1);                       
  digitalWrite(down, LOW);    
  delay(1);  
  
  }
  
   tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finshed.");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Avarege Force:");
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(300,100);
tft.println(avr);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 100);
tft.println(" Newton");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println(" Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
tft.setCursor(30, 194);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Speed rate:");
tft.setCursor(300, 190);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println("5 mm/s");
tft.setTextColor(CYAN);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To print results press PRINT."); 
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP.");     
        while (1){
if (digitalRead (stopkey) == LOW){
  tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(4);
tft.setCursor(5, 50);
tft.println("WARRNING!!!");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(3);
tft.println("Remove plate's cable      from the head.");
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP."); 
while(true){
if (digitalRead (stopkey) == LOW){
     loop();}}
}
if (digitalRead (printkey) == LOW){
             tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: AUTOMATIC");
  printer.feed(1);
  printer.boldOn();
  printer.println("Adhesive Test: Roller Plate");
  printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
  printer.print("Average Force: ");
  printer.print(avr);
  printer.println("  Newton");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
      printer.println(counter);
  printer.feed(1);
  printer.print("Speed ratio: ");
      printer.println("5 mm/s");
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
     tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(4);
tft.setCursor(5, 50);
tft.println("WARRNING!!!");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(3);
tft.println("Remove plate's cable      from the head.");
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 290);
tft.println("To restart press STOP."); 
while(true){
if (digitalRead (stopkey) == LOW){
  loop();}}
}
}    
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////MANUAL MODE
 void manualmode (void)
 {
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
       tft.setCursor(20, 50);
        tft.println("Manual Mode is selected");
tft.setTextColor(WHITE);  tft.setTextSize(2);
       tft.setCursor(10, 150);
        tft.println("Press START to continiu.");
               tft.setCursor(10, 200);
        tft.println("Press STOP to cancel.");
         while (1){
    if (digitalRead (startkey) == LOW){
    goto manual;
  }
    if (digitalRead (stopkey) == LOW){
  terminate();
  }
  }
    manual:  
  /////////////////////////////////////////////////////////////////////////////////////////////////////////joystick
  kilo=0;
  maxi=0;
  counter=0;
  avr=0;
maxi=0;
sum=0;
int value =0;
 tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(2);
       tft.setCursor(5, 50);
        tft.println("Use Joystick to move head up and down.");  
               tft.setCursor(5, 100);
        tft.println(""); 
                       tft.setCursor(5, 150);
        tft.println("To finish test press STOP.");   
    tft.setTextColor(WHITE);  tft.setTextSize(4);
scale.tare();  
while(true)
 {
 delay(500);
  value = analogRead(joystic);
    value = value/100; 
    if (digitalRead (stopkey) == LOW){
     break;
    }/*//////
      kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
    *///////
   while (value>7){
for(int i=200; i>1; i--){
  digitalWrite(down, HIGH);
  digitalWrite(up, HIGH);   
delayMicroseconds(700);
digitalWrite(up, LOW);    
delayMicroseconds(700);
}
  kilo =  scale.get_units(); 
  kilo=kilo/10000;
  kilo=kilo*1.15;
counter ++;
if (kilo > 70) alarm();
sum = sum+kilo;
avr = sum/counter;
if (kilo>maxi) maxi=kilo;
  value = analogRead(joystic);
    value = value/100; 
  }
  while( value<3){
     digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);   
delayMicroseconds(200);
digitalWrite(down, LOW);    
delayMicroseconds(200);
value = analogRead(joystic);
    value = value/100;
  }
}
tft.setRotation(3);
tft.fillScreen(BLACK);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(5, 50);
tft.println("Test Is Finshed.");
tft.setCursor(30, 104);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Avarege Force:");
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.setCursor(300,100);
tft.println(avr);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 100);
tft.println(" Newton");
tft.setCursor(30, 134);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Maximum Force:");
tft.setCursor(300, 130);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(maxi);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.setCursor(390, 130);
tft.println(" Newton");
tft.setCursor(30, 164);
tft.setTextColor(WHITE);  tft.setTextSize(2);
tft.println("Number of samples:");
tft.setCursor(300, 160);
tft.setTextColor(YELLOW);  tft.setTextSize(3);
tft.println(counter);         
     
tft.setTextColor(MAGENTA);  tft.setTextSize(2);
tft.setCursor(5, 260);
tft.println("To restart press STOP.");     
        while (1){
if (digitalRead (stopkey) == LOW){
    goto manual;
}
if (digitalRead (resetkey) == LOW){
    loop();
}
if (digitalRead (printkey) == LOW){
             tft.reset();
 printer.begin();
  printer.inverseOn();
  printer.justify('C');
  printer.setSize('L');
  printer.println("...MATT...");
  printer.inverseOff();
  printer.setSize('S');
  printer.println("Medical Adhesive Tape Test");
  printer.feed(1);
  printer.justify('L');
  printer.println("Test Type: MANUAL");
  printer.feed(1);
  printer.boldOn();
  printer.println("Tension Test");
   printer.boldOff();
  printer.feed(2);
  printer.setSize('S');
  printer.print("Average Force: ");
  printer.print(avr);
  printer.println("  Newton");
  printer.feed(1);
  printer.print("Maximum Force: ");
    printer.print(maxi);
  printer.println("  Newton");
printer.feed(1);
  printer.print("Number of samples: ");
  
  printer.feed(2);
  printer.justify('C');
  printer.setSize('M');
  printer.println("WWW.DNP-CO.IR");
    printer.feed(1);
  printer.println("Tel: 09125221037");
  printer.feed(2);
  printer.setSize('S');
    printer.justify('C'); 
  printer.println("...End of report...");
  printer.feed(3);
  printer.wake();    
  printer.setDefault();
     tft.begin(0x9341);
   tft.setRotation(3);
  goto manual;
}
}  
 } 










Comments
Please log in or sign up to comment.