08-01-2020, 17:26
Dzięki jednemu z kolegów na forum zacząłem przygodę z arduino. Mam pierwsze moje wypociny jednak napotkałem na jakiś błąd który mi wyświetla jak weryfikuje cały kod i nie wiem co jest nie tak. Proszę o pomoc.
Błąd (expected unqualified-id before 'if') wyświetla mi pod koniec w linijce:
if (sensors.getTempCByIndex(TH2) <= T1 - H1 || sensors.getTempCByIndex(TH1) <= T2 - H3) {
Błąd (expected unqualified-id before 'if') wyświetla mi pod koniec w linijce:
if (sensors.getTempCByIndex(TH2) <= T1 - H1 || sensors.getTempCByIndex(TH1) <= T2 - H3) {
Kod:
// Include the libraries we need
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 and 3 on the Arduino
#define TH1 2
#define TH2 3
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(TH1&&TH2);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
int przekaznik1 = 8; // zmienna o nazwie przekaźnik1 na pinie 8
int przekaznik2 = 9; // zmienna o nazwie przekaźnik2 na pinie 9
int T1 = 55; // zmienna o nazwie T1 (max temp bojl)
int T2 = 40; // zmienna o nazwie T2 (temp zał podł)
int T3 = 75; // max temperatura TH1 powyżej której elektrozawór się otworzy
int T4 = 25; // min temperatura TH2 przy której elektrozawór się otworzy
int H1 = 5; // zmienna o nazwie H1 (hist wył bojl i podł)
int H2 = 8; // zmienna o nazwie H2 (hist)
int H3 = 5; // zmienna o nazwie H3 (hist wył podł)
/*
The setup function. We only start the sensors here
*/
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Termostat 1.0");
// Start up the library
sensors.begin();
pinMode(przekaznik1, OUTPUT); //pin o nazwie przekaźnik1 ustawiony jako wyjście
pinMode(przekaznik2, OUTPUT); //pin o nazwie przekaźnik2 ustawiony jako wyjście
digitalWrite(przekaznik1, LOW); //pin o nazwie przekaźnik1 ustawiony na stan niski
digitalWrite(przekaznik2, LOW); //pin o nazwie przekaźnik2 ustawiony na stan niski
}
/*
Main function, get and show the temperature
*/
void loop()
{
sensors.requestTemperatures(); // wysyła polecenie żeby otrzymać temperaturę
while (sensors.getTempCByIndex(TH1) < 0 || sensors.getTempCByIndex(TH1) > 100 || sensors.getTempCByIndex(TH2) < 0 || sensors.getTempCByIndex(TH2) > 100) {
sensors.requestTemperatures(); // wysyła polecenie żeby otrzymać temperaturę
digitalWrite(przekaznik1, LOW);
digitalWrite(przekaznik2, LOW);
if (sensors.getTempCByIndex(TH1) < 0 || sensors.getTempCByIndex(TH1) > 80)
Serial.println("błąd czujnika 1"); //pokazuje na monitorze
if (sensors.getTempCByIndex(TH2) < 0 || sensors.getTempCByIndex(TH2) > 80)
Serial.println("błąd czujnika 2"); //pokazuje na monitorze
}
// Używamy funkcji ByIndex, i pokazujemy temperaturę tylko w tym przypadku z jednego czujnika
Serial.print("Temperatura na czujniku TH1 to: ");
Serial.println(sensors.getTempCByIndex(TH1));
Serial.print("Temperatura na czujniku TH2 to: ");
Serial.println(sensors.getTempCByIndex(TH2));
/*
działanie przekaźnika 1:
*/
if (sensors.getTempCByIndex(TH1) < T3 || sensors.getTempCByIndex(TH2) > T4) { // warunek aby wykonać wykonać dalszy program program związany z przekaźnikiem 1
if (sensors.getTempCByIndex(TH2) >= T1 || sensors.getTempCByIndex(TH1) <= sensors.getTempCByIndex(TH2)) { //jeśli wartość temperatury z czujnika 2 jest większa lub równa niż T1 lub jeśli temperatura z czujnika 1 jest mniejsza lub równa niż z czujnika 2
digitalWrite(przekaznik1, HIGH);
}
if (sensors.getTempCByIndex(TH2) <= T1 - H1 || sensors.getTempCByIndex(TH1) >= sensors.getTempCByIndex(TH2) + H2) { //jeśli wartość temperatury z czujnika 2 jest mniejsza lub równa niż T1-H1 || jeśli temperatura z czujnika 1 jest większa lub równa niż z czujnika 2+H2
digitalWrite(przekaznik1, LOW);
}
}
else {
digitalWrite(przekaznik1, LOW);
}
}
/*
działanie przekaźnika 2:
*/
if (sensors.getTempCByIndex(TH2) >= T1 && sensors.getTempCByIndex(TH1) >= T2) { //jeśli wartość temperatury z czujnika 2 jest większa lub równa niż T1 i jednocześnie jeśli temperatura z czujnika 1 jest większa lub równa T2
digitalWrite(przekaznik2, HIGH);
}
if (sensors.getTempCByIndex(TH2) <= T1 - H1 || sensors.getTempCByIndex(TH1) <= T2 - H3) { //jeśli wartość temperatury z czujnika 2 jest mniejsza lub równa niż T1-H1 lub jeśli temperatura z czujnika 1 jest mniejsza lub równa T2-H3
digitalWrite(przekaznik2, LOW);
}
}