Как разобрать на части показания датчика DS18B20
- Войдите на сайт для отправки комментариев
Вс, 13/10/2013 - 12:15
Показания с часиков на модуле DS1307 разбираю на части без проблем
#include <DS1307.h> #include <LiquidCrystal.h> DS1307 rtc(A4, A5); LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int asd=0; void setup() { lcd.begin(16, 2); rtc.halt(false); } void loop() { lcd.setCursor(1,0); lcd.print(rtc.getTimeStr()); String stringOne = rtc.getTimeStr(); asd = stringOne.substring(6,7).toInt(); lcd.setCursor(1,1); lcd.print(asd); }
А вот никак не могу разобрать показания датчика температуры DS18B20
Простой скетч для разборки
#include <OneWire.h> OneWire ds(7); #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); } void loop() { byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); ds.reset(); ds.write(0xCC); ds.write(0xBE); data[0] = ds.read(); data[1] = ds.read(); int Temp = (data[1]<<8)+data[0]; int f = round(Temp*9.0/5.0 + 32.0); Temp = Temp>>4; lcd.setCursor(0,0); lcd.print(Temp); }
Пробовал так
но ругается
если я правильно понял, что вам нужно:
Спасибо большое , помню где то читал на форуме, но не смог найти --- все работает...
А как разобрать частоту ???
Изначально приемник настроен на частоту 104.8
Как разобрать на части frequency, которая отображает в мониторе порта 104.80
Заранее спасибо за помощь ...
точно так же - комбинация деления и операции %, например цифру обозначающую сотни:
для десятых и сотых долей можно frequency преобразовать в целоче число, умножим перед этим на 100 - тогда у вас все цифры сдвинуться и в нулевом разряде будут сотые доли, в первом - десятые и т.е. и далее кобинируя деление и % выделите цифру любого разряда
Пробовал так
Ошибка
Строка
отображает 10 ( но работает когда убрать строку " uint8_t digit1 =frequency % 10;" )
Когда указана строка
ругается
FM_tea5767.ino: In function 'void loop()':
Умножил частоту на 104,8 на 10 и получил 1048... А потом разобрал на части как указано выше !!! Всем спасибо !!!
мои примеры для целочисленных типов данных. У вас дисплей какой? Так возиться с цифрами имеет смысл только для семисегментных индикаторов, которые текст не понимают. Для дисплеев понимающих текст проще использовать форматирование, исопльзуя например sprintf:
давно не использовал форматирование чисел с плавающей точкой, но вроде так. Тоже можно для частоты использовать. только формат должен быть "%3.2f".
У меня дисплей 1602, но я там отображаю символи в таком формате, потому и требуется разбор на части...
пока только отображается время, а я хочу добавить отображение температуры и частоты на какой работает радио, --- управление с IR пульта...
Что -то наподобии радиобудильника )))
А тут видео работы на дисплее С242-08D
http://youtu.be/PXjy2RxKfqM
inhelp, красивые часы. :)
Через 2 - 3 дня опубликую полностью проэкт "Радиобудильник с датчиком температуры" .
Приятно, когда толковые люди публикуют толковые проекты, а не длинные списки "хотелок"...
Ждем-с.
Пока тестирую и исправляю ошибки...
Видео http://www.youtube.com/watch?v=jl8MyHcIffY
Все спасибо за помощь...
Класс! Для полного счастья не хватает, пожалуй, регулировки яркости подсветки, но это уже мелочь.
Зачётно !!!