Sorry....this is all of the code:
/*
* BBQControl.c
*
* Created: 8/7/2011 12:34:32 PM
* Author: Saleem and Leslie
*/
#define LCD_Command_A 0x7C
#define LCD_Command_B 0xFE
#define LCD_Clear_Screen 0x01
#define LCD_Cursor_Position(a) {Serial.print(LCD_Command_B,BYTE); Serial.print(a+128,BYTE);}
#define chipSelect 10
#include <math.h>
#include <stdint.h>
#include <PID_v1.h>
#include <stdio.h>
//PID Variables
double Input = 0; //Our Current Temperature
double Output = 0; //Our Control Variable
double Setpoint = 0; //Our Setpoint
double Kp = 10; //Proportional
double Ki = .1; //Integral
double Kd = 50; //Derivative
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
void setup()
{
pinMode(A0,INPUT);
Serial.begin(9600);
myPID.SetMode(AUTOMATIC);
}
uint32_t count;
void loop()
{
uint16_t ADCVal;
uint16_t temperature;
//String dataString = "";
ADCVal = analogRead(A0);
temperature = (get_temperature(ADCVal));
for(int i = 0;i<98;i++)
{
ADCVal = analogRead(A0);
temperature += (get_temperature(ADCVal));
}
temperature = temperature/100;
Serial.println(temperature);
Input = (double)temperature;
myPID.Compute();
Serial.println(Input);
Serial.println(Output);
if(Serial.available())
{
receive_serial();
}
delay(1000);
}
void receive_serial()
{
int i = Serial.available();
delay(10);
//wait to make sure that all bytes have been received
while(i != Serial.available())
{
i = Serial.available();
delay(10);
}
char myString[Serial.available()];
while(Serial.available())
{
int j = 0;
myString[j] = Serial.read();
++j;
}
Serial.print(myString);
}
void get_parameters(uint16_t ADCvalue, uint16_t *beta, float *r_infinity)
{
if (ADCvalue < 15) {*beta = 5191; *r_infinity=0.07028;}
else if (ADCvalue <= 39) {*beta = 5085; *r_infinity=0.08597;}
else if (ADCvalue <= 158) {*beta = 4942; *r_infinity=0.11637;}
else if (ADCvalue <= 530) {*beta = 4767; *r_infinity=0.17766;}
else if (ADCvalue <= 577) {*beta = 4671; *r_infinity=0.23249;}
else if (ADCvalue <= 670) {*beta = 4641; *r_infinity=0.25289;}
else if (ADCvalue <= 757) {*beta = 4604; *r_infinity=0.28168;}
else if (ADCvalue <= 832) {*beta = 4566; *r_infinity=0.31618;}
else if (ADCvalue <= 892) {*beta = 4526; *r_infinity=0.35779;}
else if (ADCvalue <= 938) {*beta = 4485; *r_infinity=0.40755;}
else if (ADCvalue <= 1023){*beta = 4453; *r_infinity=0.45243;}
return;
}
//*************Hardware SetUp***************
//
// ADC Input
// |
// Rpad | Rtherm
// Vcc--------/\/\/\------/\/\/\------ground
//
//******************************************
float get_temperature(uint16_t ADCVal){
//temperature in kelvin = beta/ln(R/Rinfinity)
uint16_t beta = 0;
uint8_t servo_command;
float Ri = 0;
float Rpad = 100000;
float Rtherm = Rpad/(1-((float)ADCVal/1024.0)) - 100000;
float Temperature;
float t;
get_parameters(ADCVal, &beta, &Ri);
t=beta/log(Rtherm/Ri);
t = ((9.0/5.0)*(t-273))+32;
Temperature = t;
//Out to LCD
//LCD_Cursor_Position(72);
//Serial.print(ADCVal);
//Serial.print(" ");
//LCD_Cursor_Position(28);
//Serial.print(beta);
//Serial.print(" ");
//LCD_Cursor_Position(8);
return Temperature;
}