Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <LiquidCrystal.h>
  2. #include <BigNumbers.h>
  3. #include <OneWire.h>
  4. #include <DallasTemperature.h>
  5.  
  6. // Na PIN 7 cteni cidel
  7. #define ONE_WIRE_BUS 7
  8.  
  9.  
  10. OneWire oneWire(ONE_WIRE_BUS);
  11. DallasTemperature sensors(&oneWire);
  12.  
  13. //prectené adresy Cidel DS18b20
  14. DeviceAddress Probe01 = { 0x28, 0xCC, 0x36, 0xB4, 0x01, 0x00, 0x00, 0xD0 };
  15. DeviceAddress Probe02 = { 0x28, 0x27, 0x23, 0x9D, 0x01, 0x00, 0x00, 0x4C };
  16.  
  17.  
  18. //zapojeni PINu 12, 11, 5, 4, 3, 2 do arduina
  19. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  20. //inicializace velkych pismen
  21. BigNumbers bigNum(&lcd);
  22.  
  23. //nastaveni promenne
  24. float  tempC1, tempC1C;
  25. unsigned int temp, tempA, tempB, tempC;
  26.  
  27. //smazani
  28. byte RR[8] =
  29. {
  30.   B00000,
  31.   B00000,
  32.   B00000,
  33.   B00000,
  34.   B00000,
  35.   B00000,
  36.   B00000,
  37.   B00000
  38. };
  39.  
  40. //Stupen
  41. byte RT[8] =
  42. {
  43.   B00000,
  44.   B01110,
  45.   B01010,
  46.   B01010,
  47.   B01010,
  48.   B01010,
  49.   B01110,
  50.   B00000
  51. };
  52.  
  53. //zobrazení mínusu
  54. byte LR[8] =
  55. {
  56.   B00000,
  57.   B00000,
  58.   B00000,
  59.   B00000,
  60.   B00000,
  61.   B11111,
  62.   B11111,
  63.   B11111
  64. };
  65. byte MB[8] =
  66. {
  67.   B11111,
  68.   B11111,
  69.   B11111,
  70.   B00000,
  71.   B00000,
  72.   B00000,
  73.   B00000,
  74.   B00000
  75. };
  76. //konec zobrazení mínusu
  77.  
  78. //desetinna carka
  79. byte th[8] = {
  80.   B00000,
  81.   B00000,
  82.   B00000,
  83.   B00000,
  84.   B00000,
  85.   B01110,
  86.   B01110,
  87.   B01110
  88.  
  89.  
  90. };
  91.  
  92. void setup()
  93. {
  94.   lcd.createChar(0,RR);
  95.   lcd.createChar(1,RT);
  96.   lcd.createChar(2,LR);
  97.   lcd.createChar(3,MB);
  98.    lcd.createChar(4,th);
  99.  
  100.   sensors.begin();
  101.    sensors.setResolution(Probe01, 12);
  102.    sensors.setResolution(Probe02, 12);
  103.    
  104.   lcd.begin(20,4);
  105.   lcd.clear();
  106. }
  107.  
  108.  
  109. void loop()
  110. {
  111.    //inicializuje cidlo            
  112.    sensors.requestTemperatures();
  113.        
  114.      //precte teplotu z Probe02  
  115.      tempC1 = sensors.getTempC(Probe02);
  116.        
  117.      // tempc1 = -127 pak napise error
  118.         if (tempC1 == -127.00)
  119.               {
  120.                 //smazani desetinne tecky
  121.                  lcd.setCursor(9,3);
  122.                  lcd.write(byte(0));
  123.                  //konec
  124.                  
  125.                   //vykresleni stupne
  126.                   lcd.setCursor(17,0);
  127.                   lcd.write(byte(0));
  128.                   //KONEC stupne
  129.                  
  130.                   //smaze minus
  131.                   lcd.setCursor(0,1);
  132.                   lcd.write(byte(0));
  133.                   lcd.setCursor(0,2);
  134.                   lcd.write(byte(0));
  135.                   //KONEC minus
  136.                
  137.                 bigNum.clearLargeNumber(2);
  138.                  bigNum.displayLargeNumber(12,2); //zobrazi pismeno E
  139.                  bigNum.clearLargeNumber(6);
  140.                  bigNum.displayLargeNumber(13,6); //zobrazi pismeno R
  141.                  bigNum.clearLargeNumber(10);
  142.                  bigNum.displayLargeNumber(14,10); //zobrazi pismeno O jao olga
  143.                  bigNum.clearLargeNumber(14);
  144.                  bigNum.displayLargeNumber(13,14);
  145.                  bigNum.clearLargeNumber(18);
  146.             } else{
  147.  
  148.                 //kdyz teplota bude mensi nez -0.05 pak vykresli znamenko minus na displeji
  149.                 if(tempC1 <= -0.05){
  150.                  
  151.                   //vykresleni minus
  152.                   lcd.setCursor(0,1);
  153.                   lcd.write(2);
  154.                   lcd.setCursor(0,2);
  155.                   lcd.write(3);
  156.                   //KONEC minus
  157.  
  158.                 tempC1C = tempC1 * -1;
  159.                  
  160.                 //Serial.println(tempC1);
  161.                 //vypise prvni cislo na displeji 10.00
  162.                   temp = tempC1C/10;
  163.                  //Serial.println(temp);
  164.                  //vypise druhe cislo na displeji 01.00
  165.                   tempA = tempC1C - (temp*10);
  166.                  //Serial.println(tempA);
  167.                  //vypise treti cislo na displeji 00.10
  168.                  tempB = tempC1C*10-(temp*100+tempA*10);
  169.                 //Serial.println(tempB);
  170.                  //vypise ctvrte cislo na displeji 00.1
  171.                  tempC = tempC1C*100-(temp*1000+tempA*100+tempB*10);
  172.                  //Serial.println(tempC);
  173.                  bigNum.clearLargeNumber(2);
  174.                  bigNum.displayLargeNumber(temp,2);
  175.                  bigNum.clearLargeNumber(6);
  176.                  bigNum.displayLargeNumber(tempA,6);
  177.                  
  178.                  
  179.                  //vykresleni desetinne tecky            
  180.                  lcd.setCursor(9,3);
  181.                  lcd.write(4);
  182.                  //KONEC
  183.                  
  184.                  bigNum.clearLargeNumber(10);
  185.                  bigNum.displayLargeNumber(tempB,10);
  186.                  bigNum.clearLargeNumber(14);
  187.                  bigNum.displayLargeNumber(tempC,14);
  188.                  
  189.                  //vykresleni pismene C
  190.                  bigNum.displayLargeNumber(11,18);
  191.                  //konec
  192.                  
  193.                  //vykresleni stupne
  194.                   lcd.setCursor(17,0);
  195.                   lcd.write(1);
  196.                   //KONEC stupne
  197.                    
  198.                  //kdyz teplota bude v plusi tak zapise teplotu a vymaze znamenko
  199.                 }else{
  200.                  
  201.                   //smazani minus
  202.                   lcd.setCursor(0,1);
  203.                   lcd.write(byte(0));
  204.                   lcd.setCursor(0,2);
  205.                   lcd.write(byte(0));
  206.                   //KONEC minus
  207.                      
  208.                 //Serial.println(tempC1);
  209.                 //vypise prvni cislo na displeji 10.00
  210.                   temp = tempC1/10;
  211.                  //Serial.println(temp);
  212.                  //vypise druhe cislo na displeji 01.00
  213.                   tempA = tempC1 - (temp*10);
  214.                  //Serial.println(tempA);
  215.                  //vypise treti cislo na displeji 00.10
  216.                  tempB = tempC1*10-(temp*100+tempA*10);
  217.                 //Serial.println(tempB);
  218.                  //vypise ctvrte cislo na displeji 00.1
  219.                  tempC = tempC1*100-(temp*1000+tempA*100+tempB*10);
  220.                  //Serial.println(tempC);
  221.                  bigNum.clearLargeNumber(2);
  222.                  bigNum.displayLargeNumber(temp,2);
  223.                  bigNum.clearLargeNumber(6);
  224.                  bigNum.displayLargeNumber(tempA,6);
  225.                  bigNum.clearLargeNumber(10);
  226.                  
  227.                  //vykresleni desetinne tecky            
  228.                  lcd.setCursor(9,3);
  229.                  lcd.write(4);
  230.                  //KONEC
  231.                  
  232.                  bigNum.displayLargeNumber(tempB,10);
  233.                  bigNum.clearLargeNumber(14);
  234.                  bigNum.displayLargeNumber(tempC,14);
  235.                  
  236.                  //vykresleni pismene C
  237.                  bigNum.displayLargeNumber(11,18);
  238.                  //konec
  239.                  
  240.                  //vykresleni stupne
  241.                   lcd.setCursor(17,0);
  242.                   lcd.write(1);
  243.                   //KONEC stupne
  244.  
  245.                  
  246.                 }
  247. }
  248.  
  249. }