I am sorry for my formatting , it is the first time i post on those forums,
However my for loops are working as intended, (as it seems..)
My problem is still the spikes coming from the readings of my temp sensor ![]()
On my serial port monitor i get something like this :
19.12
        Â
19.12
        Â
-124.0-24
        Â
19.12
        Â
19.12
        Â
19.12
        Â
19.12
        Â
19.12
I reformatted the code so its easier to read,
#include <Servo.h>
#include <OneWire.h>
int DS18S20_Pin = 3;Â Â Â Â // Set temperature sensor in pin 0
int thresholdcold = 20;Â Â // Threshold for cold temperature
int thresholdhot = 22;Â Â Â // Threshold for hot temperature
int thresholdnormal =21;Â // Threshold for normal temperature
int servocold = 175;Â Â Â Â // Angle in which servo will go to
int servohot = 0;Â Â Â Â Â // Angle in which servo will go to
int servonormal = 80;Â Â Â // Angle in which servo will go to
int previousPosition = 176;
Servo servo1;
int ServoDelay = 30;Â Â Â Â // Servo delay
OneWire ds(DS18S20_Pin);Â Â //Library for Temp sensor
int led = 13;
void setup(void)
{
 Serial.begin(9600); // Begin communicating with computer
 servo1.attach(9); // Attaches servo to specified pin
Â
 pinMode(13, OUTPUT);
}
void loop(void) {
Â
 int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
Â
 byte i;
 byte present = 0;
 byte data[12];
 byte addr[8];
 if ( !ds.search(addr)) {
  // Serial.print("No more addresses.\n");
   ds.reset_search();
   return;
 }
 //Serial.print("R=");
 for( i = 0; i < 8; i++) {
  //Serial.print(addr[i], HEX);
  Serial.print(" ");
 }
 if ( OneWire::crc8( addr, 7) != addr[7]) {
   Serial.print("CRC is not valid!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
   present = ds.reset();
   return;
 }
 ds.reset();
 ds.select(addr);
 ds.write(0x44,1);    // start conversion, with parasite power on at the end
 delay(1000);  // maybe 750ms is enough, maybe not
 // we might do a ds.depower() here, but the reset will take care of it.
 present = ds.reset();
 ds.select(addr); Â
 ds.write(0xBE);    // Read Scratchpad
 //Serial.print("P=");
 //Serial.print(present,HEX);
 Serial.print(" ");
 for ( i = 0; i < 9; i++) {     // we need 9 bytes
  data[i] = ds.read();
  //Serial.print(data[i], HEX);
  Serial.print(" ");
 }
 //Serial.print(" CRC=");
 //Serial.print( OneWire::crc8( data, 8), HEX);
 Serial.println();
Â
 LowByte = data[0];
 HighByte = data[1];
 TReading = (HighByte << 8) + LowByte;
 SignBit = TReading & 0x8000; // test most sig bit
 if (SignBit) // negative
 {
  TReading = (TReading ^ 0xffff) + 1; // 2's comp
 }
 Tc_100 = (6 * TReading) + TReading / 4;  // multiply by (100 * 0.0625) or 6.25
 Whole = Tc_100 / 100; // separate off the whole and fractional portions
 Fract = Tc_100 % 100;
 if (SignBit) // If its negative
 {
  Serial.print("-");
 }
 Serial.print(Whole);
 Serial.print(".");
 if (Fract < 10)
 {
  Serial.print("0");
 }
 Serial.print(Fract);
 Serial.print("\n");
Â
Â
 if(Whole <= thresholdcold) // If temperature is above the threshold, activate sequence
 {
Â
if (servocold != previousPosition){
Â
 for(previousPosition != 0; previousPosition < servocold; previousPosition += 1) // goes from 0 degrees to 180 degrees
 {                 // in steps of 1 degree
  servo1.write(previousPosition);       // tell servo to go to position in variable 'pos'
  delay(ServoDelay);           // waits 15ms for the servo to reach the position
 }
Â
    servo1.write(servocold);
previousPosition = servocold;
}
 }
 else if(Whole >= thresholdhot) // If temperature is above the threshold, activate sequence
 {
Â
if (servohot != previousPosition){
Â
 for(previousPosition != thresholdhot; previousPosition -= 1;) // goes from 0 degrees to 180 degrees
 {                                          // in steps of 1 degree
  servo1.write(previousPosition);       // tell servo to go to position in variable 'pos'
  delay(ServoDelay);           // waits 15ms for the servo to reach the position
 }
  servo1.write(servohot);
previousPosition = servohot;
}
   digitalWrite(led, HIGH);
 }
 else if(Whole >= thresholdnormal) // If Fract is above the threshold, activate sequence
 {
Â
if (servonormal != previousPosition){
Â
 for(previousPosition != servonormal;previousPosition > servonormal; previousPosition -= 1) // goes from 0 degrees to 180 degrees
 {                                          // in steps of 1 degree
  servo1.write(previousPosition);       // tell servo to go to position in variable 'pos'
  delay(ServoDelay);           // waits 15ms for the servo to reach the position
 }
Â
 for(previousPosition != servonormal;previousPosition < servonormal; previousPosition += 1) // goes from 0 degrees to 180 degrees
 {                                          // in steps of 1 degree
  servo1.write(previousPosition);       // tell servo to go to position in variable 'pos'
  delay(ServoDelay);           // waits 15ms for the servo to reach the position
 }
  servo1.write(servonormal);
previousPosition = servonormal;
        digitalWrite(led, LOW);
}
  Â
 }
}