bool test = true;
bool test1 = true;
bool test2 = true;
bool test3 = true;
bool test4 = true;
int rnd, pozicia = 0;
void setup() {
DDRD |= 0b00001100;
DDRD &= ~(1<<6);
DDRD &= ~(1<<5);
DDRD &= ~(1<<4);
DDRB &= ~(1<<0);
DDRB &= ~(1<<1);
PORTB |= 1<<0;
PORTB |= 1<<1;
PORTD |= 1<<6;
PORTD |= 1<<4;
PORTD |= 1<<5;
Serial.begin(9600);
randomSeed(analogRead(A0));
}
void loop() {
if((PINB&(1<<1)) == 0 && test1 == true)
{
test1 = false;
PORTD |= 1<<2;
PORTD |= 1<<3;
delay(20);
PORTD &= ~(1<<3);
rnd--;
}
else if((PINB&(1<<1)) != 0 && test1 == false){
test1 = true;
}
if((PINB&(1<<0)) == 0 && test2 == true)
{
test2 = false;
PORTD &= ~(1<<2);
PORTD |= 1<<3;
delay(20);
PORTD &= ~(1<<3);
rnd++;
}
else if((PINB&(1<<0)) != 0 && test2 != true){
test2 = true;
}
if((PIND&(1<<6)) ==0 && test == true)
{
int arnd = random(1,6);
for(int i = 0; i < arnd; i++){
krok('r');
}
test = false;
rnd = -1*(rnd + arnd);
}
else if((PIND&(1<<6)) !=0 && test == false)
{
test = true;
}
if((PIND&(1<<5)) ==0 && test3 == true)
{
int brnd = random(0,10);
if(brnd >= 5)
{
krok('r');
krok('r');
krok('r');
krok('r');
krok('r');
krok('r');
rnd = -1*(rnd + 6);
}
if(brnd < 5)
{
krok('l');
krok('l');
krok('l');
krok('l');
krok('l');
krok('l');
rnd = -1*(rnd - 6);
}
test3 = false;
}
else if((PIND&(1<<5)) !=0 && test3 == false)
{
test3 = true;
}
if((PIND&(1<<4)) ==0 && test4 == true)
{
if(rnd > pozicia)
{
for(int i = 0; i < rnd - pozicia; i++){
krok('r');
}
}
if(rnd < pozicia)
{
for(int i = 0; i < pozicia - rnd; i++){
krok('l');
}
}
test4 = false;
rnd = pozicia;
}
else if((PIND&(1<<4)) !=0 && test4 == false)
{
test4 = true;
rnd = 0;
}
Serial.println(rnd);
}
void krok(char smer){
if(smer == 'r')
{
PORTD |= 1<<2;
PORTD |= 1<<3;
delay(20);
PORTD &= ~(1<<3);
}
else if(smer == 'l'){
PORTD &= ~(1<<2);
PORTD |= 1<<3;
delay(20);
PORTD &= ~(1<<3);
}
}