<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Temperatura</title>
</head>
<body>
<script>
let minTemp = parseFloat(
prompt("Podaj minimalną temperaturę optymalną:")
);
let maxTemp = parseFloat(
prompt("Podaj maksymalną temperaturę optymalną: ")
);
function validateTemperatureInput(minTemp, maxTemp) {
if (isNaN(minTemp) || isNaN(maxTemp)) {
alert("Błąd: podane wartości nie są liczbami!");
return false;
}
if (minTemp < 0 || minTemp > 50 || maxTemp < 0 || maxTemp > 50) {
alert("Błąd: wartości muszą być w zakresie 0°C–50°C");
return false;
}
if (minTemp > maxTemp) {
alert(
"Błąd: minimalna temperatura nie może być większa od maksymalnej"
);
return false;
}
return true;
}
while (!validateTemperatureInput(minTemp, maxTemp)) {
minTemp = parseFloat(prompt("Podaj minimalną temperaturę optymalną:"));
maxTemp = parseFloat(
prompt("Podaj maksymalną temperaturę optymalną: ")
);
}
function calculateOptimalTemperature(minTemp, maxTemp) {
return (minTemp + maxTemp) / 2;
}
const optimalTemp = calculateOptimalTemperature(minTemp, maxTemp);
alert(`Optymalna temperatura wynosi: ${optimalTemp}`);
function pidAdjustment(currentTemp, optimalTemp, coefficient = 0.3) {
const difference = optimalTemp - currentTemp;
return difference * coefficient;
}
let currentTemp = 10;
console.log(`Minimalna optymalna wartość: ${minTemp}°C`);
console.log(`Maksymalna optymalna wartość: ${maxTemp}°C`);
console.log(`Optymalna optymalna wartość: ${optimalTemp}°C`);
console.log("Symulacja pracy termostatu: ");
for (let i = 1; i <= 40; i++) {
const adjustment = pidAdjustment(currentTemp, optimalTemp);
currentTemp += adjustment;
console.log(
`Pomiar ${i}: Temperatura ${currentTemp.toFixed(
2
)}°C (zmiana: ${adjustment.toFixed(2)}°C)`
);
}
console.log("Symulacja zakończona");
alert("Symulacja zakończona");
</script>
</body>
</html>