#define set1(r,b) r|=(1<<b)
#define set0(r,b) r&=~(1<<b)
#define test(r,b) (r&(1<<b))
int cislo = 0;
bool test = true;

void setup() {
  set0(DDRD,4);
  set1(PORTD,4);

  set1(DDRC,0);
  set1(DDRC,1);
  set1(DDRC,2);
  set1(DDRC,3); 
  set1(DDRC,4);
  set1(DDRC,5);
  set1(DDRD,5);
      
  set0(PORTC,0);
  set0(PORTC,1);
  set0(PORTC,2);
  set0(PORTC,3);
  set0(PORTC,4);
  set0(PORTC,5);
  set0(PORTD,5);

  
}

void loop() {

  if((test(PIND,4)==0) && test == true){
    cislo = 1 + (rand() % 7);
    test = false;
  }else if((test(PIND,4)!=0) && test == false){
    test = true;
  }

  switch(cislo)
{
  case 0: set0(PORTC,0); set0(PORTC,1); set0(PORTC,2); set0(PORTC,3); set0(PORTC,4); set0(PORTC,5); set0(PORTD,5);break;
  case 1: set0(PORTC,0); set0(PORTC,1); set0(PORTC,2); set0(PORTC,3); set1(PORTC,4); set0(PORTC,5); set0(PORTD,5);break;
  case 2: set1(PORTC,0); set0(PORTC,1); set1(PORTC,2); set0(PORTC,3); set0(PORTC,4); set0(PORTC,5); set0(PORTD,5);break;
  case 3: set0(PORTC,0); set1(PORTC,1); set0(PORTC,2); set1(PORTC,3); set1(PORTC,4); set0(PORTC,5); set0(PORTD,5);break;
  case 4: set1(PORTC,0); set1(PORTC,1); set1(PORTC,2); set1(PORTC,3); set0(PORTC,4); set0(PORTC,5); set0(PORTD,5);break;
  case 5: set1(PORTC,0); set1(PORTC,1); set1(PORTC,2); set1(PORTC,3); set1(PORTC,4); set0(PORTC,5); set0(PORTD,5);break;
  case 6: set1(PORTC,0); set1(PORTC,1); set1(PORTC,2); set1(PORTC,3); set0(PORTC,4); set1(PORTC,5); set1(PORTD,5);break;
  default: break;
}

}