Boa tarde, galera!!
Estou desenvolvendo um sistema pra obter a curva de calibração de uma célula de carga. Em uma coluna do Excel serão impressos os valores de tensão obtidos no carregamento de massa sobre a célula de carga, e numa outra coluna serão impressos os valores de tensão obtidos no descarregamento. Consegui implementar essa seleção de colunas usando uma chave de dois estados e um if. Os valores são registrados no Excel conforme eu aperto um botão. Minha dúvida é a seguinte: consegui selecionar a coluna que eu desejo utilizando uma chave de dois estados, agora gostaria de saber se é possível eu escolher uma linha do Excel utilizando dois botões. Por exemplo, estou na linha 10, daí cada vez que eu apertar o “botãoup” eu vou subindo uma linha (linha 9, linha 8, etc.) e cada vez que eu apertar o “botãodown” eu vou descendo uma linha (linha 11, linha 12, etc.), com isso será possível eu registrar os valores nas linhas e colunas que eu quiser. Tá confuso? Não sou muito bom pra explicar. Hehehe. Segue abaixo o que eu tenho de programa até agora.

 

float potpin = 0;           //Variável que define a porta do potenciômetro (sensor).

int ROW = 0;                //Variável que se refere as linhas do excel.

int LABEL = 1;  

float val = 0;              //Variável que guarda o valor lido do potenciômetro.

int botao = 2;

int cont = 8;               //Variável que controla a calibração da célula: Carregamento (HIGH) ou Descarregamento (LOW)

 

void setup(){

Serial.begin(9600);                  //Inicialização da comunicação serial.

Serial.println("CLEARDATA");         //Reset da comunicação serial.

Serial.println("LABEL,Time, Massa Carregamento (kg), Tensao Carregamento (V), Numero, ,Massa Descarregamento (kg),Tensao Descarregamento (V),Numero");   //Nomeia as colunas.

pinMode(botao, INPUT);               //Define o Botão como entrada.

pinMode(cont, INPUT);                //Define o botão de controle como entrada.

Serial.println("ROW,SET,2");  

}

void loop(){

  if(digitalRead(cont) == HIGH){           //Se "cont" (porta digital 8) estiver em nível lógico ALTO, os valores do sinal serão registrados na coluna de carregamento.

    int state = digitalRead(botao);        //"State" verifica se o botão está pressionado (LOW) ou não (HIGH).

    if(state == HIGH){}                    //Se o botão não estiver pressionado (HIGH), nada ocorrerá.

    else{                                  //Se o botão for pressionado (LOW), irá ser realizado todos os comandos abaixo.

      val = analogRead(potpin);//*0.004887586;      //Faz a leitura do potenciômetro e guarda o valor em val.

                                                 //Converte os bits para Volts, caso a tensão de ref seja 5V (5/1023=0.004887586).

      ROW++;                                     //Incrementa a linha do excel para que a leitura pule de linha em linha.

      Serial.print("DATA,TIME,");                //Inicia a impressão de dados, sempre iniciando

      Serial.print(",");

      Serial.print(val);

      Serial.print(",");

      //Serial.print(",");

      Serial.println(ROW);

    if (ROW > 500){                              //Laço para limitar a quantidade de dados.

      ROW = 0;

      Serial.println("ROW,SET,2");               //Alimentação das linhas com os dados sempre iniciando.

    }

      delay(500);                                //Espera 50 milisegundos.

    }

  }

  if(digitalRead(cont) == LOW){                  //Se "cont" (porta digital 8) estiver em nível lógico BAIXO, os valores do sinal serão registrados na coluna de descarregamento.

    int state = digitalRead(botao);              //"State" verifica se o botão está pressionado (LOW) ou não (HIGH).

    if(state == HIGH){}                          //Se o botão não estiver pressionado (HIGH), nada ocorrerá.

    else{                                        //Se o botão for pressionado (LOW), irá ser realizado todos os comandos abaixo.

      val = analogRead(potpin);//*0.004887586;      //Faz a leitura do potenciômetro e guarda o valor em val.

                                                 //Converte os bits para Volts, caso a tensao de ref seja 5V (5/1023=0.004887586).

      ROW++;                                     //Incrementa a linha do excel para que a leitura pule de linha em linha. 

      Serial.print("DATA,TIME,");                //Inicia a impressão de dados, sempre iniciando.

      Serial.print(",");

      Serial.print(",");

      Serial.print(",");

      Serial.print(",");

      Serial.print(",");

      Serial.print(val);

      Serial.print(",");

      Serial.println(ROW);

    if (ROW > 500){                              //Laço para limitar a quantidade de dados.

      ROW = 0;

      Serial.println("ROW,SET,2");               //Alimentação das linhas com os dados sempre iniciando.

    }

      delay(500);                                //Espera 50 milisegundos.

  }

}

Exibições: 346

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço