Hey! so iv been having a problem where when I use a USB connected to my laptop, my Temperature in serial monitor is fine but when I use a 9v battery, the temperature starts to spike randomly which messes my code up because It depends on the temperature sensor being right.
Temperature Sensor = TMP36
/*
Bio Innovation Project
Heat Pad Made For Tendinitis In the Knee
By: Amish
*/
int led1 = 4; //green led is digital pin 4
int led2 = 5; //red led is digital pin 5
int fet = 3; //mosfet is digital pin 3
const int HeatOn = 255; // heat pad turns on at 100%
const int HeatOff = 0; //heat pad turns off
int val; //Create an integer variable
int OverTemp = 184; // Heat Pad is over recommended temp = 40 degress C
void setup()
{
pinMode(fet, OUTPUT); //mosfet digital pin is OUTPUT
pinMode(led1, OUTPUT);//led1 digital pin is OUTPUT
pinMode(led2, OUTPUT);//led2 digital pin is OUTPUT
Serial.begin(9600); //start serial
digitalWrite(led2, HIGH); //turn the red led on
}
void loop()
{
////////////////////// Showing Voltage and Celcius in Serial Monitor //////////////////////
val=analogRead(0); //Read the analog port 0 and store the value in val
delay(1000); //Wait one second before we do it again
float voltage = val * 5.0 / 1024; // converting val's reading to voltage
// print out the temperature
float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
//to degrees ((volatge - 500mV) times 100)
Serial.print(temperatureC); Serial.println(" degress C");
delay(1000);
///////////////////// Bluetooth Wireless /////////////////////
int blthState = Serial.read(); // Reads the data from the serial port
/////////////////// 100% HEAT ////////////////
if (blthState == '0') {
digitalWrite(led1, LOW);// Turn LED OFF
digitalWrite(led2, HIGH); // Turn LED ON
analogWrite(fet, HeatOff); //Turn Heat Pad Off
Serial.println("Heat Pad: OFF");
blthState = 0; //change blthState back to 0
}
else if (blthState == '1') {
digitalWrite(led1, HIGH);//Turn LED ON
digitalWrite(led2, LOW); //Turn LED OFF
analogWrite(fet, HeatOff); //Turn Heat Pad Off
Serial.println("Heat Pad: ON");
blthState = 0; //turn blthState back to 0
}
//------------\\ Saftey System //-----------//
if (val >= OverTemp) { //if temperature is over 40 degrees Ceclius
digitalWrite(led1, LOW);
Serial.println("Heat Pad: OVERHEATING");
delay(1000); //delay for 1 second
analogWrite(fet, HeatOff); //Turn Heat Pad Off
digitalWrite(led2, LOW);
delay(1000);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
delay(1000);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
delay(1000);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
delay(1000);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
delay(1000);
digitalWrite(led2, HIGH);
delay(1000);
//tell the red led to blink 10 times when the temperature is overheating
blthState= 0;
}
}