HEATER not turning on

Hello all,

I for some reason the variable heater is not turning on anymore with the code. I have tried setting HEATER output to high at the beginning to try and see what happens and it works. It seems like there is a problem with the output I guess.

// SERIAL

#include <SoftwareSerial.h>

const byte rx = 15 ;
const byte tx = 14 ;

SoftwareSerial myserial(rx, tx);

// PID

#include <PID_v1.h>

// HEATING PID

double Setpoint, Input, Output ;

double Kp = 1, Ki = 0, Kd = 20 ;

PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT) ;

// DHT


#include "DHT.h"
#define DHT0PIN 2 // Inside
#define DHT1PIN 4 // Outside
#define DHT2PIN 7 // Outside
#define DHT3PIN 8 // Outside
#define DHT4PIN 9 // On heating element

#define DHT0TYPE DHT22
#define DHT1TYPE DHT22
#define DHT2TYPE DHT22
#define DHT3TYPE DHT22
#define DHT4TYPE DHT22

DHT dht0(DHT0PIN, DHT0TYPE) ;
DHT dht1(DHT1PIN, DHT1TYPE) ;
DHT dht2(DHT2PIN, DHT2TYPE) ;
DHT dht3(DHT3PIN, DHT3TYPE) ;
DHT dht4(DHT4PIN, DHT4TYPE) ;

// MILLIS

unsigned long previousTime = 0 ;
unsigned long interval = 10000 ;

// Heater

const int SWARM = 5; // SWARM PIN

const int HEATER = 6 ; // HEATER PIN

// GSM

const int GSM_ON = 12 ;

void setup() {
  
  pinMode(GSM_ON, OUTPUT) ;
  digitalWrite(GSM_ON, HIGH) ;
  delay(15000) ;
  
  pinMode(SWARM, OUTPUT) ; // Set heater as output
  digitalWrite(SWARM, LOW) ; // Initial stage to heater OFF

  pinMode(HEATER, OUTPUT) ; // Set heating as output
  digitalWrite(HEATER, LOW) ; // Initial stage to heater OFF

    
  myserial.begin(115200) ; //Initialize virtual serial port
  Serial.begin(115200) ; //Initialize Arduino default serial port
  while(!Serial) ;
  
  gsm_setup() ;
  label() ;
  dht_begin() ;
  dht_init() ;

    //turn the PID on
  myPID.SetMode(AUTOMATIC);
  
  Input = 9 ;
  Setpoint = 36 ;

//      analogWrite(SWARM, 26) ;


}

void loop() {
  DHTread() ;

    analogWrite(SWARM, 26) ;

    float t0 = dht0.readTemperature() ;
    float h0 = dht0.readHumidity() ;
    float f0 = dht0.readTemperature(false) ;

    float t1 = dht1.readTemperature() ;
    float h1 = dht1.readHumidity() ;
    float f1 = dht1.readTemperature(false) ;

    float t2 = dht2.readTemperature() ;
    float h2 = dht2.readHumidity() ;
    float f2 = dht2.readTemperature(false) ;

    float t3 = dht3.readTemperature() ;
    float h3 = dht3.readHumidity() ;
    float f3 = dht3.readTemperature(false) ;
  
//  float outside = ( t1 + t2 + t3 ) / 3 ;

  Input = 9 ;
  myPID.Compute() ;

}

void sendMessage(String input) {
    int stringLength = input.length() + 2;
    String sendConfig = "AT+CIPSEND=0,";
    sendConfig += stringLength;
    myserial.println(sendConfig);
    String sendConfigDebug = sendConfig + "\r\n";
    Serial.write(sendConfigDebug.c_str());
    delay(200) ;
    myserial.println(input + "\n") ; // Send Message
    delay(1000) ;
}


void gsm_setup() {

    myserial.println("ECHO") ; // Removes ECHO
    delay(500) ;
    myserial.println("AT+CPIN=0000") ; // Entres SIM PIN No
    delay(5000) ;
    myserial.println("AT+CGDCONT=1,\"IP\",\"orange\"") ; // Connect to ORANGE APN
    delay(5000) ;
    myserial.println("AT+NETOPEN") ; // Opens network
    delay(1000) ;
    myserial.println("AT+CIPOPEN=0,\"TCP\",\"172.111.250.41\",666") ; // Connect to VPN TCP Server
    delay(3000) ;
    
    sendMessage("BEEHIVE 1 RIOU GLASS");

    myserial.println("AT+CIPSEND=0,1") ; // Send 5 characters
    delay(500) ;
    myserial.println() ; // Send new line
    delay(500) ;
    myserial.println("AT+CIPSEND=0,1") ; // Send 5 characters
    delay(500) ;
    myserial.println() ; // Send new line
    delay(500) ;
    //myserial.println("0x1a") ; // Ctrl + Z to send message
    //delay(500) ;
    
}

void singleDHTread(DHT dht, String label) {
    float t = dht.readTemperature() ;
    float h = dht.readHumidity() ;
    float f = dht.readTemperature(true) ;
    String dhtString = label;
    dhtString += ": ";
    dhtString += t;
//    dhtString += "C humidity: ";
//    dhtString += h;
//    dhtString += " ";
//    dhtString += f;
//    dhtString += "F";

    sendMessage(dhtString);
}

void DHTread () {
  
  unsigned long currentTime = millis() ;
  Serial.write("Start of DHTread():\n");
  //float t0 = dht0.readTemperature() ;
  //float h0 = dht0.readHumidity() ;
  //float f0 = dht0.readTemperature(true) ;


  Serial.write("read the t0 h0 f0 values...\n");
  float t1 = dht1.readTemperature() ;
  float h1 = dht1.readHumidity() ;
  float f1 = dht1.readTemperature(false) ;

  float t2 = dht2.readTemperature() ;
  float h2 = dht2.readHumidity() ;
  float f2 = dht2.readTemperature(false) ;

  float t3 = dht3.readTemperature() ;
  float h3 = dht3.readHumidity() ;
  float f3 = dht3.readTemperature(false) ;

  float outside = ( t1 + t2 + t3 ) / 3 ;

  float outsidehum = ( h1 + h2 + h3 ) / 3 ;

  if ( currentTime - previousTime >= interval ) {
// \r\n CR + LF   
    //String dht0string = "DHT0: ";
    //dht0string += t0;
    //dht0string += "C humidity: ";
   //dht0string += h0;
    //dht0string += " ";
   // dht0string += f0;
  //  dht0string += "F";

  //  sendMessage(dht0string);

     singleDHTread(dht0, "DHT0 sensor values");
     singleDHTread(dht1, "DHT1 sensor values");
     singleDHTread(dht2, "DHT2 sensor values");
     singleDHTread(dht3, "DHT3 sensor values");
     singleDHTread(dht4, "DHT4 sensor values");
    //myserial.println("AT+CIPSEND=0,9") ;
    //delay(500) ;
    //myserial.println("HELLO\r\n") ;
    Serial.write("I just came to say HELLO.\n");
    
    //delay(500) ;
    //myserial.println("AT+CIPSEND=0,1") ;
    //delay(500) ;
    //myserial.println() ;
    //delay(500) ;
    //myserial.println("0x1a") ; // Ctlr + Z to send message
    //delay(500) ;
    
    Serial.write("End of DHTread():\n");
//    myserial.println("AT+CIPSEND=0,4") ;
//    delay(500) ;
//    myserial.println(t1) ;
//    delay(500) ;
//    myserial.println("AT+CIPSEND=0,1") ;
//    delay(500) ;
//    myserial.println() ;
//    delay(500) ;
//
//    myserial.println("AT+CIPSEND=0,4") ;
//    delay(500) ;
//    myserial.println(t2) ;
//    delay(500) ;
//    myserial.println("AT+CIPSEND=0,1") ;
//    delay(500) ;
//    myserial.println() ;
//    delay(500) ;
//
//    myserial.println("AT+CIPSEND=0,4") ;
//    delay(500) ;
//    myserial.println(t3) ;
//    delay(500) ;
//    myserial.println("AT+CIPSEND=0,1") ;
//    delay(500) ;
//    myserial.println() ;
//    delay(500) ;

    previousTime = currentTime ;
  }
  
}

void dht_begin() {
  dht0.begin() ;
  dht1.begin() ;
  dht2.begin() ;
  dht3.begin() ;
  dht4.begin() ;
}

void dht_init() {
  float t0 = dht0.readTemperature() ;
  float h0 = dht0.readHumidity() ;
  float f0 = dht0.readTemperature(false) ;

  float t1 = dht1.readTemperature() ;
  float h1 = dht1.readHumidity() ;
  float f1 = dht1.readTemperature(false) ;

  float t2 = dht2.readTemperature() ;
  float h2 = dht2.readHumidity() ;
  float f2 = dht2.readTemperature(false) ;

  float t3 = dht3.readTemperature() ;
  float h3 = dht3.readHumidity() ;
  float f3 = dht3.readTemperature(false) ;
}

void label() {
    //myserial.println("AT+CIPSEND=0,34") ; // Send 5 characters
    //delay(500) ;
    //myserial.println("Outside swarm         Inside swarm") ; // Send Message
    //delay(500) ;
    sendMessage("Outside swarm         Inside swarm");
    
    myserial.println("AT+CIPSEND=0,1") ; // Send 5 characters
    delay(500) ;
    myserial.println() ; // Send new line
    delay(500) ;
    myserial.println("AT+CIPSEND=0,1") ; // Send 5 characters
    delay(500) ;
    myserial.println() ; // Send new line
    delay(500) ;
    //myserial.println("0x1a") ; // Ctlr + Z to send message
   // delay(500) ;
}

Any advice would be great.

Thank you.

for some reason the variable heater is not turning on anymore with the code. problem with the output I guess.

most likely you introduced a problem with your last set of changes

i don't see the HEATER pin set to anything other than LOW

for some reason the variable heater is not turning on anymore with the code.

Whereabouts in the code do you set heater HIGH ?

Aside:
You can shrink your code by about 70% by using arrays.
Try it, you’ll like it !