#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
// Inicjalizacja modułów
OneWire oneWire(2); // Pin danych dla czujnika DS18B20
DallasTemperature sensors(&oneWire); // Obiekt czujnika DS18B20
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adres i rozmiar wyświetlacza LCD
int fanPin = 9; // Pin dla sterowania wentylatorem
int minTemp = 0; // Minimalna temperatura
int maxTemp = 99; // Maksymalna temperatura
byte customChar[8] ={
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000
};
// przyklad ze strony "arduinowo.pl"
byte customChar1[8] ={
B01000,
B10101,
B01011,
B00110,
B01100,
B11010,
B10101,
B00010
};
void setup() {
// Inicjalizacja czujnika DS18B20
sensors.begin();
// Inicjalizacja wentylatora
pinMode(fanPin, OUTPUT);
// Inicjalizacja wyświetlacza LCD
lcd.begin(16, 2);
lcd.print("Temp: ");
lcd.setCursor(0, 1);
lcd.print("Fan: ");
}
void loop() {
// Odczyt temperatury
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
lcd.createChar(0, customChar);
// Wyświetlanie temperatury na wyświetlaczu LCD
lcd.setCursor(6, 0);
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(13 ,0 );
lcd.write(byte( 0));
// Zwiększanie obrotów wentylatora wraz ze wzrostem temperatury
int fanSpeed = map(temperature, minTemp, maxTemp, 0, 255);
analogWrite(fanPin, fanSpeed);
lcd.createChar(1, customChar1);
// Wyświetlanie obrotów wentylatora
lcd.setCursor(5, 1);
lcd.print(fanSpeed);
lcd.print(" PWM");
lcd.setCursor(13 ,1 );
lcd.write(byte( 1));
delay(1000); // Opóźnienie 1 sekundy
}