#1 2019-09-25 22:04:20

Selen
Учасник
Зареєстрований: 2017-01-02
Повідомлень: 87

почему так много места занимает digitalWrite(1,HIGH); ?

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

и как можно это исправить?

void setup() {
    pinMode( 2, INPUT );
    pinMode(1,OUTPUT);
}
 
void loop() {
    int t = analogRead(2);
    float tr = 1023.0 / t - 1;
    tr = SERIAL_R / tr;
 
    float steinhart;
    steinhart = tr / THERMISTOR_R; // (R/Ro)
    steinhart = log(steinhart); // ln(R/Ro)
    steinhart /= B; // 1/B * ln(R/Ro)
    steinhart += 1.0 / (NOMINAL_T + 273.15); // + (1/To)
    steinhart = 1.0 / steinhart; // Invert
    steinhart -= 273.15; 
  
byte temp = byte(steinhart);


if(temp>36)
{
 // digitalWrite(1,HIGH);
}

if(temp<34)
{
  
}

}

mini_3.jpg
mini_2.jpgmini_1.jpg

Неактивний

#2 2019-09-26 06:49:05

Watchdog
Гість

Re: почему так много места занимает digitalWrite(1,HIGH); ?

Это результат оптимизации. Никак не используемая переменная temp приводит к устранению большей части вашего кода, связянного только с ней. Проследите зависимости вычислений сами и поймёте.

#3 2019-09-26 08:30:31

г0сть
Гість

Re: почему так много места занимает digitalWrite(1,HIGH); ?

Selen пише:

думал сделать простой термостат

простой термостат - выглядит примерно так https://overclockers.ru/lab/show/15938/Termoregulyator_dlya_videokarty

#4 2019-09-26 09:01:08

Kaka
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 386

Re: почему так много места занимает digitalWrite(1,HIGH); ?

Selen пише:

и как можно это исправить?

Если речь о нехватке памяти, то для начала прекратить использовать float и обходиться целыми числами.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму