LM35DZ датчик температуры
- Войдите на сайт для отправки комментариев
Ср, 19/08/2015 - 15:07
Подскажите почему LM35 показывает всего 1 градус когда во всех примерах он показывает 28 градусов а вот в этом скетче не хочет помогите решить задачку(.
#include <OLED_I2C.h> OLED myOLED(SDA, SCL, 8); extern uint8_t MegaNumbers[]; extern uint8_t RusFont[]; extern uint8_t SmallFont[]; extern uint8_t term[]; extern uint8_t grad[]; #include <DS1302.h> DS1302 rtc(2, 3, 4); Time t; #include <OneWire.h> OneWire ds(8); int x = 0; void setup() { myOLED.begin(); rtc.halt(false); //rtc.setDOW(WEDNESDAY); // rtc.setTime(15, 12, 0); //rtc.setDate(19, 8, 2015); } void loop() //ротации циклов { if (x >= 10) { temp(); x=0; } else { watch(); } x++; } void watch() //отображаeт время { myOLED.setFont(RusFont); t = rtc.getTime(); switch (t.dow) { case 1: myOLED.print("GJYTLTKMYBR", CENTER, 0); break; case 2: myOLED.print("DNJHYBR", CENTER, 0); break; case 3: myOLED.print("CHTLF", CENTER, 0); break; case 4: myOLED.print("XTNDTHU", CENTER, 0); break; case 5: myOLED.print("GZNYBWF", CENTER, 0); break; case 6: myOLED.print("CE<<JNF", CENTER, 0); break; case 7: myOLED.print("DJCRHTCTYMT", CENTER, 0); break; } String stringOne = rtc.getTimeStr(); myOLED.setFont(MegaNumbers); myOLED.print(stringOne.substring(0, 2), 4, 12); myOLED.print("/", 51, 12); myOLED.print(stringOne.substring(3, 5), 75, 12); myOLED.setFont(RusFont); switch (t.mon) { case 1: myOLED.print(String(t.date), 30, 57); myOLED.print("ZYDFHZ", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 2: myOLED.print(String(t.date), 26, 57); myOLED.print("ATDHFKZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; case 3: myOLED.print(String(t.date), 30, 57); myOLED.print("VFHNF", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 4: myOLED.print(String(t.date), 30, 57); myOLED.print("FGHTKZ", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 5: myOLED.print(String(t.date), 36, 57); myOLED.print("VFZ", CENTER, 57); myOLED.print(String(t.year), 82, 57); break; case 6: myOLED.print(String(t.date), 35, 57); myOLED.print("B>YZ", CENTER, 57); myOLED.print(String(t.year), 81, 57); break; case 7: myOLED.print(String(t.date), 35, 57); myOLED.print("B>KZ", CENTER, 57); myOLED.print(String(t.year), 81, 57); break; case 8: myOLED.print(String(t.date), 28, 57); myOLED.print("FDUECNF", CENTER, 57); myOLED.print(String(t.year), 90, 57); break; case 9: myOLED.print(String(t.date), 24, 57); myOLED.print("CTYNZ<HZ", CENTER, 57); myOLED.print(String(t.year), 94, 57); break; case 10: myOLED.print(String(t.date), 26, 57); myOLED.print("JRNZ<HZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; case 11: myOLED.print(String(t.date), 28, 57); myOLED.print("YJZ<HZ", CENTER, 57); myOLED.print(String(t.year), 90, 57); break; case 12: myOLED.print(String(t.date), 26, 57); myOLED.print("LTRF<HZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; } myOLED.update(); delay(450); myOLED.setFont(MegaNumbers); myOLED.print("-", 51, 12); myOLED.update(); delay(450); } void temp() { //считывания и отображения температуры for(int x = 0; x < 10; x++){ byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); delay(150); ds.reset(); ds.write(0xCC); ds.write(0xBE); data[0] = ds.read(); data[1] = ds.read(); int Temp = (data[1] << 8) + data[0]; Temp = Temp >> 4; String stringOne = rtc.getTimeStr(); myOLED.clrScr(); myOLED.setFont(SmallFont); myOLED.print(stringOne.substring(0, 5), 98, 0); myOLED.print(rtc.getDateStr(), 0, 0); myOLED.setFont(RusFont); myOLED.print("NTVGTHFNEHF", CENTER, 57); myOLED.drawBitmap(4, 12, term, 19, 40); myOLED.setFont(MegaNumbers); myOLED.print(String(Temp), CENTER, 12); myOLED.drawBitmap(92, 12, grad, 13, 12); myOLED.update(); myOLED.clrScr(); } }
подключал так как на картинке
Если не ошибаюсь, то тут вообще нет вычисления данных по LM35. LM35 отдает 10 mB на 1 градус Цельсия а это аналоговое значение которое нужно обработать, что бы потом вывести куда-то.
Я чет вообще нихрена не понял. Вы температуру от DS18B20 читаете, а подключаете аналоговый датчик. Его на аналоговый пин вешают. Смотрите здесь
на аналоговом пине он вапще не показывает а анологе он 1 грд кажет
"почему LM35 показывает всего 1 градус когда во всех примерах он показывает 28 градусов а вот в этом скетче не хочет"
А может просто дохлый как в теме выше.
"почему LM35 показывает всего 1 градус когда во всех примерах он показывает 28 градусов а вот в этом скетче не хочет"
А может просто дохлый как в теме выше.
нет не дохлый он же работает когда его подключаешь через порт смотришь 28 град как так может все таки в скетче нужно исправить?
Еще раз повторяю, скетч для цифрового датчика серии DS18. (на вид они одинаковые), а у вас аналоговый. Ваш скетч его никак читать не может!!!!
http://www.instructables.com/id/ARDUINO-TEMPERATURE-SENSOR-LM35/
Пин свой поменяйте......
В сериал выведет- тогда разбирайтесь с выводом на ЖКИ.
http://arduino.ru/forum/apparatnye-voprosy/lm35dz-ne-rabotaet-s-arduino-...
http://www.instructables.com/id/ARDUINO-TEMPERATURE-SENSOR-LM35/
Пин свой поменяйте......
В сериал выведет- тогда разбирайтесь с выводом на ЖКИ.
http://arduino.ru/forum/apparatnye-voprosy/lm35dz-ne-rabotaet-s-arduino-nano#new
Уже разобрался там всего то нужно было дабавить 4.7 ком резистор так что все работает, а за ссылку спс ))
Вы таки хотите сказать, что LM35 заработал с кодом из первого поста после подключения резистора. Ню ню))))
Может у него всё-таки Даллас.... раз заработал с резистором
Просто человек думает что ЛМ35? Ему так кто-то сказал.....
Буквы на ТО92 мелкие, а лупы нет...... ;)
Так ведь говорит, что на каких то примерах 28град казал, правда примеры и схему не приводит))))
Может у него всё-таки Даллас.... раз заработал с резистором
Просто человек думает что ЛМ35? Ему так кто-то сказал.....
Буквы на ТО92 мелкие, а лупы нет...... ;)
нет у меня LM35 а не dalas и почемуто он 20 сек работал а потом опять ( не работает странно
вот такие примеры и схемы подключал только что разные датчики темп и все.
Аналоговые входы находятся на правой сторонe платы и подписаны как: A0, A1, A2, A3, A4........
Так и пишем : A0
И подключаем датчик к A0
И входы А6 и А7 не работают как цифровые.
A6 and A7 are only inputs available to the mux in front of the ADC. There is no digital hardware behind the pins.
И резистор для ЛМ35 не нужен: датчик выдаёт напряжение.
Может с ним не справится....
вот такие примеры и схемы подключал только что разные датчики темп и все.
Супер, теперь вы цифровой датчик читаете скетчем для LM35 (аналог). Вы хоть понимаете разницу между ними?
Откуда вы достаете такие громоздкие по памяти и скорости обработки процессором скетчи?
Опорные 5 вольт. Писал и тестировал сам лично. Ставим + в рейтинг - это ваше спасибо! Пользуйтесь на здоровье.