 //
 // Display Temp
 //
+
+// Use Library from :
+// Adafruit BMP085 https://github.com/adafruit/Adafruit_BMP085_Unified
+// Adafruit Sensor https://github.com/adafruit/Adafruit_Sensor
+// Finite State Machine http://arduino-info.wikispaces.com/HAL-LibrariesUpdates
+// LCD : https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
+// Touch Sensor : https://github.com/arduino-libraries/CapacitiveSensor
+
 #include <VirtualWire.h>
 #include <Wire.h>
 #include <LCD.h>
 #include <LiquidCrystal_I2C.h>
 #include <CapacitiveSensor.h>
-
-#define I2C_ADDR 0x27 // <<----- Add your address here. Find it from I2C Scanner
-#define BACKLIGHT_PIN     3
-#define En_pin  2
-#define Rw_pin  1
-#define Rs_pin  0
-#define D4_pin  4
-#define D5_pin  5
-#define D6_pin  6
-#define D7_pin  7
-
-
-int rxLed = 13; // RX LED
-int rxPin = 11; // RX In
-
-LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
-
-CapacitiveSensor touch = CapacitiveSensor(2,4); 
+#include <FiniteStateMachine.h>
+#include <Adafruit_Sensor.h>
+#include <Adafruit_BMP085.h>
+
+// LCD I2C Adress
+#define I2C_ADDR 0x27
+
+// LCD Static Config
+#define BACKLIGHT_PIN 3
+#define En_pin 2
+#define Rw_pin 1
+#define Rs_pin 0
+#define D4_pin 4
+#define D5_pin 5
+#define D6_pin 6
+#define D7_pin 7
+
+#define BACKLIGHT_DURATION 10000
+
+// Pin Configuration
+#define rxLed 13
+#define rxPin 11
+#define touchCommonPin 2
+#define touchSensPin 4
+
+// Touch sensibility
+#define TOUCH_SENSIBILITY 100
+
+// Main sensor update
+#define MAIN_SENSOR_UPDATE 60000
+
+// LCD
+LiquidCrystal_I2C _lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
+
+// Touched
+CapacitiveSensor _touch = CapacitiveSensor(touchCommonPin,touchSensPin); 
+
+// Athmospheric Sensor 
+Adafruit_BMP085 _bmp = Adafruit_BMP085(1234);
 
 // Sensor RX Data
 typedef struct sensorData_t{


        for (int k=0; k < 5; k++)
        { 
          sensor.raw[k] = message[k];
        }

        Serial.print("Sensor=");

  uint8_t raw[5]; // total size of 5 bytes
};

// Main Sensor Definition
typedef struct mainSensorDef_t {
  float pressure;
  float temp;
};

// Remote Sensor Defintion
typedef struct remoteSensorDef_t {
  char * name;
  uint8_t id;
  float temp;
};

// RX message
uint8_t _message[VW_MAX_MESSAGE_LEN];

// LCD State
State _lcdHome = State(updateSensor);

// Remote Sensors
remoteSensorDef_t * _remoteSensors;

// Last Touched
unsigned long _lastTouch;

void setup() {
  // Led Setup
