pawelo220v Napisano Luty 28, 2018 Udostępnij Napisano Luty 28, 2018 Witam, to mój pierwszy post na forum, i mam skromne pytanie związane z wyrażeniem IF a mianowicie, chcę by po wykryciu temperatury niższej jak 3 stopnie na nawiewie rekuperatora, regulator wyłączył wentylator nawiewu i poczekał do momentu ogrzania wymiennika się do temperatury 7 st.C po czym włączył wentylator nawiewu. czy taki zapis ma prawo działać prawidłowo. Zastanawiają mnie dwa wyrażenia if czy jedno po drugim zadziałają prawidłowo. tj czy po przekroczeniu temp 3 st.C regulator poczeka gdy temp wzrosnie do 7 st.C i załączy wentylator ? Czy zapis kody jest prawidłowy. Czy mogę prosic kolegów o sprawdzenie fachowym okiem. if (sensors.getTempC(nawiew)=<3); // jesli nawiew nizszy jak 3 st.C funkcja antyzamrozeniowa { digitalWrite(wentN, HIGH); // postoj wentylatora nawiewu if(zadanaFrosta == (sensors.getTempC(nawiew))); //jesli nawiew =7 { digitalWrite(wentN,LOW); //wlacz went nawiewu } } Oczywiscie cały kod do wglądu ///////////////////////////REKUPERACJA////////////////////////////// #include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> //#include <LCD.h> #include <LiquidCrystal_I2C.h> int wentW=9; //wentylator Wyciagowy int wentN=8; // wentylator nawiewny bool frosta = false; // FLAGA FROSTA float zadanaFrosta=7; //unsigned long aktualnyCzas = 0; //unsigned long zapamietanyCzas = 0; //unsigned long roznicaCzasu = 0; ////////////////////////////////////////////////////// #define ONE_WIRE_BUS 3 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); /*-----( Declare Variables )-----*/ // http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20#Read%20individual DeviceAddress wyrzut = { 0x28, 0xFF, 0x56, 0x0F, 0x02, 0x15, 0x04, 0xE6 }; DeviceAddress nawiew = { 0x28, 0xFF, 0x1F, 0x87, 0x65, 0x15, 0x02, 0x3B }; DeviceAddress wyciag = {0x28, 0xFF, 0x1E, 0xE4, 0x71, 0x15, 0x03, 0x64 }; DeviceAddress czerpnia = { 0x28, 0xFF, 0xF6, 0xC8, 0x71, 0x15, 0x03, 0xE2 }; void setup() /****** SETUP: RUNS ONCE ******/ { // pinMode(ledpin, OUTPUT); pinMode(wentW, OUTPUT); //wentylator Wyciagowy pinMode(wentN, OUTPUT); // nawiewny digitalWrite(wentW, LOW); // // normalnie w spoczynku stan HIGH wyłączony digitalWrite(wentN, LOW); // normalnie w spoczynku stan HIGH wyłączony //-----///////////////////-- Powitanie------/////////////////////-------- lcd.begin(20,4); lcd.home (); // sensors.begin(); lcd.setCursor ( 3, 0 ); lcd.print("rekuperacja"); delay(2000);lcd.setCursor ( 3, 1 ); lcd.print (" startowanie "); delay(3000); sensors.setResolution(wyrzut, 11); sensors.setResolution(nawiew, 11); sensors.setResolution(wyciag, 11); sensors.setResolution(czerpnia, 11); } void loop() /****** LOOP: RUNS CONSTANTLY ******/ { // aktualnyCzas = millis(); sensors.requestTemperatures(); // Send the command to get temperatures //lcd.backlight(); //Backlight ON if under program control lcd.setCursor(0,0);lcd.print("czerp.:");displayTemperature(czerpnia); lcd.setCursor(0,1);lcd.print("nawiew:");displayTemperature(nawiew); float temp = sensors.getTempC(nawiew); lcd.setCursor(0,2);lcd.print("wyciag:");displayTemperature(wyciag); lcd.setCursor(0,3);lcd.print("wyrzut:");displayTemperature(wyrzut); delay(1000); if (sensors.getTempC(nawiew)=<3); // jesli nawiew nizszy jak 3 st.C funkcja antyzamrozeniowa { digitalWrite(wentN, HIGH); // postoj wentylatora nawiewu if(zadanaFrosta == (sensors.getTempC(nawiew))); //jesli nawiew =7 { digitalWrite(wentN,LOW); //wlacz went nawiewu } } } /*-----( Declare User-written Functions )-----*/ void displayTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); if (tempC == -127.00) // Measurement failed or no device found {lcd.print("Error"); } else { lcd.print("t="); lcd.print(tempC); } } // End printTemperature //*********( THE END )*********** Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Luty 28, 2018 Udostępnij Luty 28, 2018 Skomplikowałeś to zupełnie niepotrzebnie. Coś w stylu: if (temperatura <= 3) wyłącz_wentylator; else if (temperatura >=7) włącz_wentylator. Pasuje? Cytuj Link do komentarza Share on other sites More sharing options...
pawelo220v Luty 28, 2018 Autor tematu Udostępnij Luty 28, 2018 he he ,szuka Pan Filary gdzie są moje okulary ") Najprostsze rozwiązanie w tym przypadku najskuteczniejsze , grunt nie namieszać sobie w głowie za mocno. Dzieki wielkie. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!