void setup() {
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, INPUT_PULLUP);
Serial.begin(9600);
digitalWrite(3, true);
attachInterrupt(digitalPinToInterrupt(2),ano,FALLING);
}
int cislo1;
int pocet;
String back = "R";
String string1 = "R";
void loop() {
while(Serial.available()){
Serial.read();
}
Serial.println("Zadaj cislo 1 alebo 2 (1 - pocet krokov,2 - smer otacania: ");
while(!Serial.available());
String cislo = Serial.readStringUntil('\n');
while(cislo != "1" && cislo != "2"){
Serial.println("Zadaj cislo 1 alebo 2 (1 - pocet krokov,2 - smer otacania: ");
while(!Serial.available());
cislo = Serial.readStringUntil('\n');
}
if(cislo == "1"){
Serial.println("Zadaj o kolko sa ma posunut krokov: ");
while(!Serial.available());
cislo1 = Serial.parseInt();
if(back == "R")
pocet = pocet + cislo1;
else if(back == "L")
pocet = pocet - cislo1;
}
else if(cislo = "2"){
Serial.println("Vyber smer: ");
while(!Serial.available());
string1 = Serial.readStringUntil('\n');
if(string1 == "L"){
cislo1 = 0;
back = "L";
digitalWrite(3, LOW);
}
else if(string1 = "R"){
cislo1 = 0;
back = "R";
digitalWrite(3,HIGH);
}
}
for(int i = 0;i<cislo1;i++){
step(true,false);
}
/*Serial.println(pocet);
Serial.println(back);
Serial.println(string1);*/
delay(500);
}
void step(bool high,bool low){
digitalWrite(4,high);
delay(5);
digitalWrite(4, low);
delay(5);
}
void ano(){
if(pocet != 0){
if(pocet < 0){
pocet = abs(pocet);
if(back == "R")
cyklus(true,true);
else
cyklus(true,false);
}
else if(back == "R")
cyklus(false,true);
else if(back == "L")
cyklus(false,false);
}
}
void cyklus(bool stav1,bool stav2){
for(int i = 0;i < pocet;i++){
digitalWrite(3,stav1);
step(true,false);
}
digitalWrite(3,stav2);
pocet = 0;
}
/*if(pocet != 0){
if(pocet < 0){
pocet = abs(pocet);
for(int i = 0;i < pocet;i++){
digitalWrite(3,HIGH);
step(true,false);
}
digitalWrite(3,LOW);
pocet = 0;
}
else if(back == "R"){
for(int i = 0;i < pocet;i++){
digitalWrite(3,LOW);
step(true,false);
}
digitalWrite(3,HIGH);
pocet = 0;
}
else if(back == "L"){
for(int i = 0;i < pocet;i++){
digitalWrite(3,LOW);
step(true,false);
}
digitalWrite(3, LOW);
pocet = 0;
}
}*/