//vyhody #define DOWN A5//down pc5//?UP #define RIGHT_POS A4//up pc4 #define LEFT_POS A3//? pc3 #define UP A2//farbovac? pc2 //?down //A1//out pc1 //A0//out2 pc0 //kincevyky #define RIGHT_STOP 12//??????? pb4 left stop// #define LEFT_STOP 11// stil 2 pb3 right stop #define D10 10//??????? pb2 #define D9 9//??????? pb1 WORK NYZ //knopky #define D0 0// start pd0 #define D1 1// stop avaryjnyy pd1 #define D8 8//down pb0 #define D7 7//up pd7 #define D6 6//zero counter pd6 #define D5 5//direction pd5 #define D2 2//????????????????? pd2 #define D3 3//????????????????? pd3 #define D4 4//????????????????? pd4 int err_count=0; boolean Stop=false; int prev=0; int step_=6; void setup() { //DDRC=DDRC| B00111111; //PORTC=0; //PORTC=B00000000; //DDRD=B00000000; //DDRB=B00000000; // pinMode(A5, OUTPUT); // digitalWrite(A5,HIGH); //pinMode(A0, OUTPUT); digitalWrite(A0,HIGH); //pinMode(A1, OUTPUT); digitalWrite(A1,HIGH); pinMode(A2, OUTPUT); digitalWrite(A2,LOW); pinMode(A3, OUTPUT); digitalWrite(A3,LOW); pinMode(A4, OUTPUT); digitalWrite(A4,LOW); pinMode(A5, OUTPUT); digitalWrite(A5,LOW); pinMode(D7, INPUT); digitalWrite(D7,HIGH); pinMode(D8, INPUT); digitalWrite(D8,HIGH); pinMode(D6, INPUT); digitalWrite(D6,HIGH); pinMode(D5, INPUT); digitalWrite(D5,HIGH); pinMode(D0, INPUT); digitalWrite(D0,HIGH); pinMode(D1, INPUT); digitalWrite(D1,HIGH); pinMode(LEFT_STOP, INPUT); digitalWrite(LEFT_STOP,HIGH); pinMode(RIGHT_STOP, INPUT); digitalWrite(RIGHT_STOP,HIGH); pinMode(D10, INPUT); digitalWrite(D10,HIGH); pinMode(D9, INPUT); digitalWrite(D9,HIGH); delay(500); digitalWrite(UP,HIGH);digitalWrite(RIGHT_POS,LOW);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,LOW); delay(500); digitalWrite(UP,LOW);digitalWrite(RIGHT_POS,LOW);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,LOW); delay(500); } #define delay_ms_move 1 void loop() { //Serial.print("kincevyk D10="); Serial.print(digitalRead(D10));Serial.print(" kincevyk D9=");Serial.println(digitalRead(D9)); read_button(); read_stop(); Start(); } void read_button() { //knopky //#define D0 0// start pd0 //#define D1 1// stop avaryjnyy pd1 //#define D8 8//down pb0 //#define D7 7//up pd7 //#define D6 6//zero counter pd6 //#define D5 5//direction pd5 //vyhody //A5//down pc5 //A4//up pc4 //A3//? pc3 //A2//farbovac? pc2 //A1//out pc1 //A0//out2 pc0 //start //if (digitalRead(D0)==LOW) {digitalWrite(A5,!digitalRead(A5)); } //stop //else if (digitalRead(D1)==LOW){digitalWrite(A5,!digitalRead(A5));} //if (digitalRead(D8)==HIGH){digitalWrite(DOWN,HIGH);};// else digitalWrite(DOWN,LOW); //UP //if (digitalRead(D7)==HIGH){digitalWrite(DOWN,LOW);};// else digitalWrite(UP,LOW); if (step_==6){ //DOWN //if (digitalRead(D8)==HIGH){digitalWrite(DOWN,HIGH);} else digitalWrite(DOWN,LOW); if (digitalRead(D8)==LOW){digitalWrite(DOWN,HIGH);digitalWrite(UP,LOW);} //UPd7 //if (digitalRead(D7)==HIGH){digitalWrite(UP,HIGH);} else digitalWrite(UP,LOW); if (digitalRead(D7)==LOW){digitalWrite(DOWN,LOW);digitalWrite(UP,HIGH);} //ZERO //d5 //if ((digitalRead(D6)==HIGH)){digitalWrite(LEFT_POS,HIGH);} else digitalWrite(LEFT_POS,LOW); //if ((digitalRead(D5)==HIGH)) {digitalWrite(RIGHT_POS,HIGH);} else digitalWrite(RIGHT_POS,LOW); //if (digitalRead(D8)!=prev)Stop=false; //UP //d5 //d9 //if (digitalRead(D6)==HIGH){digitalWrite(RIGHT_POS,HIGH);} else digitalWrite(RIGHT_POS,LOW); //delay(500); } if ((digitalRead(D0)==LOW)&&(prev==1)) {step_=0;prev=0;Start();} else if ((digitalRead(D0)==HIGH)&&(prev==0)){prev=1;Start();} if ((digitalRead(D1)==LOW)&&(prev==1)) {digitalWrite(UP,LOW);digitalWrite(RIGHT_POS,LOW);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,LOW); step_=5;prev=0;}else if ((digitalRead(D1)==HIGH)&&(prev==0)){prev=1;} //delay(1000);} //if (digitalRead(D0)==LOW) {Serial.println(digitalRead(D0));digitalWrite(LEFT_POS,HIGH);} else digitalWrite(LEFT_POS,LOW); } void read_stop() { if ((digitalRead(RIGHT_STOP)==LOW)&&(digitalRead(RIGHT_POS)==HIGH)){ digitalWrite(LEFT_POS,LOW);digitalWrite(RIGHT_POS,LOW); Stop=true; //delay(5000); } if ((digitalRead(LEFT_STOP)==LOW)&&(digitalRead(LEFT_POS)==HIGH)){ digitalWrite(LEFT_POS,LOW);digitalWrite(RIGHT_POS,LOW); //delay(5000); Stop=true; } } void Start() { //if ((digitalRead(D0)==HIGH)&&(prev==0)){ // Serial.println("start"); switch (step_){ case 0:{ digitalWrite(UP,HIGH);digitalWrite(RIGHT_POS,LOW);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,LOW); //digitalWrite(UP,LOW);digitalWrite(RIGHT_POS,HIGH);digitalWrite(DOWN,HIGH);digitalWrite(LEFT_POS,HIGH); if (digitalRead(D9)==1){step_++;} //digitalWrite(RIGHT_POS,LOW); // PORTC=B00111111; //step_=1; break;} case 1:{//delay(delay_ms_move); //digitalWrite(UP,LOW);digitalWrite(RIGHT_POS,HIGH);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,LOW); //if (digitalRead(D9)==HIGH) {digitalWrite(RIGHT_POS,LOW);delay(1000); step_=5;} //if (digitalRead(RIGHT_STOP)==0) {step_++;Serial.println(step_); err_count=0;} //if (millis()-err_count>=5000) step_++; step_++; break;} case 2:{ delay(delay_ms_move); digitalWrite(UP,HIGH);digitalWrite(RIGHT_POS,LOW);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,HIGH); //if (digitalRead(D9)==HIGH) {digitalWrite(RIGHT_POS,LOW);delay(1000); step_=5;} if (digitalRead(LEFT_STOP)==0) {step_++;} break;} case 3:{delay(delay_ms_move); digitalWrite(UP,LOW);digitalWrite(RIGHT_POS,LOW);digitalWrite(DOWN,HIGH);digitalWrite(LEFT_POS,LOW); //if (digitalRead(D9)==HIGH) {digitalWrite(RIGHT_POS,LOW); if (digitalRead(D9)==0) {delay(1000);step_++;} break;} case 4:{delay(delay_ms_move); digitalWrite(UP,LOW);digitalWrite(RIGHT_POS,HIGH);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,LOW); if (digitalRead(RIGHT_STOP)==0) {step_++;} break;} case 5:{delay(delay_ms_move); digitalWrite(UP,HIGH);digitalWrite(RIGHT_POS,LOW);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,LOW); //if (digitalRead(D10)==0) {digitalWrite(UP,LOW);digitalWrite(RIGHT_POS,LOW);digitalWrite(DOWN,LOW);digitalWrite(LEFT_POS,LOW); step_=6;} step_++; break;} } } //}