Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Medidor de alcance do Arduino e projeto de nível de bolha digital


Neste tutorial vamos aprender como fazer um medidor de alcance Arduino e um nível de bolha digital. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo.

Visão geral


O dispositivo possui um sensor ultrassônico para medir a distância até o objeto mais próximo, um acelerômetro para medir o ângulo em relação ao solo, um display LCD para mostrar os resultados e uma placa de circuito impresso personalizada na qual todos os componentes estão conectados.

Podemos operar o dispositivo com apenas um único botão. Uma vez que alimentamos o dispositivo, precisamos selecionar a unidade de medida.

Ao pressionar o botão, podemos alternar entre as unidades e, se pressionarmos e segurarmos o botão por um tempo, entraremos no primeiro programa. Aqui podemos medir a distância e também ter a capacidade de armazenar as duas últimas medições.

Para entrar no segundo programa, novamente temos que pressionar e segurar o botão por um tempo. Neste programa podemos medir uma área quadrada fazendo duas medições de distância perpendiculares.

O próximo programa é o nível de bolha digital e aqui podemos medir o ângulo em relação ao solo.

Usando o botão, podemos alternar entre os dois eixos ou podemos medir o Pitch ou o Roll.

Esquema do circuito do medidor de alcance do Arduino


Aqui está o esquema do circuito deste projeto Arduino.

Observe que já tenho tutoriais detalhados de como cada um desses módulos funciona, e você pode conferir nos links a seguir:tutorial do sensor ultrassônico, tutorial do LCD, tutorial do acelerômetro MEMS.

Você pode obter os componentes necessários para este projeto nos links abaixo:
  • Sensor ultrassônico HC-SR04………………………………
  • MPU6050 Giroscópio Acelerômetro de 3 Eixos………
  • LCD de 16×2 caracteres…………………………………………
  • Arduino Nano…………………………………………………

PCB de design personalizado


De acordo com o esquema do circuito, precisamos projetar o PCB personalizado e eu fiz isso usando o software de design de circuito online gratuito EasyEDA.

Uma vez que terminamos o projeto aqui, podemos simplesmente exportar o arquivo Gerber que é usado para fabricar o PCB. Você pode verificar os arquivos do projeto EasyEDA deste projeto aqui.

Então podemos encomendar nosso PCB da JLCPCB, que na verdade é o patrocinador deste projeto.

Aqui podemos simplesmente arrastar e soltar o arquivo Gerber. Uma vez carregado, podemos revisar nosso PCB no visualizador Gerber. Se tudo estiver bem, podemos continuar, selecionar as propriedades que queremos para o nosso PCB, e então podemos encomendar o nosso PCB a um preço razoável. Observe que, se for seu primeiro pedido da JLCPCB, você poderá obter até 10 PCBs por apenas US $ 2.

Montagem do dispositivo


No entanto, depois de vários dias, os PCBs chegaram. A qualidade dos PCBs é ótima e tudo é exatamente igual ao design.

Ok, agora podemos começar a montar a eletrônica para este projeto. Comecei soldando os pinos na placa de circuito impresso. Desta forma, podemos conectar e desconectar facilmente os componentes quando necessário.

Então eu inseri e soldei os três resistores. Dois deles são para o divisor de tensão para o contraste do LCD. O resistor de 1k deve ser colocado em R1 e os 220 ohms em R2. O terceiro é um resistor pull-up para o botão.

Em seguida, continuei a fazer o caso para o dispositivo. Decidi usar acrílico transparente porque queria que a beleza de todos os componentes eletrônicos fosse visível. Eu tinha um acrílico de 5 mm de um projeto antigo e usei uma circular para cortá-lo no tamanho.

Então eu tive que fazer uma abertura para o LCD na parte superior do gabinete, que na verdade é de 4 mm porque se encaixa melhor com o LCD. Então, primeiro fiz dois furos com uma furadeira e depois inseri uma serra neles. Usando a serra, fiz a abertura grosseiramente e, em seguida, usando uma grosa, fiz linhas retas finas para que o LCD se encaixasse bem.

Em seguida, usando uma broca forstner, fiz as aberturas para a chave liga/desliga, o botão de controle e o sensor ultrassônico.

Depois de ter todas as peças prontas, usei um epóxi de 5 minutos para montar no estojo. Quanto à parte superior, inseri e colei dois parafusos através dos quais o painel superior pode ser inserido e fixado usando algumas porcas em cima.

O gabinete agora está pronto e então continuei com os pinos de solda no LCD para que eu possa conectá-lo facilmente ao PCB. Eu também soldei conectores de pinos ou fios de salto no interruptor de alimentação, no botão e no conector da bateria.

Finalmente, tinha tudo pronto para montar o aparelho. Comecei inserindo o sensor ultrassônico na placa de circuito impresso e depois pelos orifícios no painel lateral. Em seguida foi a placa Arduino, o módulo do acelerômetro e o conector da bateria.

No painel superior, prendi o LCD, o botão liga/desliga e o botão e, em seguida, conectei-os à placa de circuito impresso. Por fim, inseri a bateria de 9V no conector e prendi o painel superior com as porcas.

E é isso, o projeto do medidor de alcance do Arduino está pronto, mas o que resta neste vídeo é explicar como o programa funciona, então vamos dar uma olhada no código do Arduino.

Medidor de alcance Arduino e código fonte de nível de bolha digital


Como o código é um pouco mais longo, para melhor entendimento, postarei o código fonte do programa em seções com descrição de cada seção. E no final deste artigo vou postar o código fonte completo.

Então, primeiro precisamos incluir a biblioteca Wire.h para a comunicação I2C do acelerômetro, bem como a biblioteca LiquidCrystal.h para controlar o LCD. Em seguida, precisamos definir o LCD, o endereço I2C do módulo do acelerômetro MPU6050, os pinos do sensor ultrassônico, bem como algumas variáveis ​​necessárias para o programa abaixo.
#include<Wire.h> // I2C communication library
#include <LiquidCrystal.h> // includes the LiquidCrystal Library

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
const int MPU = 0x68; // I2C address of the MPU6050 accelerometer

#define trigPin 8
#define echoPin 9
#define selectButton 10

int16_t AcX, AcY, AcZ;
long duration;
float distance;
int program = 0;
float d = 0;
float d1 = 0;
float d2 = 0;
float area = 0;
int axis = 0;
int angle = 0;
int unitSelect = 0;
String unit = "cm";Code language: Arduino (arduino)

Na seção de configuração, precisamos inicializar a interface I2C do acelerômetro e a tela de cristal líquido, bem como definir os modos de pino para os pinos de disparo e eco do sensor ultrassônico e o pino do botão.
void setup() {
  // Initialize interface to the MPU6050
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);

  lcd.begin(16, 2); // Initializes the interface to the LCD screen
  
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(selectButton, INPUT_PULLUP);
}Code language: Arduino (arduino)

Na seção de loop principal, temos instruções switch através das quais podemos alternar entre os diferentes programas do nosso dispositivo. No primeiro, ou caso número 0, selecionamos a unidade de medida. Usando a função lcd.print(), imprimimos o texto no LCD e, usando as instruções if, alternamos entre as quatro unidades de medida.
switch (program) {  // Switch between different programs
    case 0:  // Select unit of measurement
      lcd.setCursor(0, 0); // Sets the location at which subsequent text written to the LCD will be displayed
      lcd.print("Select Unit: ");
      lcd.setCursor(13, 0);
      lcd.print(unit);
      lcd.print("  ");
      delay(10);
      // If button is pressed - change unit
      if (digitalRead(selectButton) == 0) {
        if (unitSelect == 0) {
          unit = "in";
          unitSelect = 1;
        }
        else if (unitSelect == 1) {
          unit = "m";
          unitSelect = 2;
        }
        else if (unitSelect == 2) {
          unit = "ft";
          unitSelect = 3;
        }
        else if (unitSelect == 3) {
          unit = "cm";
          unitSelect = 0;
        }
        // If button is held longer then half a second - change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 1;
          lcd.clear();
          delay(500);
        }
      }
      break;Code language: Arduino (arduino)

Devemos observar aqui que a variável unitSelect atua na função personalizada getDistance(), onde ela realmente informa para qual unidade devemos converter a unidade básica cm que estamos obtendo do sensor ultrassônico.
/ Converting the units
  if (unitSelect == 1) {
    distance = distance; // cm to cm
    unit = "cm";
  }
  else if (unitSelect == 2) {
    distance = distance *  0.393701; // cm to in
    unit = "in";
  }
  else if (unitSelect == 3) {
    distance = distance * 0.01; // cm to m
    unit = "m";
  }
  else if (unitSelect == 0) {
    distance = distance * 0.0328; // cm to ft
    unit = "ft";
  }Code language: Arduino (arduino)

Para selecionar a unidade de medida e também entrar no primeiro programa do dispositivo, basta manter o botão pressionado por mais de meio segundo.
// If button is held longer then half a second - change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 1;
          lcd.clear();
          delay(500);
        }
      }
      break;Code language: Arduino (arduino)

No caso número 1 ou no programa de medição de distância, primeiro obtemos a distância até o objeto mais próximo usando a função personalizada getDistance().
case 1:   // Distance measuring program
      distance = getDistance(); // Distance to the nearest object
      lcd.setCursor(0, 0);
      lcd.print("Dist: ");
      lcd.print(distance); // Prints the distance value from the sensor
      lcd.print("    ");
      lcd.setCursor(14, 0);
      lcd.print(unit);
      delay(10);
      lcd.setCursor(0, 1);
      lcd.print("d:");
      lcd.setCursor(8, 1);
      lcd.print("d:");
      delay(200);
      // Save distance 1
      if (digitalRead(selectButton) == 0) {
        if (d == 0) {
          lcd.setCursor(0, 1);
          lcd.print("d:     ");
          lcd.setCursor(2, 1);
          lcd.print(distance);
          d = 1;
          delay(100);
        }
        // Save distance 2
        else if (d == 1) {
          lcd.setCursor(8, 1);
          lcd.print("d:     ");
          lcd.setCursor(10, 1);
          lcd.print(distance);
          d = 0;
          delay(100);
        }
        // If button is held longer then half sencond change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 2;
          d = 0;
          lcd.clear();
          delay(500);
        }
      }
      break;Code language: Arduino (arduino)

Vamos ver como essa função funciona.
//===== getDistance - Custom Function
float getDistance() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration * 0.034 / 2; // distance in cm
  
  // Converting the units
  if (unitSelect == 1) {
    distance = distance; // cm to cm
    unit = "cm";
  }
  else if (unitSelect == 2) {
    distance = distance *  0.393701; // cm to in
    unit = "in";
  }
  else if (unitSelect == 3) {
    distance = distance * 0.01; // cm to m
    unit = "m";
  }
  else if (unitSelect == 0) {
    distance = distance * 0.0328; // cm to ft
    unit = "ft";
  }
  return distance;
}Code language: Arduino (arduino)

Aqui, usando o pino do gatilho, dizemos ao sensor para gerar uma onda sonora ultrassônica.

Em seguida, usando o pino de eco e a função pulseIn(), medimos a duração da onda percorrida do sensor para o objeto e vice-versa. Considerando a velocidade do som e o tempo de viagem, podemos calcular facilmente a distância. Assim, imprimimos a distância medida junto com algum texto no LCD e usando as declarações “if”, se pressionarmos o botão, imprimimos ou salvamos as duas últimas medições.

Em seguida é o programa para calcular a área em que estamos usando métodos semelhantes. Precisamos tomar duas medidas perpendiculares e simplesmente multiplicá-las para obter a área do quadrado que elas formam.
case 2:   // Area measuring program
      distance = getDistance();
      lcd.setCursor(0, 0);
      lcd.print("Area: ");
      lcd.print(area); // Prints the calculated area from the two measurements
      lcd.setCursor(12, 0);
      lcd.print(unit); // Prints the selected unit and the square sign below
      lcd.print("^2");
      delay(200);
      if ( d == 0) {
        lcd.setCursor(0, 1);
        lcd.print("d1:       ");
        lcd.setCursor(3, 1);
        lcd.print(distance);
        delay(200);
      }
      else if (d == 1) {
        lcd.setCursor(9, 1);
        lcd.print("d2:      ");
        lcd.setCursor(12, 1);
        lcd.print(distance);
        delay(200);
      }
      else if (d == 2) {
        lcd.setCursor(6, 0);
        lcd.print(area);
        delay(200);
      }
      // Save distance 1
      if (digitalRead(selectButton) == 0) {
        if (d == 0) {
          lcd.setCursor(0, 1);
          lcd.print("d1:    ");
          lcd.setCursor(3, 1);
          lcd.print(distance);
          d = 1;
          d1 = distance;
          delay(100);
        }
        // Save distance 2
        else if (d == 1) {
          lcd.setCursor(9, 1);
          lcd.print("d2:    ");
          lcd.setCursor(12, 1);
          lcd.print(distance);
          d = 2;
          d2 = distance;
          area = d1 * d2; // Calculate the area
          delay(100);
        }
        else if (d == 2) {
          lcd.clear();
          d = 0;
          area = 0;
          delay(100);
        }
        // If button is held longer then half sencond change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 3;
          d = 0;
          lcd.clear();
          delay(500);
        }
      }
      break;Code language: Arduino (arduino)

O último caso, é o programa de medição de ângulos. Aqui, precisamos ler os dados do acelerômetro, que na verdade são a força do campo gravitacional da Terra em três eixos diferentes, X, Y e Z. O valor de cada eixo é armazenado em 2 registros, portanto, precisamos ler um total de 6 registros e combiná-los para obter o valor certo.
case 3:    // Angle measuring program
      // Read the accelerometer data
      Wire.beginTransmission(MPU);
      Wire.write(0x3B); // Start with register 0x3B (ACCEL_XOUT_H)
      Wire.endTransmission(false);
      Wire.requestFrom(MPU, 6, true); // Read 6 registers total, each axis value is stored in 2 registers
      AcX = Wire.read() << 8 | Wire.read(); // X-axis value
      AcY = Wire.read() << 8 | Wire.read(); // Y-axis value
      AcZ = Wire.read() << 8 | Wire.read(); // Z-axis value
     
      if ( axis == 0) {
        // Calculating the Pitch angle (rotation around Y-axis)
        angle = atan(-1 * AcX / sqrt(pow(AcY, 2) + pow(AcZ, 2))) * 180 / PI;
        lcd.setCursor(0, 0);
        lcd.print("Pitch");
      }
      else if (axis == 1) {
        // Calculating the Roll angle (rotation around X-axis)
        angle = atan(-1 * AcY / sqrt(pow(AcX, 2) + pow(AcZ, 2))) * 180 / PI;
        lcd.setCursor(0, 0);
        lcd.print("Roll ");
      }
      lcd.setCursor(0, 1);
      lcd.print("Angle: ");
      lcd.print(abs(angle));
      lcd.print("     ");
      lcd.setCursor(10, 1);
      lcd.print("deg");
      delay(200);

      // Change axis
      if (digitalRead(selectButton) == 0) {
        if (axis == 0) {
          axis = 1;
          delay(100);
        }
        // Save distance 2
        else if (axis == 1) {
          axis = 0;
          delay(100);
        }
        // If button is held longer then half sencond change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 0;
          lcd.clear();
          delay(500);
        }
      }
      break;Code language: Arduino (arduino)

Uma vez que tenhamos os valores X, Y e Z do acelerômetro, podemos calcular o ângulo Pitch, ou rotação em torno do eixo Y, bem como o ângulo de rotação, ou rotação em torno do eixo X, usando as duas equações. Você pode encontrar mais detalhes sobre essas equações na nota de aplicação da Freescale Semiconductor, Detecção de inclinação usando um acelerômetro de três eixos . Então, depois disso, imprimimos os valores junto com algum texto no LCD e, pressionando o botão, alteramos o que mostramos no LCD, seja o ângulo Pitch ou Roll.

Aqui está o código-fonte completo para este projeto de medidor de alcance e nível de bolha do Arduino:
/*
  DIY Digital Range Measurer and Spirit Level

  by Dejan Nedelkovski,
  www.HowToMechatronics.com

*/
#include<Wire.h> // I2C communication library
#include <LiquidCrystal.h> // includes the LiquidCrystal Library

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
const int MPU = 0x68; // I2C address of the MPU6050 accelerometer

#define trigPin 8
#define echoPin 9
#define selectButton 10

int16_t AcX, AcY, AcZ;
long duration;
float distance;
int program = 0;
float d = 0;
float d1 = 0;
float d2 = 0;
float area = 0;
int axis = 0;
int angle = 0;
int unitSelect = 0;
String unit = "cm";

void setup() {
  // Initialize interface to the MPU6050
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);

  lcd.begin(16, 2); // Initializes the interface to the LCD screen
  
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(selectButton, INPUT_PULLUP);
}
void loop() {
  switch (program) {  // Switch between different programs
    case 0:  // Select unit of measurement
      lcd.setCursor(0, 0); // Sets the location at which subsequent text written to the LCD will be displayed
      lcd.print("Select Unit: ");
      lcd.setCursor(13, 0);
      lcd.print(unit);
      lcd.print("  ");
      delay(10);
      // If button is pressed - change unit
      if (digitalRead(selectButton) == 0) {
        if (unitSelect == 0) {
          unit = "in";
          unitSelect = 1;
        }
        else if (unitSelect == 1) {
          unit = "m";
          unitSelect = 2;
        }
        else if (unitSelect == 2) {
          unit = "ft";
          unitSelect = 3;
        }
        else if (unitSelect == 3) {
          unit = "cm";
          unitSelect = 0;
        }
        // If button is held longer then half a second - change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 1;
          lcd.clear();
          delay(500);
        }
      }
      break;
      
    case 1:   // Distance measuring program
      distance = getDistance(); // Distance to the nearest object
      lcd.setCursor(0, 0);
      lcd.print("Dist: ");
      lcd.print(distance); // Prints the distance value from the sensor
      lcd.print("    ");
      lcd.setCursor(14, 0);
      lcd.print(unit);
      delay(10);
      lcd.setCursor(0, 1);
      lcd.print("d:");
      lcd.setCursor(8, 1);
      lcd.print("d:");
      delay(200);
      // Save distance 1
      if (digitalRead(selectButton) == 0) {
        if (d == 0) {
          lcd.setCursor(0, 1);
          lcd.print("d:     ");
          lcd.setCursor(2, 1);
          lcd.print(distance);
          d = 1;
          delay(100);
        }
        // Save distance 2
        else if (d == 1) {
          lcd.setCursor(8, 1);
          lcd.print("d:     ");
          lcd.setCursor(10, 1);
          lcd.print(distance);
          d = 0;
          delay(100);
        }
        // If button is held longer then half sencond change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 2;
          d = 0;
          lcd.clear();
          delay(500);
        }
      }
      break;

    case 2:   // Area measuring program
      distance = getDistance();
      lcd.setCursor(0, 0);
      lcd.print("Area: ");
      lcd.print(area); // Prints the calculated area from the two measurements
      lcd.setCursor(12, 0);
      lcd.print(unit); // Prints the selected unit and the square sign below
      lcd.print("^2");
      delay(200);
      if ( d == 0) {
        lcd.setCursor(0, 1);
        lcd.print("d1:       ");
        lcd.setCursor(3, 1);
        lcd.print(distance);
        delay(200);
      }
      else if (d == 1) {
        lcd.setCursor(9, 1);
        lcd.print("d2:      ");
        lcd.setCursor(12, 1);
        lcd.print(distance);
        delay(200);
      }
      else if (d == 2) {
        lcd.setCursor(6, 0);
        lcd.print(area);
        delay(200);
      }
      // Save distance 1
      if (digitalRead(selectButton) == 0) {
        if (d == 0) {
          lcd.setCursor(0, 1);
          lcd.print("d1:    ");
          lcd.setCursor(3, 1);
          lcd.print(distance);
          d = 1;
          d1 = distance;
          delay(100);
        }
        // Save distance 2
        else if (d == 1) {
          lcd.setCursor(9, 1);
          lcd.print("d2:    ");
          lcd.setCursor(12, 1);
          lcd.print(distance);
          d = 2;
          d2 = distance;
          area = d1 * d2; // Calculate the area
          delay(100);
        }
        else if (d == 2) {
          lcd.clear();
          d = 0;
          area = 0;
          delay(100);
        }
        // If button is held longer then half sencond change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 3;
          d = 0;
          lcd.clear();
          delay(500);
        }
      }
      break;

    case 3:    // Angle measuring program
      // Read the accelerometer data
      Wire.beginTransmission(MPU);
      Wire.write(0x3B); // Start with register 0x3B (ACCEL_XOUT_H)
      Wire.endTransmission(false);
      Wire.requestFrom(MPU, 6, true); // Read 6 registers total, each axis value is stored in 2 registers
      AcX = Wire.read() << 8 | Wire.read(); // X-axis value
      AcY = Wire.read() << 8 | Wire.read(); // Y-axis value
      AcZ = Wire.read() << 8 | Wire.read(); // Z-axis value
     
      if ( axis == 0) {
        // Calculating the Pitch angle (rotation around Y-axis)
        angle = atan(-1 * AcX / sqrt(pow(AcY, 2) + pow(AcZ, 2))) * 180 / PI;
        lcd.setCursor(0, 0);
        lcd.print("Pitch");
      }
      else if (axis == 1) {
        // Calculating the Roll angle (rotation around X-axis)
        angle = atan(-1 * AcY / sqrt(pow(AcX, 2) + pow(AcZ, 2))) * 180 / PI;
        lcd.setCursor(0, 0);
        lcd.print("Roll ");
      }
      lcd.setCursor(0, 1);
      lcd.print("Angle: ");
      lcd.print(abs(angle));
      lcd.print("     ");
      lcd.setCursor(10, 1);
      lcd.print("deg");
      delay(200);

      // Change axis
      if (digitalRead(selectButton) == 0) {
        if (axis == 0) {
          axis = 1;
          delay(100);
        }
        // Save distance 2
        else if (axis == 1) {
          axis = 0;
          delay(100);
        }
        // If button is held longer then half sencond change program
        delay(500);
        if (digitalRead(selectButton) == 0) {
          program = 0;
          lcd.clear();
          delay(500);
        }
      }
      break;
  }
}

//===== getDistance - Custom Function
float getDistance() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration * 0.034 / 2; // distance in cm
  
  // Converting the units
  if (unitSelect == 1) {
    distance = distance; // cm to cm
    unit = "cm";
  }
  else if (unitSelect == 2) {
    distance = distance *  0.393701; // cm to in
    unit = "in";
  }
  else if (unitSelect == 3) {
    distance = distance * 0.01; // cm to m
    unit = "m";
  }
  else if (unitSelect == 0) {
    distance = distance * 0.0328; // cm to ft
    unit = "ft";
  }
  return distance;
}Code language: Arduino (arduino)

Então isso seria tudo, espero que você tenha gostado deste projeto Arduino e aprendido algo novo. Sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo.

Processo de manufatura

  1. Estação de comando modelo Rail Digital DCC Arduino e aplicativo gratuito
  2. Dados digitais Arduino
  3. Animação de LCD e jogos
  4. Detector de frequência de áudio
  5. Arduino Tamagotchi Clone - Animal de estimação digital
  6. Tech-TicTacToe
  7. Voltímetro DIY com Arduino e um visor Nokia 5110
  8. Cronômetro de contagem regressiva do Arduino
  9. Comunicação Python3 e Arduino
  10. Rádio FM usando Arduino e RDA8057M