Разместите на макетной плате группу из трех проводов, создав таким образом 3-проводной сегмент шины GND — DQ — VCC. Используйте эти провода для подключения платы Arduino к макетной плате, как показано на схеме. Установите на шину подтягивающий резистор 4,7 кОм, соединяющий DQ и VCC. Затем добавьте еще 2-3 сегмента 3-х проводной шины, соединив их проводами одного цвета. Затем установите на эти сегменты несколько датчиков DS18B20 в корпусе TO92. Cмотрите на фото для наглядности.
-
-
- Красный — Arduino Uno 5V -> VCC DS18B20
- Белый — Arduino Uno IO4 -> DQ DS18B20*
- Черный — Arduino Uno GND -> GND DS18B20
- Красный — Arduino Uno 5V -> VCC DS18B20
-
* Можно использовать другой IO на Arduino, но тогда внесите изменение в программу тоже
Фото 2.1
После того как макет собран откройте среду разработки Arduino IDE и загрузите в Arduino Uno программу.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
//Используемые библиотеки #include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(4);//Создаем объект oneWire, 4 - номер контакта, к которому подключены датчики DallasTemperature sensors(&oneWire);//Создаем объект sensors int numer = 1; //Номер измерения uint8_t deviceCount;//Объявляем переменную для хранения количества найденных датчиков DeviceAddress addr;//Объявляем массив для хранения 64-битного адреса датчика void setup() { Serial.begin(9600); sensors.begin();//Инициализация датчиков. По умолчанию для них устанавливается максимальное разрешение - 12бит deviceCount = sensors.getDeviceCount();//сохраняем количество найденных на шине датчиков температуры } void loop(void) { sensors.requestTemperatures();//Запрос температуры от всех датчиков на шине Serial.print("Измерение "); Serial.print(numer); Serial.println(" : "); for (uint8_t i = 0; i < deviceCount; i++){ printTemperature(i); } delay(10000); numer++; Serial.println(); } void printTemperature(uint8_t deviceIndex) { Serial.print("Датчик "); Serial.print(deviceIndex);//Индекс датчика sensors.getAddress(addr, deviceIndex);// получаем и сохраняем в массив 64-битный адрес датчика по его текущему индексу Serial.print(" : "); //посылаем в Serial Monitor 64-битный адрес датчика for (uint8_t i = 0; i < 8; i++) { Serial.write(' '); if (addr[i]<16){Serial.print("0");} Serial.print(addr[i], HEX); } Serial.print(" - "); Serial.println(sensors.getTempC(addr));//Получаем температуру датчика с нужным адресом и посылаем ее в Serial Monitor } |
Теперь откройте Serial Monitor на закладке Tools в Arduino IDE.
На монитор выводится текущий индекс датчика, затем его уникальный 64-битный адрес и после этого температура в градусах Цельсия. На этом пока все. Спасибо за внимание и до новых встреч.