Advertisement
j7sx

DS1821+LCD

Oct 29th, 2015
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.34 KB | None | 0 0
  1. #include <OneWire.h>
  2. #include <Wire.h>
  3. #include <LiquidCrystal.h>
  4.  
  5. OneWire  ds(7);  // датчик на 7 ноге
  6. LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
  7.  
  8. void setup() {
  9.   lcd.begin(16, 2);
  10.   lcd.setCursor(0,2);
  11.   lcd.print("temp, C");
  12. }
  13. void wait(void)                             // процедура запускает конвертацию и ждёт пока датчик не закончит вычисления.
  14.   {char x;
  15.      ds.reset();                            // инициализация датчика, надо делать каждый раз перед обменом данными с датчиком
  16.      ds.write(0xEE);                        // записываем команду для запуска конвертации EEh
  17.    do
  18.      {
  19.      ds.reset();                            // инициализация датчика
  20.      ds.write(0xAC);                        // записываем команду для чтения статуса ACh
  21.      x=ds.read();                           // читаем статус
  22.      }
  23.    while(!(0b10000000&x));                  // крутимся в цикле пока бит статуса не установится и можно будет начать читать температуру.
  24. }
  25.  
  26.  
  27. void loop(void) {
  28.   byte temp_read = 0;
  29.   byte status_read = 0;
  30.   unsigned int count_remain = 0;
  31.   unsigned int count_per_c = 0;
  32.  
  33.   wait();                                   // ждем готовности датчика выдать температуру
  34.  
  35. //читаем температуру нормальной точности temp_read (датчик позволяет получить ещё и температуру повышенной точности)
  36.   ds.reset();                              
  37.   ds.write(0xAA);                          
  38.   temp_read = ds.read();                  
  39. // если температура прочитанная больше 200, значит температура ниже нуля и нужно внести поправку.
  40.   if (temp_read >= 200) temp_read = temp_read - 256;
  41.  
  42.  
  43.   lcd.setCursor(0,0);
  44.   lcd.print("Temperatura");
  45.   lcd.setCursor(0,1);
  46.   lcd.print((float)temp_read);              // печатаем значение
  47.  
  48.   delay(10);                                // пауза чтоб не мельтешило в терминале.
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement