Показать сообщение отдельно
Старый 15.01.2020, 11:10   #4 (permalink)
Андрей_Ран
Member
 
Регистрация: 02.02.2012
Сообщений: 366
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 4944
По умолчанию

Попробуйте так
Код:
#include     <Wire.h>
#include     <LiquidCrystal.h>

#define tempPin            A1   // the output pin of LM35
#define fan                11       // the pin where fan is
#define led                8        // led pin
#define tempMin            30   // the temperature to start the fan
#define tempMax            70  // the maximum temperature when fan is at 100%
#define updatePeriod    500

LiquidCrystal lcd(7,6,5,4,3,2);
unsigned long lastUpdateTickCount = 0;

void setup() {
    pinMode(fan, OUTPUT);
    pinMode(led, OUTPUT);
    pinMode(tempPin, INPUT);
    lcd.begin(16,2);  
}

void loop() {  

    if (lastUpdateTickCount + updatePeriod < millis()) {
        byte fanSpeed, fanLCD;
        int temp = analogRead(tempPin) * 0.48828125;
        
        if (temp  > tempMin) {
            fanSpeed = map(temp, tempMin, max(tempMax, temp), 32, 255);
            analogWrite(fan, fanSpeed);
        } else 
            digitalWrite(fan, LOW);

        digitalWrite(led, (temp  > tempMax) ? HIGH : LOW);
        fanLCD = map(temp, tempMin, max(tempMax, temp), 0, 100);
        
        lcd.print("TEMP: " + String(temp) + "C          ");
        lcd.setCursor(0,1);
        lcd.print("FANS: " + String(fanLCD) + "%          ");
        lastUpdateTickCount = millis();
    }
 }

Может датчики нерабочие? Надо бы тестером проверить напругу на выходе.
Андрей_Ран вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070