помогите подключть датчик температуры DS18B20 к lcd

Arttoiv
Offline
Зарегистрирован: 21.12.2014

Всем привет! Помогите пожлауйста подключить герметичный датчик температуры DS18B20 к arduino lcd module

Нужен скрипт для показа температуры на экране

 

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

И что у Вас не получается? 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Где резистор подтяжки? Да и третьего провода к датчику - не видно...

Arttoiv
Offline
Зарегистрирован: 21.12.2014

я имею ввиду, что через нажимной клеммник можно как-то подключить

Arttoiv
Offline
Зарегистрирован: 21.12.2014

ошибка какая-то появляется OneWire oneWire(ONE_WIRE_BUS); что там прописывать нужно?

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Для начала возьмите библиотеку OneWire и запустите её пример работы с DS18B20 (он выводит температуру в serial) и убедитесь, что Вы правильно собрали железо. Аналогично с дисплеем, попробуйте  примеры. А потом соедините программы 2-х примеров.

Arttoiv
Offline
Зарегистрирован: 21.12.2014

KVadik пишет:

Для начала возьмите библиотеку OneWire и запустите её пример работы с DS18B20 (он выводит температуру в serial) и убедитесь, что Вы правильно собрали железо. Аналогично с дисплеем, попробуйте  примеры. А потом соедините программы 2-х примеров.

баблиотеку залил, при выводе пишет "no more ardess".

что я делаю нитак?

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

не правильно подключили датчик

Arttoiv
Offline
Зарегистрирован: 21.12.2014

спасибо я подключил. Теперь хочу вывести все это на дисплей. Дисплей у меня Arduino LCD Module. 

Какой командой можно вывести на дисплей?

 

bwn
Offline
Зарегистрирован: 25.08.2014

Arttoiv пишет:

спасибо я подключил. Теперь хочу вывести все это на дисплей. Дисплей у меня Arduino LCD Module. 

Какой командой можно вывести на дисплей?

 

А какой командой вы выводите данные на свой дисплей и какая библиотека?

Arttoiv
Offline
Зарегистрирован: 21.12.2014

bwn пишет:

Arttoiv пишет:

спасибо я подключил. Теперь хочу вывести все это на дисплей. Дисплей у меня Arduino LCD Module. 

Какой командой можно вывести на дисплей?

 

А какой командой вы выводите данные на свой дисплей и какая библиотека?

Библиотека TFT

bwn
Offline
Зарегистрирован: 25.08.2014

Ну так вы что нибудь печатали на этом экране? Какой командой это делали?

Arttoiv
Offline
Зарегистрирован: 21.12.2014

bwn пишет:

Ну так вы что нибудь печатали на этом экране? Какой командой это делали?

 

Да печатал с библиотеки загрузил пример TFTDisplayText.

bwn
Offline
Зарегистрирован: 25.08.2014

Arttoiv пишет:

bwn пишет:

Ну так вы что нибудь печатали на этом экране? Какой командой это делали?

 

Да печатал с библиотеки загрузил пример TFTDisplayText.

Ну прямо Зоя на допросе, какая там команда на печать? У меня ведь вашей библиотеки и дисплея нет.

Arttoiv
Offline
Зарегистрирован: 21.12.2014

bwn пишет:

Arttoiv пишет:

bwn пишет:

Ну так вы что нибудь печатали на этом экране? Какой командой это делали?

 

Да печатал с библиотеки загрузил пример TFTDisplayText.

Ну прямо Зоя на допросе, какая там команда на печать? У меня ведь вашей библиотеки и дисплея нет.

походу вот эта char sensorPrintout[4];

отсюда взял http://arduino.cc/en/Tutorial/TFTDisplayText

bwn
Offline
Зарегистрирован: 25.08.2014

TFTscreen.text(здесь ваша переменная с температурой, 0, 20); попробуйте так.

Arttoiv
Offline
Зарегистрирован: 21.12.2014

bwn пишет:

TFTscreen.text(здесь ваша переменная с температурой, 0, 20); попробуйте так.

можно по подробнее? Переменная - это к какому конаткту подключено? что там писать?

bwn
Offline
Зарегистрирован: 25.08.2014

Arttoiv пишет:

bwn пишет:

TFTscreen.text(здесь ваша переменная с температурой, 0, 20); попробуйте так.

можно по подробнее? Переменная - это к какому конаткту подключено? что там писать?

Сбросьте ваш код для DS18B20. Переменная, в данном случае это то, что получает результат расчета температуры.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

а лучше ВЕСЬ код

Arttoiv
Offline
Зарегистрирован: 21.12.2014

SU-27-16 пишет:

а лучше ВЕСЬ код

 

вот у меня весь код, куда там вписывать не понятно ошибку выдает 

#include <OneWire.h>
#include <DallasTemperature.h>

#include <TFT.h>  // Arduino LCD library
#include <SPI.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
#define TEMPERATURE_PRECISION 9



#define CS   10
#define DC   9
#define RESET  8


// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

// arrays to hold device addresses
DeviceAddress insideThermometer, outsideThermometer;


void setup(void)

{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();

  // locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(sensors.getDeviceCount(), DEC);
  Serial.println(" devices.");

  // report parasite power requirements
  Serial.print("Parasite power is: "); 
  if (sensors.isParasitePowerMode()) Serial.println("ON");
  else Serial.println("OFF");

  // assign address manually.  the addresses below will beed to be changed
  // to valid device addresses on your bus.  device address can be retrieved
  // by using either oneWire.search(deviceAddress) or individually via
  // sensors.getAddress(deviceAddress, index)
  //insideThermometer = { 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 };
  //outsideThermometer   = { 0x28, 0x3F, 0x1C, 0x31, 0x2, 0x0, 0x0, 0x2 };

  // search for devices on the bus and assign based on an index.  ideally,
  // you would do this to initially discover addresses on the bus and then 
  // use those addresses and manually assign them (see above) once you know 
  // the devices on your bus (and assuming they don't change).
  // 
  // method 1: by index
  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); 
  if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1"); 

  // method 2: search()
  // search() looks for the next device. Returns 1 if a new address has been
  // returned. A zero might mean that the bus is shorted, there are no devices, 
  // or you have already retrieved all of them.  It might be a good idea to 
  // check the CRC to make sure you didn't get garbage.  The order is 
  // deterministic. You will always get the same devices in the same order
  //
  // Must be called before search()
  //oneWire.reset_search();
  // assigns the first address found to insideThermometer
  //if (!oneWire.search(insideThermometer)) Serial.println("Unable to find address for insideThermometer");
  // assigns the seconds address found to outsideThermometer
  //if (!oneWire.search(outsideThermometer)) Serial.println("Unable to find address for outsideThermometer");

  // show the addresses we found on the bus
  Serial.print("Device 0 Address: ");
  printAddress(insideThermometer);
  Serial.println();

  Serial.print("Device 1 Address: ");
  printAddress(outsideThermometer);
  Serial.println();

  // set the resolution to 9 bit
  sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);
  sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION);

  Serial.print("Device 0 Resolution: ");
  Serial.print(sensors.getResolution(insideThermometer), DEC); 
  Serial.println();

  Serial.print("Device 1 Resolution: ");
  Serial.print(sensors.getResolution(outsideThermometer), DEC); 
  Serial.println();
}

// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    // zero pad the address if necessary
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
  }
}

// function to print the temperature for a device
void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  Serial.print("Temp C: ");
  Serial.print(tempC);
  Serial.print(" Temp F: ");
  Serial.print(DallasTemperature::toFahrenheit(tempC));
}

// function to print a device's resolution
void printResolution(DeviceAddress deviceAddress)
{
  Serial.print("Resolution: ");
  Serial.print(sensors.getResolution(deviceAddress));
  Serial.println();    
}

// main function to print information about a device
void printData(DeviceAddress deviceAddress)
{
  Serial.print("Device Address: ");
  printAddress(deviceAddress);
  Serial.print(" ");
  printTemperature(deviceAddress);
  Serial.println();
}

void loop(void)
{ 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures();
  Serial.println("DONE");

  // print the device information
  printData(insideThermometer);
  printData(outsideThermometer);
}

 

Гриша
Offline
Зарегистрирован: 27.04.2014

114      float tempC = sensors.getTempC(deviceAddress);

здесь вы получили температуру в переменную, ее и отправляйте на дисплей... но похоже что Вы просите за вас код написать - это в раздел ищу исполнителя ИМХО

Arttoiv
Offline
Зарегистрирован: 21.12.2014

Я не просил за меня код писать, я просто хотел чтобы мне подсказали, что да как.  Спасибо хоть на этом.

Гриша
Offline
Зарегистрирован: 27.04.2014

Arttoiv пишет:

Я не просил за меня код писать, я просто хотел чтобы мне подсказали, что да как.  Спасибо хоть на этом.

есть 2 модуля, датчик температуры и диплей, их нужно с пониманием отдельно протестить, понять как работают (какие переменные куда выводятся и как)

выложите два исходных (тестовых), рабочих (у Вас) кода для дисплея и датчика температуры. отдельно.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Ваш код компилится. Ищите библиотеки. Ставьте. Закройте-откройте ИДЕ. Смотреть в сериале на скорости 9600

Arttoiv
Offline
Зарегистрирован: 21.12.2014

куда выложить?

 

Латгальский
Offline
Зарегистрирован: 01.02.2015

Всем добрового вечера.Помогите чайнику.Я тоже про DS18D20.Дали готовую библиотеку,надо только подставить адреса 2-х датчиков.Посоединил их,в мониторе вижу адреса.Скопировал в скетч.С outside термометром всё нормально,а inside выдаёт следующее:DD не был объявлен в этой области.Синтаксис проверил,а дальше знаний нет.Как его объявить?

bwn
Offline
Зарегистрирован: 25.08.2014

Латгальский пишет:

Всем добрового вечера.Помогите чайнику.Я тоже про DS18D20.Дали готовую библиотеку,надо только подставить адреса 2-х датчиков.Посоединил их,в мониторе вижу адреса.Скопировал в скетч.С outside термометром всё нормально,а inside выдаёт следующее:DD не был объявлен в этой области.Синтаксис проверил,а дальше знаний нет.Как его объявить?

Код в студию.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Латгальский пишет:

Всем добрового вечера.Помогите чайнику.Я тоже про DS18D20.Дали готовую библиотеку,надо только подставить адреса 2-х датчиков.Посоединил их,в мониторе вижу адреса.Скопировал в скетч.С outside термометром всё нормально,а inside выдаёт следующее:DD не был объявлен в этой области.Синтаксис проверил,а дальше знаний нет.Как его объявить?

правильнее - открыть новую тему !!!!!

DS18D20 - два адреса. HELP !

Гриша
Offline
Зарегистрирован: 27.04.2014

Латгальский пишет:

Всем добрового вечера.Помогите чайнику.Я тоже про DS18D20.Дали готовую библиотеку,надо только подставить адреса 2-х датчиков.Посоединил их,в мониторе вижу адреса.Скопировал в скетч.С outside термометром всё нормально,а inside выдаёт следующее:DD не был объявлен в этой области.Синтаксис проверил,а дальше знаний нет.Как его объявить?

http://robocraft.ru/blog/arduino/136.html

настоятельно рекомендую ознакомиться, особенно с комментами в конце! Там пример этого ТИПА датчиков, но мне кажется он проще ИМХО. КОД в обсуждении... 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Гриша, давайте вместе порядок поддерживать !? не поощрять ответами в чужой теме..... пусть новый ТС свою тему мутит, нет ?

 

зачем темы на 300 постов на 7 тем ? :)

Гриша
Offline
Зарегистрирован: 27.04.2014

SU-27-16 пишет:

Гриша, давайте вместе порядок поддерживать !? не поощрять ответами в чужой теме..... пусть новый ТС свою тему мутит, нет ?

ИМХО не стоит плодить много аналогичных тем, да и тема ТС "завязалась" не правильно, ну не умеуют люди (без опыта) правильно задавать вопросы... всегда учу сына - правильно поставленый вопрос, содержит половину ответа. 

Полагаю, что это не тот случай создавать новую тему...

ЗЫ КОДы сполйлером сварачивать не забываем в настройках вставки КОДа.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

новый ТС оттесняет задачу старого ТС.... при входе в тему в любой точке-сообщении - возникает неоднозначность....

.....кому ответил/отвечать ?

ресурс сайта не ограничивает кол-во тем..... :)-

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

новый чел - не знает ни правил , ни то что такая тема уже была....

его НАДО сразу поставить на рельсы.... как - вставка кода, вставка картинок, создание темы.....

про создание темы - тоже есть рекомендации/наработки здесь - http://arduino.ru/forum/obshchii/sozdanie-temy

 

Гриша
Offline
Зарегистрирован: 27.04.2014

SU-27-16 пишет:

новый чел - не знает ни правил , ни то что такая тема уже была....

его НАДО сразу поставить на рельсы.... как - вставка кода, вставка картинок, создание темы.....

про создание темы - тоже есть рекомендации/наработки здесь - http://arduino.ru/forum/obshchii/sozdanie-temy

1) я конкретноя уже заспамил эту тему ОФФ.ТОПом , а от ТС информации по существу вопроса так и не получили

2) http://arduino.ru/forum/obshchii/nuzhno-pochistit-forum-ot-spama#comment-82171  пост 25 (посмотрите, пожалуйста) и пробегитесь по этой теме - от темы останется 3 поста не более.

3) согласен про:

SU-27-16 пишет:

новый чел - не знает ни правил , ни то что такая тема уже была....

его НАДО сразу поставить на рельсы.... как - вставка кода, вставка картинок, создание темы.....

про создание темы - тоже есть рекомендации/наработки здесь - http://arduino.ru/forum/obshchii/sozdanie-temy

ИМХО эта тема умерлав офф.топе  05% полезной информации

и прочитайте пост 24 этой темы :)

Латгальский
Offline
Зарегистрирован: 01.02.2015

Неполучается вставить код.

Гриша
Offline
Зарегистрирован: 27.04.2014

Латгальский пишет:

Неполучается вставить код.

было такое - не копируйте его из ИДЭ как "вставить для форума" копируйте просто и вставляйте открывайте " вставка-редактирование кода" это элементы управления вверху поля комментариев (оно подписано code)  только в "дополнительно" поставьте галочку свернуть

http://arduino.ru/forum/otvlechennye-temy/kak-udalit-svoyu-temu#comment-92669

adel
adel аватар
Offline
Зарегистрирован: 03.02.2015

доброго времени суток

у меня проблема собственно в выводе данных с датчика на TFT LCD 

создать новую тему или тут продолжить можно?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

новую - и вам, и другим удобнее....

adel
adel аватар
Offline
Зарегистрирован: 03.02.2015

ок, понял

Латгальский
Offline
Зарегистрирован: 01.02.2015

Всем добрового вечера.Проблема с DS-и разрулилась следущим образом.Я читал,что эти датчики нередко бывают некачественными.У меня был ещё один и я сделал замену,но опять неудача:ошибка при компилировании.В сообщении упоминалась буква А.и я её убрал из адреса датчика;и загрузка прошла нормально.

Гриша
Offline
Зарегистрирован: 27.04.2014

Латгальский пишет:

Всем добрового вечера.Проблема с DS-и разрулилась следущим образом.Я читал,что эти датчики нередко бывают некачественными.У меня был ещё один и я сделал замену,но опять неудача:ошибка при компилировании.В сообщении упоминалась буква А.и я её убрал из адреса датчика;и загрузка прошла нормально.

Главную мысль я выделил, а теперь, пожалуйста, объясните КАК это связано между собой????!!!!