Introduction: How to Locate the Truth: Truth Finder

I wanted to know the truth so I started trying to look for it. Unfortunately, there were no Instructables for doing this so I decided to make one and share it with you!

I found out that all the biggest truths were located at ‘‘standard conditions’.

In this instructable, I will show you how to create a Truth-finder which leads you directly to the truth at the standard conditions.

There are many ways of finding the truth, more than I know or could describe. In this instructable, I will be showing you the tracking method.

Please take a look at my other instructable which describe alternative methods for reaching the truth

Step 1: Materials

Materials

  • Arduino Uno
  • LCD screen
  • Wires
  • Nylon spacers
  • 1 nylon nut and bolt
  • Arduino battery pack
  • BMP180 Barometric Pressure Sensor (or equivalent)
  • Blue tack

Step 2: Building Truth Aerial

Add multiple spacers on top of each other. On the top spacer bolt the sensor using the bolt.

Step 3: Attaching Aerial

Attach the aerial to one of the holes in the corner of the LCD screen. Securing in place with the bolt.

Step 4: Attach LCD Screen to Arduino

Push the LCD screen gently onto the Arduino being careful not to bend any of the pins.

Step 5: Attaching Battery Pack

Take the blue tack and attach it to two positions on the bottom of the Arduino. Now stick the Arduino on top of the battery pack ensuring that the power cable can reach the Arduino

Step 6: Connecting Sensor

Use the above wiring diagram as an aid for connecting the sensor to the Arduino board

Step 7: Code

This code has been modified from the adafruit sensor library. Please download it here or copy and paste it from below into a black sketch.This requires some knowledge about Arduino and its IDE which you can read here.

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

/* This driver uses the Adafruit unified sensor library (Adafruit_Sensor), which provides a common 'type' for sensor data and some helper functions. To use this driver you will also need to download the Adafruit_Sensor library and include it in your libraries folder.

You should also assign a unique ID to this sensor for use with the Adafruit Sensor API so that you can identify this particular sensor in any data logs, etc. To assign a unique ID, simply provide an appropriate value in the constructor below (12345 is used by default in this example). Connections =========== Connect SCL to analog 5 Connect SDA to analog 4 Connect VDD to 3.3V DC Connect GROUND to common ground History ======= 2013/JUN/17 - Updated altitude calculations (KTOWN) 2013/FEB/13 - First version (KTOWN) */ Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

//Setting up variables for calculating a rolling average for pressure const int numReadings = 50;

float readings[numReadings]; // the readings from the analog input int readIndex = 0; // the index of the current reading float total = 0; // the running total float average = 0; // the average /**************************************************************************/ /* Displays some basic information on this sensor from the unified sensor API sensor_t type (see Adafruit_Sensor for more information) *

**************************************************************************/ /* Arduino setup function (automatically called at startup) */ /**************************************************************************/ void setup(void) { Serial.begin(9600); Serial.println("Pressure Sensor Test"); Serial.println("");

for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } /* Initialise the sensor */ if(!bmp.begin()) { /* There was a problem detecting the BMP085 ... check your connections */ Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!"); while(1); }

//Displaying lcd.begin(16, 2); //initalising size of display (16 collumns, 2 rows) lcd.setCursor(0,0); //set cursor to first row and first collumn lcd.print("Temp:"); lcd.setCursor(0,1); lcd.print("Pres:");

}

/**************************************************************************/ /* Arduino loop function, called once 'setup' is complete (your own code should go here) */ /**************************************************************************/ void loop(void) { /* Get a new sensor event */ sensors_event_t event; bmp.getEvent(&event); /* Display the results (barometric pressure is measure in hPa) */ if (event.pressure) { /* Display atmospheric pressue in hPa */ Serial.print("Pressure: "); Serial.print(event.pressure); Serial.println(" hPa"); /* Calculating altitude with reasonable accuracy requires pressure * * sea level pressure for your position at the moment the data is * * converted, as well as the ambient temperature in degress * * celcius. If you don't have these values, a 'generic' value of * * 1013.25 hPa can be used (defined as SENSORS_PRESSURE_SEALEVELHPA * * in sensors.h), but this isn't ideal and will give variable * * results from one day to the next. * * * * You can usually find the current SLP value by looking at weather * * websites or from environmental information centers near any major * * airport. * * * * For example, for Paris, France you can check the current mean * * pressure and sea level at: http://bit.ly/16Au8ol */ /* First we get the current temperature from the BMP085 */ float temperature; bmp.getTemperature(&temperature); Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" C");

/* Then convert the atmospheric pressure, and SLP to altitude */ /* Update this next line with the current SLP for better results */ float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; Serial.print("Altitude: "); Serial.print(bmp.pressureToAltitude(seaLevelPressure, event.pressure)); Serial.println(" m"); Serial.println("");

lcd.setCursor(5,0); lcd.print(temperature); lcd.print((char)223); lcd.print("C ");

// subtract the last reading: total = total - readings[readIndex]; // read from the sensor: readings[readIndex] = event.pressure; // add the reading to the total: total = total + readings[readIndex]; // advance to the next position in the array: readIndex = readIndex + 1;

// if we're at the end of the array... if (readIndex >= numReadings) { // ...wrap around to the beginning: readIndex = 0; }

// calculate the average: average = total / numReadings;

delay(1); lcd.setCursor(5,1); lcd.print(average); // print average pressure lcd.print("hPa"); } else { Serial.println("Sensor error"); } delay(0); }

Step 8: You Are Ready

your truth finder should now be displaying the temperature and pressure when powered on

Step 9: Finding Likely Truth Locations

In order to be more efficient with your searching, I would recommend scouting out potential places before venturing out. Google earth is a very useful tool to help you do this. You can set placemarkers at the true altitude and see where they intersect with building and landmarks.



Step 10: Go Out and Look

Now you are aware of the approximate locations, go visit these places with the truth finder and see how close you can get to the truth. Good Luck!

Microcontroller Contest 2017

Participated in the
Microcontroller Contest 2017