Проект термометра на LCD Nokia 5110
- Войдите на сайт для отправки комментариев
Здравствуйте уважаемые любители программирования и профессионалы конечно))
Понадобился мне термометр на экране от Nokia. Нашел вот этот проект http://www.youtube.com/watch?v=ga_1dqGjsbo
Решил собрать все на своей Pro Mini
Собрал все на монтажной плате используя стабилизатор на 3.3в для питания дисплея, подсоединил датчик используя прямое питание (по 3 проводам), сопротивление на 4.7 к, длина кабеля около 6 метров(датчик на улице).
Залил скетч. Все работало на первый взгляд, но утром обнаружил, что температура зависла на одном месте(рядом стоит еще один контроллер и по нему сверялся с новым датчиком). Нажал на сброс - температура обновилась.
По прошествии определенного времени снова зависло все. Снова нужно жать на сброс. Что это может быть?
Да и еще. При касании кварца, ардуина тоже перезагружается(наводки?)
Спасибо за любую помощь.
Шесть метров - очень длинная антенна. Она Вам там радио-шансон не проигрывает заодно? :)
Честно говоря незнаю. Рядом висит nm8036 с 4мя датчиками по 15 метров витой пары и все нормально. Вопрос почему не исполняется цикл и зависает контроллер? Неужели из-за большой длины кабеля?
Какой цикл? Не было никакого цикла (как и скетча вообще) в этом топике. Какой Вы хотите помощи, если ничего не рассказываете?
А 60 метров - линия сильно зашумлена - чего туда только не валится.
Да, я понял. Код вот этот
#include <OneWire.h> #include <DallasTemperature.h> #include <LCD5110_Graph.h> #define ONE_WIRE_BUS 7 LCD5110 lcd(8,9,10,12,11); extern unsigned char SmallFont[]; extern unsigned char BigNumbers[]; extern uint8_t temperatureIcon[]; char temperatureF[6]; OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); float tempC = 0; float tempF = 0; void setup(void) { lcd.InitLCD(); lcd.setContrast(65); lcd.setFont(BigNumbers); sensors.begin(); sensors.setResolution(9);//9-12 бит } void loop(void) { lcd.clrScr(); lcd.drawBitmap(0, 0, temperatureIcon, 84, 48); sensors.requestTemperatures(); tempC = sensors.getTempCByIndex(0); tempF = sensors.toFahrenheit(tempC); //convertToString(tempF); convertToString(tempC); //Uncomment this for degrees Celsius lcd.print(temperatureF,25,11); lcd.update(); delay(3000); } void convertToString(float number) { dtostrf(number, 3, 1, temperatureF); }Датчик о котором идет речь (18b20) никак не связан с теми 4мя датчиками - он сидит на своей ардуине, 4 датчика сидят на своем контроллере. Я просто привел пример.
Питание, оно такое питание.