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);
}