 //Volatile Variables used by the interrupt handlers
 volatile int16_t adc_value=0;          //ADC value read by ADS1118
 volatile int16_t temperature_value=0;  //internal temp of ADS1118
+double kP=2, kI=0, kD=0;
 
 //Global Objects
 #define OLED_RESET 4
 Adafruit_SSD1306 display(OLED_RESET);  //TODO: look into this reset pin. The LCD i'm using does not have a reset pin, just PWR,GND,SDA,SCL
 
-DellPSU dell(1);   //specify the desired Arduino pin number
+DellPSU dell(DELL_PSU);   //specify the desired Arduino pin number
+double Setpoint, Input, Output;
+//Specify the links and initial tuning parameters
+PID myPID(&Input, &Output, &Setpoint,kP,kI,kD, DIRECT); //TODO: map this properly
 
 
 //----------------Setup-------------------------

    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(0,0);

  display.print(temperature_copy);
 display.print(" ");
 display.println(adc_copy);

display.display();

 delay(300); 
}



void loop(void)
{

  static long next_millis = millis()+1000; 

 //block interrupts while retreiving the temperature values.
 noInterrupts();
 int16_t adc_copy=adc_value;
