int led[4]={0,0,0,0};



void InicializarLed() {

    int i;

    

    poke(0x1009, 0x3c);

    poke(0x1008, 0b00000000);

    

}



void AcenderLed(int num) {

        

    led[num] = 1;

    

    AtualizarLeds();

}



void ApagarLed(int num) {

        

    led[num] = 0;

    

    AtualizarLeds();

}



void AtualizarLeds() {

    int valor=0;

    int tmp=0;

    int i;

    

    for(i = 0; i < 4; i++) 

    {



        tmp = led[i] << (i+2) ;

        valor=valor|tmp;

     }

    

    poke(0x1008, valor);

}

     /*

int SelecionaAcao()

{

   float maxesc[]={64.0, 8.6};



   int opcoes[]={0,0}, i=0, opcaoant=-1, mudou=0;

   char Acao[4][13];



   Acao[0]="Esq. 90 Graus";

   Acao[1]="Dir. 90 Graus";

   Acao[2]="Pare";

   Acao[3]="Frente X segs";



   sleep(.2);



   while(1)

   {

      opcoes[i]=(int)((float)knob()/maxesc[i]);



      if ((opcoes[i]!=opcaoant)&&(i==0))

      {

         printf("Acao: %d - %s \n", opcoes[i]+1, Acao[opcoes[i]]);

      }



      if ((((opcoes[i]!=opcaoant)&& (i==1)) || (mudou==1))&&(opcoes[0]==3))

      {

         printf("Frente %d segs  \n", (int)((float)knob()/maxesc[i]);

         mudou=0;

      }

     

      if (start_button())

      {

         i++;

         mudou=1;

         sleep(0.1);

      }



      if (i==1)

      {

         if (opcoes[0]!=3)

         return (opcao);

      }

      if (i==2)

      {

         SIGA_TEMPO= (int)((float)knob()/maxesc[i]);

         return (opcao);

      }

      

      opcaoant=opcoes[i];



      sleep(.1);

  }

  return;

}                 */





void AcendeApaga(int num, float espera)

{

   AcenderLed(num);

   sleep(espera);

   ApagarLed(num);



}





/*   printf("Vr:%d Am:%d   Az:%d Vm:%d \n", cor[0],cor[1],cor[2],cor[3]);*/









void SequenciaPadrao(float espera)

{  

   int i,j;



   InicializarLed();



   for(j = 0; j < 4; j++)

   for(i = 0; i < 4; i++)

   {

 	AcendeApaga(i,espera);     

   }

}



void SeqAleatoria(float espera)

{

   while(!stop_button())

   {

      AcendeApaga(random(4),espera);

     

   }  

}



void TestaGerada(int posicao[4],int i)

{

   int j;

   

   for ( j=0; j<i; j++)    

   {

         if ( posicao[i]==posicao[j])

         {

            

	    posicao[i]=(posicao[i]+1) % 4;

            TestaGerada(posicao,i);

         }

    

   }





}



void GeraSequencia(int posicao[4])

{

   int i,j;



   for( i=0; i<4; i++)

   {

      posicao[i]=random(4);

      TestaGerada(posicao,i);

    

   }

   



}



int TocaSequencia(int posicao[4], float atraso)

{

   int i;



   for( i=0; i<4; i++)

   {

     if(start_button())

        return (1);



     AcendeApaga(posicao[i],atraso);



   }

   return (0);

}



void Tarefa4()

{

   int posicao[4]={0,0,0,0};



   InicializarLed();

  

   printf("Tarefa 4 Selecionada- Leds\n");

   GeraSequencia(posicao);



   while(!stop_button())

   {      

      if (TocaSequencia(posicao, 0.2))

      {

         GeraSequencia(posicao);

         sleep(0.2);

      }

   }

}