Projeto 39

Velocidade da luz

Projeto 39 - Velocidade da luz (sensor VL53L0X)

Código (download)

/*

Projeto 39 - Velocidade da luz - sensor VL53L0X

Física na Lixa

https://fisicanalixa.blogspot.com/

https://sites.google.com/aelixa.pt/fisicaearduino

*/


#include <Wire.h>

#include <VL53L0X.h>

#define btnIniciar 7      //Pino do botão

#define N 20              //Número de medições

VL53L0X sensor;           //Definir VL53L0X como sendo um sensor

float vm;                 //Valor medido

float tempo;              //Tempo de ida e de volta do feixe em picossegundos

int estadoBTN;            //Estado do botão

int i;



void setup()

{

  Serial.begin(9600);

  pinMode(btnIniciar, INPUT);

  Wire.begin();

  sensor.init();

  sensor.setTimeout(500);

  sensor.setMeasurementTimingBudget(200000);

}


void loop()

{

  estadoBTN = digitalRead(btnIniciar);

  while (estadoBTN == 0)                             //Enquanto o botão não é pressionado

  {

    estadoBTN = digitalRead(btnIniciar);

  }

  Serial.println("Aguarde, por favor!...");

  vm = 0;

  for (i = 1; i <= N; i++)                           //Realiza N medições para fazer a média

  {

    vm = vm + sensor.readRangeSingleMillimeters();   //Soma os N resultados

  }

  vm = vm/N;                                         //Divide pelo número de medições, N

  tempo = 2*3.336641647*vm;                          //Tempo de ida e de volta do feixe em picossegundos

  Serial.println(tempo,1);

  delay(1000);

}

Projeto 39 - Velocidade da luz (sensor VL53L0X e com LCD)

Código (download)

/*

Projeto 39 - Velocidade da luz - sensor VL53L0X (com LCD)

Física na Lixa

https://fisicanalixa.blogspot.com/

https://sites.google.com/aelixa.pt/fisicaearduino

*/


#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

#include <Wire.h>

#include <VL53L0X.h>

#define btnIniciar 7      //Pino do botão

#define N 20              //Número de medições

VL53L0X sensor;           //Definir VL53L0X como sendo um sensor

float vm;                 //Valor medido

float tempo;              //Tempo de ida e de volta do feixe em picossegundos

int estadoBTN;            //Estado do botão

int i;



void setup()

{

  Serial.begin(9600);

  lcd.init();

  lcd.backlight();

  lcd.clear();

  pinMode(btnIniciar, INPUT);

  Wire.begin();

  sensor.init();

  sensor.setTimeout(500);

  sensor.setMeasurementTimingBudget(200000);

  lcd.setCursor(0,0);

  lcd.print("Pode iniciar");

}


void loop()

{

  estadoBTN = digitalRead(btnIniciar);

  while (estadoBTN == 0)                               //Enquanto o botão não é pressionado

  {

    estadoBTN = digitalRead(btnIniciar);

  }

  lcd.clear();

  lcd.setCursor(0,0);

  lcd.print("Aguarde,");

  lcd.setCursor(0,1);

  lcd.print("por favor!...");

  vm = 0;

  for (i = 1; i <= N; i++)                             //Realiza N medições para fazer a média

  {

    vm = vm + sensor.readRangeSingleMillimeters();     //Soma os N resultados

  }

  vm = vm/N;                                           //Divide pelo número de medições, N

  tempo = 2*3.336641647*vm;                            //Tempo de ida e de volta do feixe em picossegundos

  lcd.clear();

  lcd.setCursor(0,0);

  lcd.print("t(ida e volta)");

  lcd.setCursor(0,1);

  lcd.print(tempo,1);

  lcd.print(" ps");

  delay(1000);

}

Instalar as bibliotecas