The code

This is the code I used to monitor the input sensor and output the recoiled length:

const int medidor = 5;

const int onoff = 7;

const int controle = 9;

int estado_medidor = LOW;

int estado_onoff = LOW;

int flag_controle = 0;

int voltas = 0;

double diam_carretel = 0.0628; // m

double comp = 0;

 

// Comprimento a ser enrolado, em metros

float comp_alvo = 2.5; // m

 

void setup() {

  pinMode(medidor, INPUT);

  pinMode(onoff, INPUT);  

  pinMode(controle, OUTPUT);

  digitalWrite( controle , LOW );

  Serial.begin(9600);  

 

}

 

void loop() {

  estado_medidor = digitalRead( medidor );

  estado_onoff = digitalRead( onoff );

  if ((estado_onoff == HIGH) && (comp < comp_alvo)) {

    digitalWrite( controle , HIGH );

    flag_controle = 1;

    if (estado_medidor == HIGH) {

      comp = voltas * 3.1415 * diam_carretel;   

      Serial.print( comp );

      Serial.println(" m");

      voltas = voltas + 1;

      delay(50);

    }

  }

  if ((estado_onoff == LOW) || (comp > comp_alvo)) {

    digitalWrite( controle , LOW );

    flag_controle == 0;

  }

}