Alex vw Postat Iulie 6, 2021 Partajează Postat Iulie 6, 2021 Buna dimineata.Lucrez la o a 2 a automatizare pentru masina si la compilare am cateva erori care ma dau peste cap .Imi puteti explica unde s-a gresit ? /* * HVAC car control with Arduino * Version 1.0 * Copyright (C) 2018 Hartmut Wendt www.hwhardsoft.de * * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #include <OneWire.h> *#include <DallasTemperature.h> */ // Portkonfiguration #define REL_VENT_FRONT 5 //relay output for ventilation front #define REL_VENT_FOOT 6 //relay output for ventilation footwell area #define REL_VENT_WINDOW 7 //relay output for ventilation window #define REL_FAN_PWR 8 //relay output for fan power #define PWM_FAN_PIN 9 //PWM output for fan power #define REL_COMPRESSOR 11 //relay output for AC compressorr #define REL_HEATING 12 //relay output for heating valve #define REL_AIR_CIRCULATION 13 //relay output for air circulation #define REL_FOG_LIGHT 14 //relay output for fog light #define REL_HEATING_WINDOW_FRONT 15 //relay output for window heating front #define REL_HEATING_WINDOW_REAR 16 //relay output for window heating rear #define TEST_PIN 19 // output for sw tests #define DS18S20 #include <OneWire.h> #include <DallasTemperature.h> // OneWire DS18S20, DS18B20, DS1822 Temperature sensor DS18S20 sens_out(2); // outside temperature sensor on D2 DS18S20 sens_in_right(3); // inside right side temperature sensor on D3 DS18S20 sens_in_left(4); // inside left side temperature sensor on D4 int temp_out = 20; // measured outside temperature int temp_in_right = 20; // measured inside right side temperature int temp_in_left = 20; // measured inside left side temperature int set_in_right = 20; // setted inside right side temperature int set_in_left = 20; // setted inside left side temperature // Variables int i1; char *test; String s1; String inputString; boolean AC_ENABLED = false; int bscheduler = 0; /** Wird beim Start einmal ausgeführt */ void setup() { // set port direction pinMode(REL_VENT_FRONT, OUTPUT); pinMode(REL_VENT_FOOT, OUTPUT); pinMode(REL_VENT_WINDOW, OUTPUT); pinMode(REL_FAN_PWR, OUTPUT); pinMode(REL_COMPRESSOR, OUTPUT); pinMode(REL_HEATING, OUTPUT); pinMode(REL_AIR_CIRCULATION, OUTPUT); pinMode(REL_FOG_LIGHT, OUTPUT); pinMode(REL_HEATING_WINDOW_FRONT, OUTPUT); pinMode(REL_HEATING_WINDOW_REAR, OUTPUT); pinMode(TEST_PIN, OUTPUT); // init serial port for nextion communication. Serial.begin(9600); delay(250); // first read in of temperatures temp_out = read_temperature(sens_out); delay(100); temp_in_right = read_temperature(sens_in_right); delay(100); temp_in_left = read_temperature(sens_in_left); //pwm init Timer1.initialize(1000); // 1.000 us = 1 kHz Timer1.pwm (PWM_FAN_PIN, 0); } // ----- Main loop ----------------------------------------------------------------------------------- void loop() { // processing of incomming messages from nextion Nextion_processing(); switch(bscheduler) { // measure outside temperature case 0: temp_out = read_temperature(sens_out); // transmit outside temperature to nextion display Serial.print("ID1.val="); Serial.print(temp_out); Serial.write(0xff); Serial.write(0xff); Serial.write(0xff); break; // measure inside right temperature case 25: temp_in_right = read_temperature(sens_in_right); break; // measure inside left temperature case 50: temp_in_left = read_temperature(sens_in_left); break; // HVAC control case 75: clima_control(); break; } bscheduler++; if (bscheduler > 100) bscheduler = 0; delay(10); } // read temperature from a connected 1wire temperature sensor int read_temperature(OneWire ds) { byte i; byte present = 0; byte type_s; byte data[12]; byte addr[8]; if ( !ds.search(addr)) { ds.reset_search(); delay(250); return(97); } if (OneWire::crc8(addr, 7) != addr[7]) { return(98); } // the first ROM byte indicates which chip switch (addr[0]) { case 0x10: type_s = 1; break; case 0x28: type_s = 0; break; case 0x22: type_s = 0; break; default: return(99); } ds.reset(); ds.select(addr); ds.write(0x44, 1); // start conversion, with parasite power on at the end delay(750); present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad for ( i = 0; i < 9; i++) { data[i] = ds.read(); } // Convert the data to actual temperature int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; // 9 bit resolution default if (data[7] == 0x10) { digitalWrite(TEST_PIN, HIGH); raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms } return((int)raw / 16.0); } unsigned long StrToHex(String str, byte digits) { char ConvByte[10]; str.toCharArray(ConvByte, digits); return (unsigned long) strtol(ConvByte, NULL, 16); } // ------ receiving and processing of incomming data from nextion void Nextion_processing() { int i1; String s1; while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // add it to the inputString: inputString += inChar; if (inChar != '|') return; } int i2=inputString.indexOf("="); if (i2 > 0) { #ifdef _debug_snd Serial.print("Nextion: "); Serial.print(inputString); Serial.println(" - "); Serial.print(inputString.substring(i2-2,i2)); Serial.print("="); Serial.println(inputString[i2+1]); #endif //- id2 FOG LIGHT - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id02=1")> -1) { // FOG LIGHT on digitalWrite(REL_FOG_LIGHT, HIGH); } else if(inputString.indexOf("id02=0")> -1) { // FOG LIGHT off digitalWrite(REL_FOG_LIGHT, LOW); } //- id5 ventilation footwell + window - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id05=1")> -1) { // set ventilation to foot well & window digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, HIGH); digitalWrite(REL_VENT_WINDOW, HIGH); } else if(inputString.indexOf("id05=0")> -1) { // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id9 ventilation footwell - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id09=1")> -1) { // set ventilation to foot well digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, HIGH); digitalWrite(REL_VENT_WINDOW, LOW); } else if(inputString.indexOf("id09=0")> -1) { // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id14 ventilation front - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id14=1")> -1) { // set ventilation to front digitalWrite(REL_VENT_FRONT, HIGH); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } else if(inputString.indexOf("id14=0")> -1) { // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id22 ventilation front + footwell - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id22=1")> -1) { // set ventilation to front + foot well digitalWrite(REL_VENT_FRONT, HIGH); digitalWrite(REL_VENT_FOOT, HIGH); digitalWrite(REL_VENT_WINDOW, LOW); } else if(inputString.indexOf("id22=0")> -1) { // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id4 electrical window heating rear - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id04=1")> -1) { // window heating on digitalWrite(REL_HEATING_WINDOW_REAR, HIGH); } else if(inputString.indexOf("id04=0")> -1) { // window heating off digitalWrite(REL_HEATING_WINDOW_REAR, LOW); } //- id6 electrical window heating front - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id06=1")> -1) { // window heating on digitalWrite(REL_HEATING_WINDOW_FRONT, HIGH); } else if(inputString.indexOf("id06=0")> -1) { // window heating off digitalWrite(REL_HEATING_WINDOW_FRONT, LOW); } //- id7 air circulation - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id07=1")> -1) { // air circulation on digitalWrite(REL_AIR_CIRCULATION, HIGH); } else if(inputString.indexOf("id07=0")> -1) { //air circulation off digitalWrite(REL_AIR_CIRCULATION, LOW); } //- id10 Air Condition enabled/disabled - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id10=1")> -1) { // AC enabled AC_ENABLED = true; } else if(inputString.indexOf("id10=0")> -1) { // AC disabled AC_ENABLED = false; } //- id18 HVAC on/off - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id18=1")> -1) { // HVAC on } else if(inputString.indexOf("id18=0")> -1) { // HVAC off AC_ENABLED = false; // FAN off digitalWrite(REL_FAN_PWR, LOW); Timer1.pwm (PWM_FAN_PIN, 0); //air circulation off digitalWrite(REL_AIR_CIRCULATION, LOW); // window heating off digitalWrite(REL_HEATING_WINDOW_REAR, LOW); digitalWrite(REL_HEATING_WINDOW_FRONT, LOW); // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id13 FAN control - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id13=0")> -1) { // FAN off digitalWrite(REL_FAN_PWR, LOW); Timer1.pwm (PWM_FAN_PIN, 0); } else if(inputString.indexOf("id13=1")> -1) { // FAN level 1 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 146); } else if(inputString.indexOf("id13=2")> -1) { // FAN level 2 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 293); } else if(inputString.indexOf("id13=3")> -1) { // FAN level 3 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 439); } else if(inputString.indexOf("id13=4")> -1) { // FAN level 4 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 585); } else if(inputString.indexOf("id13=5")> -1) { // FAN level 5 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 731); } else if(inputString.indexOf("id13=6")> -1) { // FAN level 6 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 877); } else if(inputString.indexOf("id13=7")> -1) { // FAN level Max digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 1023); } //-- setted temperature right -- //------------------------------------------------------------------------------------------------ i1 = inputString.indexOf("id20="); if (i1 > -1) { set_in_right = inputString.charAt(i1 + 5) - 48; } //-- setted temperature left -- //------------------------------------------------------------------------------------------------ i1 = inputString.indexOf("id16="); if (i1 > -1) { set_in_left = inputString.charAt(i1 + 5) - 48; } } while(Serial.available()) {Serial.read();} inputString = ""; } // HVAC control void clima_control() { // cooling or heating requiredn? if (temp_out < set_in_left) { // heating digitalWrite(REL_COMPRESSOR, LOW); digitalWrite(REL_HEATING, HIGH); } else if ((temp_out > (set_in_left + 1)) && (temp_out > 15) && (AC_ENABLED == true)) { // cooling digitalWrite(REL_COMPRESSOR, HIGH); digitalWrite(REL_HEATING, LOW); } else { // temperature ok - no further action required digitalWrite(REL_COMPRESSOR, LOW); digitalWrite(REL_HEATING, LOW); } } Link spre comentariu
nico_2010 Postat Iulie 6, 2021 Partajează Postat Iulie 6, 2021 Sa le luam in ordine. In primul rand te rog sa folosesti butonul "<>"din editor pentru a introduce codul in textul mesajului. In al doilea rand, eroarea provine din modul in care (nu) ai declarat ONE_WIRE_BUS si modul in care ai trecut declaratia OneWire catre senzorul Dallas. Exemplu: #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); In codul postat de tine nu prea apare asa ceva. Studiaza cu atentie exemplele de aici: https://github.com/milesburton/Arduino-Temperature-Control-Library/tree/master/examples si incepe treptat cu sketch-urile, de la cel mai simplu la cel mai complicat, pe masura ce intelegi ce si cum. Link spre comentariu
Alex vw Postat Iulie 6, 2021 Autor Partajează Postat Iulie 6, 2021 [code] /* * HVAC car control with Arduino * Version 1.0 * Copyright (C) 2018 Hartmut Wendt www.hwhardsoft.de * * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <OneWire.h> #include <TimerOne.h> // Portkonfiguration #define REL_VENT_FRONT 5 //relay output for ventilation front #define REL_VENT_FOOT 6 //relay output for ventilation footwell area #define REL_VENT_WINDOW 7 //relay output for ventilation window #define REL_FAN_PWR 8 //relay output for fan power #define PWM_FAN_PIN 9 //PWM output for fan power #define REL_COMPRESSOR 11 //relay output for AC compressorr #define REL_HEATING 12 //relay output for heating valve #define REL_AIR_CIRCULATION 13 //relay output for air circulation #define REL_FOG_LIGHT 14 //relay output for fog light #define REL_HEATING_WINDOW_FRONT 15 //relay output for window heating front #define REL_HEATING_WINDOW_REAR 16 //relay output for window heating rear #define TEST_PIN 19 // output for sw tests // OneWire DS18S20, DS18B20, DS1822 Temperature sensor OneWire sens_out(2); // outside temperature sensor on D2 OneWire sens_in_right(3); // inside right side temperature sensor on D3 OneWire sens_in_left(4); // inside left side temperature sensor on D4 int temp_out = 20; // measured outside temperature int temp_in_right = 20; // measured inside right side temperature int temp_in_left = 20; // measured inside left side temperature int set_in_right = 20; // setted inside right side temperature int set_in_left = 20; // setted inside left side temperature // Variables int i1; char *test; String s1; String inputString; boolean AC_ENABLED = false; int bscheduler = 0; /** Wird beim Start einmal ausgeführt */ void setup() { // set port direction pinMode(REL_VENT_FRONT, OUTPUT); pinMode(REL_VENT_FOOT, OUTPUT); pinMode(REL_VENT_WINDOW, OUTPUT); pinMode(REL_FAN_PWR, OUTPUT); pinMode(REL_COMPRESSOR, OUTPUT); pinMode(REL_HEATING, OUTPUT); pinMode(REL_AIR_CIRCULATION, OUTPUT); pinMode(REL_FOG_LIGHT, OUTPUT); pinMode(REL_HEATING_WINDOW_FRONT, OUTPUT); pinMode(REL_HEATING_WINDOW_REAR, OUTPUT); pinMode(TEST_PIN, OUTPUT); // init serial port for nextion communication. Serial.begin(9600); delay(250); // first read in of temperatures temp_out = read_temperature(sens_out); delay(100); temp_in_right = read_temperature(sens_in_right); delay(100); temp_in_left = read_temperature(sens_in_left); //pwm init Timer1.initialize(1000); // 1.000 us = 1 kHz Timer1.pwm (PWM_FAN_PIN, 0); } // ----- Main loop ----------------------------------------------------------------------------------- void loop() { // processing of incomming messages from nextion Nextion_processing(); switch(bscheduler) { // measure outside temperature case 0: temp_out = read_temperature(sens_out); // transmit outside temperature to nextion display Serial.print("ID1.val="); Serial.print(temp_out); Serial.write(0xff); Serial.write(0xff); Serial.write(0xff); break; // measure inside right temperature case 25: temp_in_right = read_temperature(sens_in_right); break; // measure inside left temperature case 50: temp_in_left = read_temperature(sens_in_left); break; // HVAC control case 75: clima_control(); break; } bscheduler++; if (bscheduler > 100) bscheduler = 0; delay(10); } // read temperature from a connected 1wire temperature sensor int read_temperature(OneWire ds) { byte i; byte present = 0; byte type_s; byte data[12]; byte addr[8]; if ( !ds.search(addr)) { ds.reset_search(); delay(250); return(97); } if (OneWire::crc8(addr, 7) != addr[7]) { return(98); } // the first ROM byte indicates which chip switch (addr[0]) { case 0x10: type_s = 1; break; case 0x28: type_s = 0; break; case 0x22: type_s = 0; break; default: return(99); } ds.reset(); ds.select(addr); ds.write(0x44, 1); // start conversion, with parasite power on at the end delay(750); present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad for ( i = 0; i < 9; i++) { data[i] = ds.read(); } // Convert the data to actual temperature int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; // 9 bit resolution default if (data[7] == 0x10) { digitalWrite(TEST_PIN, HIGH); raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms } return((int)raw / 16.0); } unsigned long StrToHex(String str, byte digits) { char ConvByte[10]; str.toCharArray(ConvByte, digits); return (unsigned long) strtol(ConvByte, NULL, 16); } // ------ receiving and processing of incomming data from nextion void Nextion_processing() { int i1; String s1; while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // add it to the inputString: inputString += inChar; if (inChar != '|') return; } int i2=inputString.indexOf("="); if (i2 > 0) { #ifdef _debug_snd Serial.print("Nextion: "); Serial.print(inputString); Serial.println(" - "); Serial.print(inputString.substring(i2-2,i2)); Serial.print("="); Serial.println(inputString[i2+1]); #endif //- id2 FOG LIGHT - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id02=1")> -1) { // FOG LIGHT on digitalWrite(REL_FOG_LIGHT, HIGH); } else if(inputString.indexOf("id02=0")> -1) { // FOG LIGHT off digitalWrite(REL_FOG_LIGHT, LOW); } //- id5 ventilation footwell + window - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id05=1")> -1) { // set ventilation to foot well & window digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, HIGH); digitalWrite(REL_VENT_WINDOW, HIGH); } else if(inputString.indexOf("id05=0")> -1) { // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id9 ventilation footwell - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id09=1")> -1) { // set ventilation to foot well digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, HIGH); digitalWrite(REL_VENT_WINDOW, LOW); } else if(inputString.indexOf("id09=0")> -1) { // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id14 ventilation front - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id14=1")> -1) { // set ventilation to front digitalWrite(REL_VENT_FRONT, HIGH); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } else if(inputString.indexOf("id14=0")> -1) { // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id22 ventilation front + footwell - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id22=1")> -1) { // set ventilation to front + foot well digitalWrite(REL_VENT_FRONT, HIGH); digitalWrite(REL_VENT_FOOT, HIGH); digitalWrite(REL_VENT_WINDOW, LOW); } else if(inputString.indexOf("id22=0")> -1) { // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id4 electrical window heating rear - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id04=1")> -1) { // window heating on digitalWrite(REL_HEATING_WINDOW_REAR, HIGH); } else if(inputString.indexOf("id04=0")> -1) { // window heating off digitalWrite(REL_HEATING_WINDOW_REAR, LOW); } //- id6 electrical window heating front - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id06=1")> -1) { // window heating on digitalWrite(REL_HEATING_WINDOW_FRONT, HIGH); } else if(inputString.indexOf("id06=0")> -1) { // window heating off digitalWrite(REL_HEATING_WINDOW_FRONT, LOW); } //- id7 air circulation - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id07=1")> -1) { // air circulation on digitalWrite(REL_AIR_CIRCULATION, HIGH); } else if(inputString.indexOf("id07=0")> -1) { //air circulation off digitalWrite(REL_AIR_CIRCULATION, LOW); } //- id10 Air Condition enabled/disabled - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id10=1")> -1) { // AC enabled AC_ENABLED = true; } else if(inputString.indexOf("id10=0")> -1) { // AC disabled AC_ENABLED = false; } //- id18 HVAC on/off - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id18=1")> -1) { // HVAC on } else if(inputString.indexOf("id18=0")> -1) { // HVAC off AC_ENABLED = false; // FAN off digitalWrite(REL_FAN_PWR, LOW); Timer1.pwm (PWM_FAN_PIN, 0); //air circulation off digitalWrite(REL_AIR_CIRCULATION, LOW); // window heating off digitalWrite(REL_HEATING_WINDOW_REAR, LOW); digitalWrite(REL_HEATING_WINDOW_FRONT, LOW); // switch all ventilation off digitalWrite(REL_VENT_FRONT, LOW); digitalWrite(REL_VENT_FOOT, LOW); digitalWrite(REL_VENT_WINDOW, LOW); } //- id13 FAN control - //------------------------------------------------------------------------------------------------ if (inputString.indexOf("id13=0")> -1) { // FAN off digitalWrite(REL_FAN_PWR, LOW); Timer1.pwm (PWM_FAN_PIN, 0); } else if(inputString.indexOf("id13=1")> -1) { // FAN level 1 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 146); } else if(inputString.indexOf("id13=2")> -1) { // FAN level 2 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 293); } else if(inputString.indexOf("id13=3")> -1) { // FAN level 3 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 439); } else if(inputString.indexOf("id13=4")> -1) { // FAN level 4 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 585); } else if(inputString.indexOf("id13=5")> -1) { // FAN level 5 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 731); } else if(inputString.indexOf("id13=6")> -1) { // FAN level 6 digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 877); } else if(inputString.indexOf("id13=7")> -1) { // FAN level Max digitalWrite(REL_FAN_PWR, HIGH); Timer1.pwm (PWM_FAN_PIN, 1023); } //-- setted temperature right -- //------------------------------------------------------------------------------------------------ i1 = inputString.indexOf("id20="); if (i1 > -1) { set_in_right = inputString.charAt(i1 + 5) - 48; } //-- setted temperature left -- //------------------------------------------------------------------------------------------------ i1 = inputString.indexOf("id16="); if (i1 > -1) { set_in_left = inputString.charAt(i1 + 5) - 48; } } while(Serial.available()) {Serial.read();} inputString = ""; } // HVAC control void clima_control() { // cooling or heating requiredn? if (temp_out < set_in_left) { // heating digitalWrite(REL_COMPRESSOR, LOW); digitalWrite(REL_HEATING, HIGH); } else if ((temp_out > (set_in_left + 1)) && (temp_out > 15) && (AC_ENABLED == true)) { // cooling digitalWrite(REL_COMPRESSOR, HIGH); digitalWrite(REL_HEATING, LOW); } else { // temperature ok - no further action required digitalWrite(REL_COMPRESSOR, LOW); digitalWrite(REL_HEATING, LOW); } } [/code] Rezolvat .. Ms frumos. Link spre comentariu
Vizitator Postat Iulie 6, 2021 Partajează Postat Iulie 6, 2021 @Alex vw Eu nu prea am inteles care a fost rostul postărilor tale atat de lungi. Este un copy/paste a unui program de pe net care functionează. In prima postare ai modificat ceva (complet aiurea) ca să ai motiv de o intrebare. Apoi ai revenit cu codul original care evident că merge. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum