View unanswered posts | View active topics It is currently Sun Sep 23, 2018 1:18 am






Reply to topic  [ 2 posts ] 
Program aborting and then shutdowns 
Author Message
Rookie

Joined: Mon Dec 15, 2014 5:27 pm
Posts: 1
Post Program aborting and then shutdowns
Hello, we're using NXT with RobotC for a project in university.
We are having a problem that the program aborts and immediately after it shutsdown.
Its quite a long program, it executes for a while because the point is to put pieces on a board, maybe thats the problem?
we have no ideia whats causing this
We appreciate any help the code is below
Thank you in advance

Code:
#pragma config(Sensor, S1,     sensorCor,      sensorCOLORFULL)
#pragma config(Sensor, S2,     sensorLuz,      sensorLightActive)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

// enum cores{nada,preto,azul,verde,amarelo,vermelho,branco};

int coordenadas[3][25];
int coordenadasBuscarPecas[3][16];

/* Nota: As distancias tem de ser calculadas com a seguinte formula: (1500*x)/83.7; */

/*
[0][x] <- Distancia Horizontal
[1][x] <- Distancia Vertical
[2][x] < Ocupado/Livre

// 0 - livre; 1 - preto; 2 - azul; 3 - verde; 4 - amarelo; 5 - vermelho; 6 - branco;

Posicoes:

0,1,2,3,4 <- Primeira Fila
5,6,7,8,9 <- Segunda Fila
10,11,12,13,14 <- Terceira Fila
15,16,17,18,19 <- Quarta Fila
20,21,12,23,24 <- Quinta Fila

*/
void inicializarCoordenadas()
{
    // Inicializa as posicoes como livres
    for(int i=0; i<=24; i++)
    {
      coordenadas[2][i] = 0;
    }

    // Primeira posicao na vertical de todas as colunas
    for(int i = 0; i<=4; i++)
    {
      coordenadas[1][i] = 591;
    }

    // Segunda posicao na vertical de todas as colunas
    for(int i = 5; i<=9; i++)
    {
      coordenadas[1][i] = 1335;
    }
     // Terceira posicao na vertical de todas as colunas
    for(int i = 10; i<=14; i++)
    {
      coordenadas[1][i] = 2055;
    }
     // Quarta posicao na vertical de todas as colunas
    for(int i = 15; i<=19; i++)
    {
      coordenadas[1][i] = 2759;
    }
     // Quinta posicao na vertical de todas as colunas
    for(int i = 20; i<=24; i++)
    {
      coordenadas[1][i] = 3467;
    }

    // Horizontal da primeira fila
    coordenadas[0][0]=640;
    coordenadas[0][1]=1050;
    coordenadas[0][2]=1500;
    coordenadas[0][3]=1900;
    coordenadas[0][4]=2350;

    // Horizontal da segunda fila
    coordenadas[0][5]=640;
    coordenadas[0][6]=1050;
    coordenadas[0][7]=1500;
    coordenadas[0][8]=1900;
    coordenadas[0][9]=2350;

    // Horizontal da terceira fila
    coordenadas[0][10]=640;
    coordenadas[0][11]=1050;
    coordenadas[0][12]=1500;
    coordenadas[0][13]=1900;
    coordenadas[0][14]=2350;

    // Horizontal da quarta fila
    coordenadas[0][15]=640;
    coordenadas[0][16]=1050;
    coordenadas[0][17]=1500;
    coordenadas[0][18]=1900;
    coordenadas[0][19]=2350;

    // Horizontal da quinta fila
    coordenadas[0][20]=640;
    coordenadas[0][21]=1050;
    coordenadas[0][22]=1500;
    coordenadas[0][23]=1900;
    coordenadas[0][24]=2350;
}


/*
[0][x] -> Distancia a percorrer
[1][x] -> 1 - Ocupado / 0 - Vazio
[2][x] -> Cor da peca
*/
void inicializarCoordenadasBuscarPecas()
{
   coordenadasBuscarPecas[0][0]=2508;
   coordenadasBuscarPecas[1][0]=1;

    /*
    Codigo para multiplas pecas em diferentes posicoes

    ----------------------------------------------------

    for(int i=0; i<=15; i++)
    {
      float d = 179.21;
      if(i==0)coordenadasBuscarPecas[0][i]=2508.96;
      else coordenadasBuscarPecas[0][i]=2508.96+(d*(i));
      coordenadasBuscarPecas[1][i]=1;
    }

    ----------------------------------------------------
    */
}



void buscarPeca()
{

       int dist = coordenadasBuscarPecas[0][0];

          nMotorEncoder[motorB] = 0;
          nMotorEncoder[motorC] = 0;

          // Vai percorrer a distancia descrita no array
          nMotorEncoderTarget[motorB] = dist;
          nMotorEncoderTarget[motorC] = dist;

          motor[motorB] = 40;
          motor[motorC] = 40;

          wait1Msec(8000);

          if(SensorValue[sensorCor] == 1)
          {
            nxtDisplayCenteredTextLine(2, "preto");
          }
        else if(SensorValue[sensorCor] == 2)
        {
            nxtDisplayCenteredTextLine(2, "azul");
          }
        else if(SensorValue[sensorCor] == 3)
        {
            nxtDisplayCenteredTextLine(2, "verde");
          }
        else if(SensorValue[sensorCor] == 4)
        {
            nxtDisplayCenteredTextLine(2, "amarelo");
          }
        else if(SensorValue[sensorCor] == 5)
        {
            nxtDisplayCenteredTextLine(2, "vermelho");
          }
          else if(SensorValue[sensorCor] == 6)
        {
            nxtDisplayCenteredTextLine(2, "branco");
          }

          // Recolher peca
          motor[motorB] = 0;
          motor[motorC] = 0;
          wait1Msec(1000);
          motor[motorA] = 39; //baixar
          wait1Msec(300);
          motor[motorA] = 0;
          wait1Msec(1000);
          motor[motorB] = 40; // C tambem tera a mesma potencia
          motor[motorC] = 40;

          // Voltar para posicao inicial
          nMotorEncoder[motorB] = 0;
           nMotorEncoder[motorC] = 0;

           // Vai percorrer a distancia descrita no array
           nMotorEncoderTarget[motorB] = 519;
           nMotorEncoderTarget[motorC] = 519;

          motor[motorB] = 40;
          motor[motorC] = 40;

          wait1Msec(3000);

          motor[motorB] = 0; // C tambem tera a mesma potencia
          motor[motorC] = 0;
          wait1Msec(500);
          motor[motorA] = -42;
          wait1Msec(300);
          motor[motorA] = 0;
          wait1Msec(500);

          // Voltar para posicao inicial
          nMotorEncoder[motorB] = 0;
           nMotorEncoder[motorC] = 0;

           dist = dist+519;
           // Vai percorrer a distancia descrita no array
           nMotorEncoderTarget[motorB] = dist;
           nMotorEncoderTarget[motorC] = dist;

          motor[motorB] = -40;
          motor[motorC] = -40;

          wait1Msec(8000);

          motor[motorB] = 0;
          motor[motorC] = 0;

}


void colocarPeca(int posicaoH, int posicaoV)
{
     int rotacao = 637;
     int rotacao_contraria = 715;

     wait1Msec(2000);

     nMotorEncoder[motorB] = 0;
     nMotorEncoder[motorC] = 0;

     // Percorre posicao horizontal

     nMotorEncoderTarget[motorB] = posicaoH;
     nMotorEncoderTarget[motorC] = posicaoH;

     motor[motorB] = 40;
     motor[motorC] = 40;
     wait1Msec(8000);

     motor[motorB] = 0;
     motor[motorC] = 0;

     wait1Msec(8000);

      nMotorEncoder[motorB] = 0;
     nMotorEncoder[motorC] = 0;

     // Roda 90 graus
     nMotorEncoderTarget[motorB] = rotacao;
     nMotorEncoderTarget[motorC] = rotacao;

     motor[motorB] = -40;
      motor[motorC] = 40;

      wait1Msec(5000);

      nMotorEncoder[motorB] = 0;
     nMotorEncoder[motorC] = 0;

     // Percorre posicao vertical
     nMotorEncoderTarget[motorB] = posicaoV;
     nMotorEncoderTarget[motorC] = posicaoV;

     motor[motorB] = 40;
     motor[motorC] = 40;

     wait1Msec(10000);

     // Coloca a peca
     motor[motorA] = 38; // Baixa grua
     wait1Msec(300);
     motor[motorA] = 0;
     wait1Msec(1000);

     nMotorEncoder[motorB] = 0;
     nMotorEncoder[motorC] = 0;

     // Percorre posicao V de volta
     nMotorEncoderTarget[motorB] = posicaoV;
     nMotorEncoderTarget[motorC] = posicaoV;

     motor[motorB] = -40;
     motor[motorC] = -40;

     wait1Msec(500);

     // Sobe grua
     motor[motorA] = -42;
     wait1Msec(300);
     motor[motorA] = 0;

     wait1Msec(8000);

     //chegou a posicao V de volta
     motor[motorB] = 0;
     motor[motorC] = 0;

     wait1Msec(5000);

     nMotorEncoder[motorB] = 0;
     nMotorEncoder[motorC] = 0;

     // Roda 90 graus
     nMotorEncoderTarget[motorB] = rotacao_contraria;
     nMotorEncoderTarget[motorC] = rotacao_contraria;

     motor[motorB] = 40;
      motor[motorC] = -40;

      wait1Msec(5000);

     // Percorre posicao horizontal de volta a posicao inicial
     nMotorEncoderTarget[motorB] = posicaoH;
     nMotorEncoderTarget[motorC] = posicaoH;

     motor[motorB] = -40;
     motor[motorC] = -40;
     wait1Msec(8000);

     motor[motorB] = 0;
     motor[motorC] = 0;

     wait1Msec(5000);

}

task main()
{
  inicializarCoordenadas();
  inicializarCoordenadasBuscarPecas();

  int posAleatoria;
  int numero_pecas = 25;

  while(numero_pecas > 0)
  {
    alive();
    posAleatoria = floor(random[25]);
    nxtDisplayCenteredTextLine(2, "pos: %d", posAleatoria);

    if(coordenadas[2][posAleatoria] == 1)
    {
      // Posicao ocupada
      wait1Msec(1000);
      //nxtDisplayCenteredTextLine(2, "ocupado");
    }
    else
    {
       //nxtDisplayCenteredTextLine(2, "livre");
       buscarPeca();
       colocarPeca(coordenadas[0][posAleatoria], coordenadas[1][posAleatoria]);


     // Coloca a posicao no estado ocupado
       coordenadas[2][posAleatoria]=1;
       numero_pecas--;

     }
  }

}


Mon Dec 15, 2014 5:36 pm
Profile
Professor
User avatar

Joined: Sat Aug 31, 2013 9:15 am
Posts: 256
Post Re: Program aborting and then shutdowns
What's your sleep timeout set to? You can find it on the NXT brick under Settings->Sleep.

_________________
FTC Team 6100 Chariots of Fire - Programmer (2012-2013)
FTC Team 7468 Blue Chariots of Fire - Programmer (2013-2014)
FTC Team 7468 Blue Chariots of Fire - Mentor (2014-2015)
Check out our team website at http://bluechariotsoffire.com/.


Mon Dec 15, 2014 6:46 pm
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 2 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  



Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.