Arduino Uno и DS18B20
Arduino Uno и DS18B20
Всем доброго времени суток!
Столкнулся с тем, что нужно овладеть состыковкой данных устройств. Купил плату в ПАКПАК.ру, где и обещали помочь
Везде куча всего написано - не спорю. Есть куча кодов - тоже не отрицаю.
Но ни один, собака, в чистом виде не работает. Ибо поэтому прошу помощи.
Как... с чего начать... полезные ссылки на язык программирования этого Arduino?
Приму любую помощь Лучше все с самого нуля... ибо писал проги только на паскале =\
Пробовал делать http://www.hobbytronics.co.uk/ds18b20-arduino. Получил http://cs306210.vk.me/v306210462/6863/WDLJfhV2ECk.jpg
Пробовал http://cxem.net/arduino/arduino17.php. Получил http://cs306210.vk.me/v306210462/686c/8c-HIjVeewk.jpg
Столкнулся с тем, что нужно овладеть состыковкой данных устройств. Купил плату в ПАКПАК.ру, где и обещали помочь
Везде куча всего написано - не спорю. Есть куча кодов - тоже не отрицаю.
Но ни один, собака, в чистом виде не работает. Ибо поэтому прошу помощи.
Как... с чего начать... полезные ссылки на язык программирования этого Arduino?
Приму любую помощь Лучше все с самого нуля... ибо писал проги только на паскале =\
Пробовал делать http://www.hobbytronics.co.uk/ds18b20-arduino. Получил http://cs306210.vk.me/v306210462/6863/WDLJfhV2ECk.jpg
Пробовал http://cxem.net/arduino/arduino17.php. Получил http://cs306210.vk.me/v306210462/686c/8c-HIjVeewk.jpg
Re: Arduino Uno и DS18B20
Хм... основные ошибки - в устаревшей информации гугла.
Сдвинулся с мертвой точки. Спасибо отправляю сюда: http://arduino.ru/forum/programmirovani ... mpilyatsii
Теперь усложняем задачу: мне нужно 9 датчиков DS18B20. Начинаю монтаж
P.S. Ктонть знает, как выводить значения из этой ардуины в файл? В идеале в Эксель
Сдвинулся с мертвой точки. Спасибо отправляю сюда: http://arduino.ru/forum/programmirovani ... mpilyatsii
Теперь усложняем задачу: мне нужно 9 датчиков DS18B20. Начинаю монтаж
P.S. Ктонть знает, как выводить значения из этой ардуины в файл? В идеале в Эксель
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Arduino Uno и DS18B20
Привет!
Для вывода в CSV файл можно использовать программу Gobetwino. Еще есть Parallax Data Acquisition tool (PLX-DAQ), который выводит сразу в лист Excel. Но у меня этот софт не заработал под Windows 7 64-bit.
Для вывода в CSV файл можно использовать программу Gobetwino. Еще есть Parallax Data Acquisition tool (PLX-DAQ), который выводит сразу в лист Excel. Но у меня этот софт не заработал под Windows 7 64-bit.
Re: Arduino Uno и DS18B20
Спасибо. Буду пробовать.
Еще есть вопросы.
Сколько не гуглю, не могу найти - есть ли возможность добавить текущее время в выдаваемую Ардуиной информауию. В смысле: Дата: дд.мм.гггг; Время: чч:мм; Температура датчика 1: тт град.С
И такой вопрос - есть у меня фрагмент кода:
Когда один датчик - все понятно, но когда несколько, как Ардуина раздает эти самые индексы в
Еще есть вопросы.
Сколько не гуглю, не могу найти - есть ли возможность добавить текущее время в выдаваемую Ардуиной информауию. В смысле: Дата: дд.мм.гггг; Время: чч:мм; Температура датчика 1: тт град.С
И такой вопрос - есть у меня фрагмент кода:
Код: Выделить всё
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
//Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
//Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
//Serial.print(time);
Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
delay(3000);
}
Код: Выделить всё
Serial.println(sensors.getTempCByIndex(0))
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Arduino Uno и DS18B20
По поводу времени:
У Ардуино нет встроенных часов реального времени. Поэтому время брать неоткуда. Без дополнительного оборудования можно вывести только время, которое прошло с момента включения контроллера.
По поводу адресации нескольких 18B20:
Каждое устройство с интерфейсом 1-Wire имеет уникальный 64-битный адрес прошитый в ROM на заводе изготовителе. Если вы используете для работы с датчиками библиотеку OneWire, то для того чтобы узнать адреса датчиков, которые сидят на одной шине, можно использовать метод myWire.search(). Вызывая этот метод несколько раз можно получить адреса всех устройств на шине.
Для чтения данных из устройства с адресом, который хранится в массиве addr, следует сначала выбрать это устройство с помощью метода myWire.select(addr) и затем записать или прочитать данные методами myWire.write() и myWire.read() соответственно.
Описание библиотеки OneWire - тут.
Описание датчиков 18B20 - тут.
Из кода, который вы привели, мне не понятно какую библиотеку вы используете для работы с датчиками.
У Ардуино нет встроенных часов реального времени. Поэтому время брать неоткуда. Без дополнительного оборудования можно вывести только время, которое прошло с момента включения контроллера.
По поводу адресации нескольких 18B20:
Каждое устройство с интерфейсом 1-Wire имеет уникальный 64-битный адрес прошитый в ROM на заводе изготовителе. Если вы используете для работы с датчиками библиотеку OneWire, то для того чтобы узнать адреса датчиков, которые сидят на одной шине, можно использовать метод myWire.search(). Вызывая этот метод несколько раз можно получить адреса всех устройств на шине.
Для чтения данных из устройства с адресом, который хранится в массиве addr, следует сначала выбрать это устройство с помощью метода myWire.select(addr) и затем записать или прочитать данные методами myWire.write() и myWire.read() соответственно.
Описание библиотеки OneWire - тут.
Описание датчиков 18B20 - тут.
Из кода, который вы привели, мне не понятно какую библиотеку вы используете для работы с датчиками.
Re: Arduino Uno и DS18B20
чтоб по коду больше не было вопросов - привожу полный:Mr.Kubikus писал(а):Из кода, который вы привели, мне не понятно какую библиотеку вы используете для работы с датчиками.
Код: Выделить всё
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// 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);
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
//Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
//Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
//Serial.print(time);
Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
delay(3000);
}
Re: Arduino Uno и DS18B20
Итак, поделюсь достижениями на данный момент.
http://cs306210.vk.me/v306210462/696d/jNxS6ysc_CA.jpg
Получилась вот такая штука.
Конечно, индексы пришлось определять методом поочередного нагревания датчиков, но это не так уж и долго
http://cs306210.vk.me/v306210462/696d/jNxS6ysc_CA.jpg
Получилась вот такая штука.
Конечно, индексы пришлось определять методом поочередного нагревания датчиков, но это не так уж и долго
Код: Выделить всё
#include <OneWire.h>
#include <DallasTemperature.h>
//CleanOK
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// 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);
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
//Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
//Serial.println("DONE");
Serial.print("T1 = ");
Serial.print(sensors.getTempCByIndex(8)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
Serial.print("; ");
Serial.print("T2 = ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print("; ");
Serial.print("T3 = ");
Serial.print(sensors.getTempCByIndex(3));
Serial.print("; ");
Serial.print("T4 = ");
Serial.print(sensors.getTempCByIndex(5));
Serial.print("; ");
Serial.print("T5 = ");
Serial.print(sensors.getTempCByIndex(7));
Serial.print("; ");
Serial.print("T6 = ");
Serial.print(sensors.getTempCByIndex(4));
Serial.print("; ");
Serial.print("T7 = ");
Serial.print(sensors.getTempCByIndex(1));
Serial.print("; ");
Serial.print("T8 = ");
Serial.print(sensors.getTempCByIndex(2));
Serial.print("; ");
Serial.print("T9 = ");
Serial.print(sensors.getTempCByIndex(6));
Serial.println(".");
delay(10000);
}
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Arduino Uno и DS18B20
Нормуль. Что будете на следующем этапе делать?
Re: Arduino Uno и DS18B20
Вот пытаюсь сделать вывод в эксель. Пока как-то тухло.Mr.Kubikus писал(а):Нормуль. Что будете на следующем этапе делать?
Parallax Data Acquisition tool (PLX-DAQ) ругается и посылает в дебаг.
Gobetwino данные читает, но тот же вид, что и в Ардуиновской среде. Один плюс - время и дата там указывается.
Пытаюсь разобраться с CSV файлом. Вроде как можно данные, разделенные запятыми, туда вставить, а он сам их по ячейкам разобьет. Но пока не получается. Пробовал "," и ";"
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Arduino Uno и DS18B20
Для проверки попробуйте создать в текстовом редакторе notepad.exe файл test.csv cо следующим содержанием:
В нем значения разделены точкой с запятой (;).
Если этот файл открыть двойным кликом, то запустится эксель и автоматически раскидает значения по ячейкам. По крайней мере у меня у меня эксель (2010) ведет себя именно так.
Код: Выделить всё
Temp1;Temp1;Counter
1,2;2,2;1
3,4;4,2;2
5,6;8,2;3
Если этот файл открыть двойным кликом, то запустится эксель и автоматически раскидает значения по ячейкам. По крайней мере у меня у меня эксель (2010) ведет себя именно так.