#include <MsTimer2.h>
volatile int sudu;
volatile int item;
String chang;
void guiling(int sudu) {
//刀的位置归零
if (digitalRead(8) == LOW) {
while (digitalRead(12) == HIGH) {
digitalWrite(2,LOW);
digitalWrite(5,HIGH);
delayMicroseconds(500);
digitalWrite(5,LOW);
delayMicroseconds(500);
}
}
}
void msTimer2_func() {
digitalWrite(4,HIGH);
digitalWrite(7,(!digitalRead(7)));
}
void dao(int sudu) {
//刀的位置判断12&13限位开关
if (digitalRead(12) == LOW) {
analogWrite(11, 255);
analogWrite(10, 0);
delay(3000);
while (digitalRead(13) == HIGH) {
digitalWrite(2,HIGH);
digitalWrite(5,HIGH);
delayMicroseconds(sudu);
digitalWrite(5,LOW);
delayMicroseconds(sudu);
}
} else if (digitalRead(13) == LOW) {
analogWrite(10, 255);
analogWrite(11, 0);
delay(3000);
while (digitalRead(12) == HIGH) {
digitalWrite(2,LOW);
digitalWrite(5,HIGH);
delayMicroseconds(sudu);
digitalWrite(5,LOW);
delayMicroseconds(sudu);
}
}
}
void wuliao(int changdu, boolean x) {
//驱动物料前进
for (int i = (1); i <= (changdu); i = i + (1)) {
digitalWrite(3,x);
digitalWrite(6,HIGH);
delayMicroseconds(sudu);
digitalWrite(6,LOW);
delayMicroseconds(sudu);
}
}
void cp1() {
//各种长度
wuliao(676, LOW);
for (int i = 1; i <= 5; i = i + (1)) {
dao(sudu);
analogWrite(11, 0);
analogWrite(11, 0);
wuliao(923, LOW);
}
wuliao(400, LOW);
}
void cp2() {
//各种长度
wuliao(676, LOW);
for (int i = 1; i <= 5; i = i + (1)) {
dao(sudu);
wuliao(1107, LOW);
}
wuliao(400, LOW);
}
void cp3() {
//各种长度
wuliao(676, LOW);
for (int i = 1; i <= 5; i = i + (1)) {
dao(sudu);
wuliao(1230, LOW);
}
wuliao(400, LOW);
}
void cp4() {
//各种长度
wuliao(676, LOW);
for (int i = 1; i <= 5; i = i + (1)) {
dao(sudu);
wuliao(1477, LOW);
}
wuliao(400, LOW);
}
void cp5() {
//各种长度
wuliao(676, LOW);
for (int i = 1; i <= 5; i = i + (1)) {
dao(sudu);
wuliao(1538, LOW);
}
wuliao(400, LOW);
}
void cp6() {
//各种长度
wuliao(676, LOW);
for (int i = 1; i <= 6; i = i + (1)) {
dao(sudu);
wuliao(1588, LOW);
}
wuliao(400, LOW);
}
void cp7() {
//各种长度
wuliao(676, LOW);
for (int i = 1; i <= 5; i = i + (1)) {
dao(sudu);
wuliao(1846, LOW);
}
wuliao(400, LOW);
}
void setup(){
sudu = 500;
pinMode(8, INPUT);
pinMode(2, OUTPUT);
pinMode(5, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
pinMode(13, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
analogWrite(11, 0);
analogWrite(10, 0);
pinMode(9, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
//刀的速度
MsTimer2::set(1, msTimer2_func);
pinMode(3, OUTPUT);
pinMode(6, OUTPUT);
Serial.begin(115200);
pinMode(9, OUTPUT);
item = 1000;
chang = "";
}
void loop(){
//主程序
guiling(sudu);
void (*b) () ;
if (Serial.available()) {
char c = Serial.read();
if (c == '1') {
chang = "15厘米";
Serial.println(chang);
b=cp1;
} else if (c == '2') {
chang = "18厘米";
Serial.println(chang);
b=cp2;
} else if (c == '3') {
chang = "20厘米";
Serial.println(chang);
b=cp3;
} else if (c == '4') {
chang = "24厘米";
Serial.println(chang);
b=cp4;
} else if (c == '5') {
chang = "25厘米";
Serial.println(chang);
b=cp5;
} else if (c == '6') {
chang = "25.5厘米";
Serial.println(chang);
b=cp6;
} else if (c == '7') {
chang = "30厘米";
Serial.println(chang);
b=cp7;
} else if (c == 'a') {
wuliao(1569, HIGH);
} else if (c == 'b') {
wuliao(1569, LOW);
} else if (c == '8') {
dao(1000);
} else if (c == '9') {
digitalWrite(9,LOW);
}
}
if (digitalRead(9) == LOW) {
item++;
Serial.print(chang);
Serial.println(item);
MsTimer2::start();
Serial.println(digitalRead(2));
b() ;
MsTimer2::stop();
digitalWrite(9,HIGH);
analogWrite(10, 0);
analogWrite(11, 0);
}
//400细分一圈6.5cm
if (digitalRead(12) == HIGH && digitalRead(13) == HIGH) {
}
}