Advertisement
henrihenri

lcd I2C 2 digiandurit intervalliga

Sep 13th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.97 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2. #include <OneWire.h>
  3. //#include <Wire.h>
  4. #include <DallasTemperature.h>
  5. #define ONE_WIRE_BUS 13
  6. OneWire oneWire(ONE_WIRE_BUS);
  7. DallasTemperature sensors(&oneWire);
  8. DeviceAddress intemp = {
  9.   0x28, 0xFF, 0x26, 0xA7, 0x35, 0x16, 0x4, 0xCF };
  10.   //0x28, 0xFF, 0xCA, 0xE2, 0x35, 0x16, 0x3, 0xD6};
  11.   DeviceAddress backtemp = {
  12.    0x28, 0xFF, 0xEE, 0xA3, 0x35, 0x16, 0x4, 0xDD };
  13.   //0x28, 0xFF, 0x80, 0x5C, 0x35, 0x16, 0x3, 0x6};
  14.  
  15. unsigned long interval1 = 2000;
  16. unsigned long interval2 = 10000; // tesversioon
  17. //unsigned long interval2 = 600000; // tuleb arvestada, et interval2 tegelikuks
  18. unsigned long prevTime = 0; //pikkuseks jaab interval2 - interval1
  19. unsigned long curTime;
  20. unsigned long prevTimeButton;
  21. unsigned long prevTimeButton2;
  22. unsigned long prevTimeTemp;
  23. unsigned long prevTimeTemp2;
  24. const int kollaPin = 4;
  25. const int siniPin = 5;
  26. int kollaState = LOW;
  27. int siniState = LOW;
  28. //int val = 0;
  29.  
  30. //int INtempPin = A0;
  31. float tempCin;
  32. float tempCback;
  33. float in;
  34. float back;
  35. float SET = 25.0;
  36. float setk = 0.0;
  37. const int buttonPin = 3;
  38. const int button2Pin = 6;
  39. int buttonPushCounter =0;
  40. int button2PushCounter =0;
  41. int buttonState =0;
  42. int button2State =0;
  43. int lastButtonState =0;
  44. int lastButton2State =0;
  45.  
  46. //                BS  E  D4 D5  D6 D7
  47. LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
  48.  
  49. void setup()
  50. {
  51.   lcd.begin(16, 2);
  52.  
  53.     pinMode(kollaPin, OUTPUT);
  54.     pinMode(siniPin, OUTPUT);
  55.  
  56.     pinMode(buttonPin, INPUT);
  57.     pinMode(button2Pin,INPUT);
  58.     Serial.begin(9600);
  59.             sensors.begin();
  60.   sensors.setResolution(intemp, 12);
  61.   sensors.setResolution(backtemp, 12);
  62.     }
  63. void printlnTemperature(DeviceAddress deviceAddress) {
  64.   tempCin = sensors.getTempC(deviceAddress);
  65.  // Serial.println(tempCin);
  66.  
  67.   tempCback = sensors.getTempC(deviceAddress);
  68.  
  69. }
  70.  
  71. void loop()  {
  72.   unsigned long curTime = millis();
  73.    if (curTime - prevTimeTemp > interval1*2) {
  74.  
  75. sensors.requestTemperatures();
  76.   Serial.print("In temp: ");
  77.   printlnTemperature(intemp);
  78.   prevTimeTemp = curTime;
  79.  }
  80.  // Serial.print("\n\r");
  81.   Serial.println(tempCin);
  82.   delay(1);
  83.  
  84.  lcd.setCursor(0, 0);
  85.     lcd.print("I");
  86.   lcd.setCursor(1, 0);
  87.   lcd.print(in);
  88.    lcd.setCursor(5, 0);
  89.  
  90.   lcd.print("B");
  91.   in = tempCin;
  92.   if (curTime - prevTimeTemp2 > interval1*2) {
  93.   sensors.requestTemperatures();
  94.   Serial.print("Back temp: ");
  95.   printlnTemperature(backtemp);
  96.    prevTimeTemp2 = curTime;
  97.   }
  98.   //Serial.print("\n\r");
  99.   Serial.println(tempCback);
  100.   delay(1);
  101.   Serial.println(in);
  102.  
  103.  
  104.  lcd.setCursor(5, 0);
  105.   lcd.print("B");
  106.   lcd.setCursor(6, 0);
  107.   //lcd.print(tempCback);
  108.    lcd.print(back);
  109.   lcd.setCursor(10, 0);
  110.   lcd.print((char)223);
  111. back =tempCback;  
  112.  
  113.  buttonState = digitalRead(buttonPin);
  114.   if (buttonState != lastButtonState) {
  115.     if (buttonState == HIGH) {
  116.       setk++;
  117.     }
  118.   }
  119.   else if (buttonState == lastButtonState && curTime - prevTimeButton > interval1) {
  120.     if (buttonState == HIGH) {
  121.       SET++;
  122.     }
  123.   }
  124.   if (buttonState == LOW) {
  125.     prevTimeButton = curTime;
  126.   }
  127.  
  128.   button2State = digitalRead(button2Pin);
  129.   if (button2State != lastButton2State) {
  130.     if (button2State == HIGH) {
  131.       setk--;
  132.     }
  133.   }
  134.   else if (button2State == lastButton2State && curTime - prevTimeButton2 > interval1) {
  135.     if (button2State == HIGH) {
  136.       SET--;
  137.     }
  138.   }
  139.   if (button2State == LOW) {
  140.     prevTimeButton2 = curTime;
  141.   }
  142.   lastButtonState = buttonState;
  143.   lastButton2State = button2State;
  144.  
  145.   lcd.setCursor(11, 0);
  146.   lcd.print("S");
  147.   lcd.setCursor(12, 0);
  148.   lcd.print(setk/10 + SET);
  149.   lcd.setCursor(14, 1);
  150.  if (setk/10 + SET +1 < back) {
  151.  lcd.print("CO");
  152.  }
  153.  else if (setk/10 + SET > 1+ back){
  154.   lcd.print("WO");
  155.  }
  156.  else if ((setk/10 + SET - back) <1 > -1){
  157.   lcd.print("OK");
  158.    }
  159.  
  160.  // lcd.setCursor(0, 1);
  161.  
  162.  // if(prevTime < interval2 ) {lcd.print(interval2/1000 - millis()/1000);
  163.  
  164.   //}
  165.  lcd.setCursor(0, 1);
  166.  lcd.print("ERTEC");
  167.   lcd.setCursor(6, 1);
  168.   lcd.print(700*4.19*(in-back)/3600);
  169.   lcd.setCursor(10, 1);
  170.  lcd.print(" KW ");
  171.  
  172.  
  173.  //could down
  174.   if (setk/10 + SET + 1 < back) {
  175.  
  176.     if (curTime - prevTime < interval1) {
  177.       digitalWrite(4, LOW);
  178.       digitalWrite(5, HIGH);
  179.    
  180.     }
  181.     if (curTime - prevTime >= interval1) {
  182.       digitalWrite(5, LOW);
  183.     }
  184.     if (curTime - prevTime > interval2) { //peale teist intervali voib ka led
  185.       // digitalWrite(4, HIGH); // korgeks panna, kui progega edasi minna
  186.       prevTime = curTime;
  187.     }
  188.   }
  189.  
  190.   //warm up
  191.   if (setk/10 + SET - 1 > back) {
  192.     //if (val*0.065+5 - tempC <= 1 && val*0.065+5 - tempC > 0){
  193.  
  194.     if (curTime - prevTime < interval1) {
  195.       digitalWrite(5, LOW);
  196.       digitalWrite(4, HIGH);
  197.     }
  198.     if (curTime - prevTime >= interval1) {
  199.       digitalWrite(4, LOW);
  200.     }
  201.     if (curTime - prevTime > interval2) { //peale teist intervali voib ka led
  202.       //digitalWrite(6, HIGH); // korgeks panna, kui progega edasi minna
  203.       prevTime = curTime;
  204.  
  205.     }
  206.   }
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement