Ви не увійшли.
Почему бессмысленно? Бедному Serial.print одному в лупе не так скучно будет ...
renoshnik пише:[Только какой смысл ?
Ну хоть в лупе будет крутиться. А так не пришей кобыле хвост. Про temperature можете не писать, ТС-у это похоже уже не интересно
Та да... будет бессмысленно крутиться в "лупе" ....
[Только какой смысл ?
Ну хоть в лупе будет крутиться. А так не пришей кобыле хвост. Про temperature можете не писать, ТС-у это похоже уже не интересно
Что мешает в loop вставить temp(); ?
Ничего не мешает. Только какой смысл ?
Что мешает в loop вставить temp(); ?
#include <OneWire.h>
/*
* Описание взаимодействия с цифровым датчиком ds18b20
* Подключение ds18b20 к ардуино через пин 8
*/
OneWire ds(5); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком
void setup(){
Serial.begin(9600);
}
void loop(){
// Определяем температуру от датчика DS18b20
byte data[2]; // Место для значения температуры
ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство
ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память
delay(1000); // Микросхема измеряет температуру, а мы ждем.
ds.reset(); // Теперь готовимся получить значение измеренной температуры
ds.write(0xCC);
ds.write(0xBE); // Просим передать нам значение регистров со значением температуры
// Получаем и считываем ответ
data[0] = ds.read(); // Читаем младший байт значения температуры
data[1] = ds.read(); // А теперь старший
// Формируем итоговое значение:
// - сперва "склеиваем" значение,
// - затем умножаем его на коэффициент, соответсвующий разрешающей способности (для 12 бит по умолчанию - это 0,0625)
float temperature = ((data[1] << 8) | data[0]) * 0.0625;
// Выводим полученное значение температуры в монитор порта
Serial.println(temperature);
}
хочется мне что бы этот код был как функция , чтобы переменную температура вызывать с любой точки кода,
#include <OneWire.h>
OneWire ds(5); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком
float temperature;
void setup(){
Serial.begin(9600);
}
void temp(){
// Определяем температуру от датчика DS18b20
byte data[2]; // Место для значения температуры
ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство
ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память
delay(1000); // Микросхема измеряет температуру, а мы ждем.
ds.reset(); // Теперь готовимся получить значение измеренной температуры
ds.write(0xCC);
ds.write(0xBE); // Просим передать нам значение регистров со значением температуры
// Получаем и считываем ответ
data[0] = ds.read(); // Читаем младший байт значения температуры
data[1] = ds.read(); // А теперь старший
// Формируем итоговое значение:
// - сперва "склеиваем" значение,
// - затем умножаем его на коэффициент, соответсвующий разрешающей способности (для 12 бит по умолчанию - это 0,0625)
float temperature = ((data[1] << 8) | data[0]) * 0.0625;
// Выводим полученное значение температуры в монитор порта
}
void loop()
{
Serial.println(temperature);
}
я знаю что оно так не работает ткните носом что бы решить эту проблему, я не прошу писать мне код, я прошу натолкнуть на мысль