You are on page 1of 3

#include "Adafruit_VL53L0X.

h"
#include <SPI.h> // incluye libreria interfaz SPI
#include <SD.h> // incluye libreria para tarjetas SD

// address we will assign if dual sensor is present


#define LOX1_ADDRESS 0x30
#define LOX2_ADDRESS 0x29

// set the pins to shutdown


#define SHT_LOX1 13
#define SHT_LOX2 12

// objects for the vl53l0x


Adafruit_VL53L0X lox1 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox2 = Adafruit_VL53L0X();

//Sensors
#define SENSOR 11 // constante SENSOR en pin digital 4 (senal de DHT11)
int HORIZONTAL; // variable para almacenar valor de temperatura

int horizontal;
int Flecha;

#define SSpin 10 // Slave Select en pin digital 10


File archivo; // objeto archivo del tipo File
Adafruit_VL53L0X dht(SENSOR,Adafruit_VL53L0X);

// this holds the measurement


VL53L0X_RangingMeasurementData_t measure1;
VL53L0X_RangingMeasurementData_t measure2;

/*
Reset all sensors by setting all of their XSHUT pins low for delay(10), then
set all XSHUT high to bring out of reset
Keep sensor #1 awake by keeping XSHUT pin high
Put all other sensors into shutdown by pulling XSHUT pins low
Initialize sensor #1 with lox.begin(new_i2c_address) Pick any number but 0x29
and it must be under 0x7F. Going with 0x30 to 0x3F is probably OK.
Keep sensor #1 awake, and now bring sensor #2 out of reset by setting its XSHUT
pin high.
Initialize sensor #2 with lox.begin(new_i2c_address) Pick any number but 0x29
and whatever you set the first sensor to
*/
void setID() {
// all reset
digitalWrite(SHT_LOX1, LOW);
digitalWrite(SHT_LOX2, LOW);
delay(10);
// all unreset
digitalWrite(SHT_LOX1, HIGH);
digitalWrite(SHT_LOX2, HIGH);
delay(10);

// activating LOX1 and reseting LOX2


digitalWrite(SHT_LOX1, HIGH);
digitalWrite(SHT_LOX2, LOW);
// initing LOX1
if(!lox1.begin(LOX1_ADDRESS)) {
Serial.println(F("Failed to boot first VL53L0X"));
while(1);
}
delay(10);

// activating LOX2
digitalWrite(SHT_LOX2, HIGH);
delay(10);

//initing LOX2
if(!lox2.begin(LOX2_ADDRESS)) {
Serial.println(F("Failed to boot second VL53L0X"));
while(1);
}
}

void read_dual_sensors() {

lox1.rangingTest(&measure1, false); // pass in 'true' to get debug data printout!


lox2.rangingTest(&measure2, false); // pass in 'true' to get debug data printout!

// print sensor one reading


Serial.print("1: ");
if(measure1.RangeStatus != 4) { // if not out of range
Serial.print(measure1.RangeMilliMeter);
} else {
Serial.print("Out of range");
}

Serial.print(" ");

// print sensor two reading


Serial.print("2: ");
if(measure2.RangeStatus != 4) {
Serial.print(measure2.RangeMilliMeter);
} else {
Serial.print("Out of range");
}

Serial.println();
}

void setup() {

Serial.println("Inicializando tarjeta ..."); // texto en ventana de monitor


if (!SD.begin(SSpin)) { // inicializacion de tarjeta SD
Serial.println("fallo en inicializacion !");// si falla se muestra texto
correspondiente y
return; // se sale del setup() para finalizar el programa
}
Serial.println("inicializacion correcta"); // texto de inicializacion correcta
archivo = SD.open("datos.txt", FILE_WRITE); // apertura para lectura/escritura de
archivo datos.txt

if (archivo) {
for (int i=1; i < 31; i++){ // bucle repite 30 veces
Flecha = measure1.RangeMilliMeter; // almacena en variable valor leido de
temperatura

archivo.print(i); // escribe en tarjeta el valor del indice


archivo.print(","); // escribe en tarjeta una coma
archivo.print(Flecha); // escribe en tarjeta el valor de temperatura

Serial.print(i); // escribe en monitor el valor del indice


Serial.print(","); // escribe en monitor una coma
Serial.print(Flecha); // escribe en monitor el valor de temperatura

delay(1000); // demora de 1 segundo


}
archivo.close(); // cierre de archivo
Serial.println("escritura correcta"); // texto de escritura correcta en monitor
serie
} else {
Serial.println("error en apertura de datos.txt"); // texto de falla en apertura
de archivo
}
Serial.begin(9600);

// wait until serial port opens for native USB devices


while (! Serial) { delay(1); }

pinMode(SHT_LOX1, OUTPUT);
pinMode(SHT_LOX2, OUTPUT);

Serial.println("Shutdown pins inited...");

digitalWrite(SHT_LOX1, LOW);
digitalWrite(SHT_LOX2, LOW);

Serial.println("Both in reset mode...(pins are low)");

Serial.println("Starting...");
setID();

void loop() {

read_dual_sensors();
delay(100);
}

You might also like