max6675 не работает без delay(200); тормозит сервак

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

void setup() 
{
    Serial.begin(9600);
 delay(200);// - минимум 200-300 поигрался
}


void loop() 
{
   Serial.print(" C = ");
   Serial.println(thermocouple.readCelsius());
   Serial.println();
 delay(200);
    }
}

кнопки на андройде тормозят из-за него пол секунды, пробовал и так 

if (foo2.Now()) { 
   // current temperature readout
   Serial.print("Deg C = ");
   Serial.println(thermocouple.readCelsius());
   Serial.println();
    }

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

У MAX6675 максимальное время конверсии 220мс, поэтому без таких пауз между считываниями метрики он не будет работать by design.

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

200 мало, минимум 220 надо ставить.

Так Вы не пользуйтесь delay, а сделайте это через millis. Никто не будет тормозить.

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

только что решил проблему при шлось ему переменную воткнуть чтобы хранило значение, типо когда дуньку включаеш ноль а потом уже норм, типо он каждый раз инициализируеться

if (foo.Now()) {
 tr=thermocouple.readCelsius();
// delay(500);
 }