Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <OneWire.h>
- #include <Wire.h>
- #include <LiquidCrystal.h>
- OneWire ds(7); // датчик на 7 ноге
- LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
- void setup() {
- lcd.begin(16, 2);
- lcd.setCursor(0,2);
- lcd.print("temp, C");
- }
- void wait(void) // процедура запускает конвертацию и ждёт пока датчик не закончит вычисления.
- {char x;
- ds.reset(); // инициализация датчика, надо делать каждый раз перед обменом данными с датчиком
- ds.write(0xEE); // записываем команду для запуска конвертации EEh
- do
- {
- ds.reset(); // инициализация датчика
- ds.write(0xAC); // записываем команду для чтения статуса ACh
- x=ds.read(); // читаем статус
- }
- while(!(0b10000000&x)); // крутимся в цикле пока бит статуса не установится и можно будет начать читать температуру.
- }
- void loop(void) {
- byte temp_read = 0;
- byte status_read = 0;
- unsigned int count_remain = 0;
- unsigned int count_per_c = 0;
- wait(); // ждем готовности датчика выдать температуру
- //читаем температуру нормальной точности temp_read (датчик позволяет получить ещё и температуру повышенной точности)
- ds.reset();
- ds.write(0xAA);
- temp_read = ds.read();
- // если температура прочитанная больше 200, значит температура ниже нуля и нужно внести поправку.
- if (temp_read >= 200) temp_read = temp_read - 256;
- lcd.setCursor(0,0);
- lcd.print("Temperatura");
- lcd.setCursor(0,1);
- lcd.print((float)temp_read); // печатаем значение
- delay(10); // пауза чтоб не мельтешило в терминале.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement