// Pseudokod mikrokontrolera - przykład #include #include #include #include // Definicje pinów const int DS18B20_1_PIN = 2; const int DS18B20_2_PIN = 3; const int RT1_CS_PIN = 4; const int ACS712_PIN = A0; const int P1_PIN = 5; const int P2_PIN = 6; const int ENCODER_PIN_A = 7; const int ENCODER_PIN_B = 8; const int ENCODER_BUTTON_PIN = 9; // Inicjalizacja modułów OneWire ds18b20_1(DS18B20_1_PIN); OneWire ds18b20_2(DS18B20_2_PIN); Adafruit_PCD8544 display = Adafruit_PCD8544(10, 11, 12, 13, A1); Encoder encoder(ENCODER_PIN_A, ENCODER_PIN_B); ACS712 acs712(ACS712_PIN, ACS712_20A, 5.0); // Zmienne globalne float currentTemperature = 0.0; float targetTemperature = 30.0; int pumpStatus = 0; // 0 - wyłączona, 1 - 1. bieg, 2 - 2. bieg, 3 - 3. bieg bool pump2Status = false; void setup() { // Inicjalizacja pinów pinMode(P1_PIN, OUTPUT); pinMode(P2_PIN, OUTPUT); pinMode(ENCODER_BUTTON_PIN, INPUT_PULLUP); // Inicjalizacja wyświetlacza display.begin(); display.setContrast(50); display.display(); // Inne inicjalizacje // ... } void loop() { // Odczyt temperatury z DS18B20 float waterTemperature = readTemperature(ds18b20_1); float ambientTemperature = readTemperature(ds18b20_2); // Przeskalowanie temperatury na RT1 float scaledResistance = scaleTemperatureToResistance(waterTemperature); setResistanceOnRT1(scaledResistance); // Odczyt prądu z ACS712 float current = acs712.getCurrentAC(); // Sterowanie pompami i wyświetlanie informacji if (waterTemperature < targetTemperature) { digitalWrite(P1_PIN, HIGH); if (current > 0.19) { digitalWrite(P2_PIN, HIGH); pump2Status = true; } else { digitalWrite(P2_PIN, LOW); pump2Status = false; } } else { digitalWrite(P1_PIN, LOW); digitalWrite(P2_PIN, LOW); pump2Status = false; } display.clearDisplay(); display.setCursor(0, 0); display.print("Temp: "); display.println(waterTemperature); display.print("Target: "); display.println(targetTemperature); display.print("Pump: "); display.println(pumpStatus); display.print("Pump2: "); display.println(pump2Status); display.display(); // Obsługa enkodera i przycisku handleEncoderAndButton(); // Inne działania // ... } float readTemperature(OneWire sensor) { // Odczyt temperatury z czujnika DS18B20 // ... } float scaleTemperatureToResistance(float temperature) { // Przeliczenie temperatury na rezystancję dla RT1 // ... } void setResistanceOnRT1(float resistance) { // Ustawienie rezystancji na potencjometrze RT1 // ... } void handleEncoderAndButton() { // Obsługa enkodera i przycisku // ... }