Скетч из последнего поста не содержит управления 3-м приводом, остальные должны работать. Связи между нагревом и скетчем я не вижу. Возможно неправильно подключены приводы.

Минусом всей этой схемы является то, что обязательно надо проверять направление.
То есть, если пишем, например,
PHP код:
if (analogRead(val2)<max_2)digitalWrite(m2_r,HIGH);
else 
digitalWrite(m2_r,LOW); 
, необходимо обязательно поверить, что при m2_r,HIGH значение АЦП увеличивается, а не уменьшается! Иначе analogRead(val2) всегда будет <max_2, и привод упрется, но будет продолжать крутить.

Чтобы прописать заслонку температуры необходимо знать АЦП в крайних положениях и, главное, как ее положение должно быть связано с температурой или каким-либо другим параметром. Скорее всего эта зависимость подбирается по месту на конкретной заслонке.
Вот пока вариант с управлением заслонкой джойстиком. ЖК отключен.
Предположительно с экраном проблема. Библиотека то не под мегу переписана.
Как подключен ЖК? Есть схема? Регистр применяется? На меге без регистра лучше даже. Это вынужденная мера была для экономии ног.
PHP код:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <EEPROM.h>

int address 0;

#define ONE_WIRE_BUS 50 //датчики на 50 ноге
#define TEMPERATURE_PRECISION 9

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

uint8_t Thermometer0[8], Thermometer1[8], Thermometer2[8], Thermometer3[8];//адреса датчиков
float temp0temp1temp2temp3temp_s=25;//t0 - двигатель, t1 - воздуховод, t2 - улица, t3 - салон, temp_s - заданая
byte bytes[8];
int err0err1err2err3;
int error=0;
int vent_set=0;

#define m1_l  39 //первый влево 
#define m1_r  40 //первый вправо
#define m2_l  41 //второй влево (боковые)
#define m2_r  42 //второй вправо(стекло)
#define m3_l  43 //третий влево(заслонка горячий-холодный)
#define m3_r  44 //третий вправо(заслонка горячий-холодный)
#define en  38 //enable
#define JOY 1 //АЦП джойстик
#define val2 5 //АЦП второго мотора
#define val1 6 //АЦП первого мотора
#define val3 7 //АЦП третьего мотора
#define vent 31 //ШИМ вентилятора

int res_dt1;//джойстик
int min_3 115//(заслонка горячий-холодный)
int max_3 950//(заслонка горячий-холодный)
int min_2 185//боковые
int max_2 450//стекло
int centr_1 310//среднее первый
int min_1 310//ноги
int max_1 490//ноги закрыто
int centr_2 370//среднее второй
int vent_s=3;
int vent_speed=3;
int t=5f=0;
int flow=5;
unsigned long time;


void setup(void)
{
  
pinMode(m1_l,OUTPUT); 
  
pinMode(m1_r,OUTPUT);
  
pinMode(m2_l,OUTPUT); 
  
pinMode(m2_r,OUTPUT);
  
pinMode(m3_l,OUTPUT);
  
pinMode(m3_r,OUTPUT);
  
pinMode(en,OUTPUT);
  
pinMode(vent,OUTPUT);
  
digitalWrite(m1_l,LOW);
  
digitalWrite(m1_r,LOW);
  
digitalWrite(m2_l,LOW);
  
digitalWrite(m2_r,LOW);
  
digitalWrite(m3_l,LOW);
  
digitalWrite(m3_r,LOW);
  
digitalWrite(en,HIGH);
  
digitalWrite(vent,LOW );
  
sensors.begin();
  
Serial.begin(115200);
  
TCCR2B TCCR2B 0b11111000 0x04;

  
//devices=sensors.getDeviceCount();//считаем сколько датчиков подключено  

  
if (!sensors.getAddress(Thermometer00)) err0=1;//ошибка. нет датчика 0 - двигатель
  
if (!sensors.getAddress(Thermometer11)) err1=1;//ошибка. нет датчика 1 - воздуховод
  
if (!sensors.getAddress(Thermometer22)) err2=1;//ошибка. нет датчика 2 - улица
  
if (!sensors.getAddress(Thermometer33)) err3=1;//ошибка. нет датчика 3 - салон

  
sensors.setResolution(Thermometer09);
  
sensors.setResolution(Thermometer19);
  
sensors.setResolution(Thermometer29);
  
sensors.setResolution(Thermometer39);

  
temp_s EEPROM.read(address);//читаем заданую температуру из еепром
  
bytes[0] = 0xFF
  
bytes[1] = temp_s;
  
bytes[2] = flow;
  
bytes[3] = 0;
  
Serial.writebytes,4);//отправляем ее в комп 
}

void loop(void)

  
res_dt1 analogRead(JOY); // прочитать данные АЦП
  /*
   bytes[0] = analogRead(val1) & 255;
   bytes[1] = (analogRead(val1) & 768) >> 8;
   bytes[2] = analogRead(val2) & 255;
   bytes[3] = (analogRead(val2) & 768) >> 8;
   bytes[4] = analogRead(val3) & 255;
   bytes[5] = (analogRead(val3) & 768) >> 8;
   Serial.write( bytes,6);//отправляем в комп 
  */
  
byte ab
  if (
Serial.available() > 1)
  { 
    
Serial.read();  
    
Serial.read();
    if(
a==0x64)temp_s=b;
    if(
a==0xFF)f=b;
    if(
a==0x78)vent_s=b*10;
  }

  
analogWrite(ventvent_s);//вентилятор
  
buttons();
  if ((
millis()-time)>500 && res_dt1 == 1023//запуск процедур по таймеру
  
{    
    
time millis();
    
termometer();
  }
  
motors();
  
vent_speed=vent_s/17
}

void termometer()
{
  
sensors.requestTemperatures();
  
temp0 sensors.getTempC(Thermometer0);
  
temp1 sensors.getTempC(Thermometer1);
  
temp2 sensors.getTempC(Thermometer2);
  
temp3 sensors.getTempC(Thermometer3);

  
bytes[0] = 0x64//префикс
  
bytes[1] = temp3+40//салон
  
bytes[2] = 0;
  
bytes[3] = temp2+40//улица
  
Serial.writebytes,4);
}
 
 
void motors()
{
  if(
flow==0)//стекло
  
{
    if (
analogRead(val2)<max_2)digitalWrite(m2_r,HIGH);
    else 
digitalWrite(m2_r,LOW);
    if (
analogRead(val1)<max_1)digitalWrite(m1_l,HIGH);
    else 
digitalWrite(m1_l,LOW);
  }

  if(
flow==1)//в ноги
  
{
    if (
analogRead(val1)>min_1)digitalWrite(m1_r,HIGH);
    else 
digitalWrite(m1_r,LOW);
  }
  if(
flow==2)//боковые
  
{
    if (
analogRead(val2)>min_2)digitalWrite(m2_l,HIGH);
    else 
digitalWrite(m2_l,LOW);
    if (
analogRead(val1)<max_1)digitalWrite(m1_l,HIGH);
    else 
digitalWrite(m1_l,LOW);
  }
  if(
flow==3)//стекло и ноги 
  
{
    if (
analogRead(val2)<max_2)digitalWrite(m2_r,HIGH);
    else 
digitalWrite(m2_r,LOW);
    if (
analogRead(val1)>min_1)digitalWrite(m1_r,HIGH);
    else 
digitalWrite(m1_r,LOW);
  }
}

void buttons()

  
  if(
res_dt1>=176 && res_dt1<=186)//кнопка SOURCE
  
{
    
EEPROM.write(addresstemp_s);//пишем в еепром temp_set
    
delay(500);
  }
  
  if(
res_dt1>=715 && res_dt1<=725)//temp_s++. кнопка VOL UP
  
{
    
digitalWrite(m3_r,HIGH); 
  }
  else 
digitalWrite(m3_r,LOW);
    
  if(
res_dt1>=635 && res_dt1<=645)//temp_s--. кнопка VOL DOWN
  
{
    
digitalWrite(m3_l,HIGH);
  }
  else 
digitalWrite(m3_l,LOW);
  
  
  if(
res_dt1>=556 && res_dt1<=566)//vent_s ++. кнопка TRACK UP
  
{
    
vent_s=vent_s+10;
    
delay(30);
    if(
vent_s 250)vent_s=255;
    
bytes[0] = 0xC8//префикс
    
bytes[1] = vent_s/10;
    
bytes[2] = 0;
    
bytes[3] = 0;
    
Serial.writebytes,4);
    
delay(80);
  }

  if(
res_dt1>=475 && res_dt1<=485)//vent_s --. кнопка TRACK DOWN
  
{
    
vent_s=vent_s-10;
    
delay(30);
    if(
vent_s <=0)vent_s=0;
    
bytes[0] = 0xC8//префикс
    
bytes[1] = vent_s/10;
    
bytes[2] = 0;
    
bytes[3] = 0;
    
Serial.writebytes,4);
    
delay(80);
  }

  if((
res_dt1>=843 && res_dt1<=853) || f==0)// на стекло. кнопка MODE
  
{
    
flow=0;
    
f=5;
    
bytes[0] = 0x4B;
    
bytes[1] = flow;
    
bytes[2] = 0;
    
bytes[3] = 0
    
Serial.writebytes,4);
    
delay(80);
  }

  if((
res_dt1>=401 && res_dt1<=411) || f==1)//в ноги. кнопка FILE
  
{
    
flow=1;
    
f=5;
    
bytes[0] = 0x4B;
    
bytes[1] = flow;
    
bytes[2] = 0;
    
bytes[3] = 0
    
Serial.writebytes,4);
    
delay(80);
  }

  if((
res_dt1>=784 && res_dt1<=794) || f==2)//боковые. кнопка SEL
  
{
    
flow=2;
    
f=5;
    
bytes[0] = 0x4B;
    
bytes[1] = flow;
    
bytes[2] = 0;
    
bytes[3] = 0
    
Serial.writebytes,4);
    
delay(80);
  }

  if((
res_dt1>=307 && res_dt1<=327) || f==3)//на стекло и в ноги. кнопка ATT
  
{
    
flow=3;
    
f=5;
    
bytes[0] = 0x4B;
    
bytes[1] = flow
    
bytes[2] = 0;
    
bytes[3] = 0;
    
Serial.writebytes,4);
    
delay(80);
  }