Меню сайта
Календарь
|
Термометр на Arduino(Atmega32)+DS18B20(2 датчика)+LCD16*2(Rus)Вдоволь наморгавшись светодиодами,проверив анологовые и PWM входы/выходы,захотелось попробовать сделать что-то полезное. В "закромах" нашлась парочка датчиков ds18b20 ,а также LCD MTC-16204X на контролере HD44780,совместимый с обычным LCD 1602 и поддерживающий кирилицу.Это навело на мысль сделать термометр показывающий температуру как на улице так и в доме. Схема подключения: Фото собраной схемы: Библиотеки для LCD под Arduino IDE 1.0.4, были опрбованы обе : LiquidCrystal ( скачать ) и LiquidCrystalRus - поддерживающая кирилицу ( скачать ). Библиотеки для работы с датчиком температуры ds18b20 под Arduino IDE 1.0.4 : OneWire ( скачать ) и DallasTemperature ( скачать ). Вот сам скетч ( скачать ) : #include <OneWire.h> #include <DallasTemperature.h> #include <LiquidCrystalRus.h> // Data wire is plugged into pin 23 on the Arduino // Данные провода подключен к контакту 23 на Arduino32 #define ONE_WIRE_BUS 23 // Setup a oneWire instance to communicate with any OneWire devices // Установка OneWire например общаться с любыми устройствами OneWire // (not just Maxim/Dallas temperature ICs) // (а не только Максим / Dallas температуры ИС) LiquidCrystalRus lcd(9, 6, 5, 4, 3, 2); OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. // Пройди наш OneWire ссылкой на Dallas Temperature. DallasTemperature sensors(&oneWire); void setup(void) { // start serial port // Serial.begin(9600); // Serial.println("Dallas Temperature IC Control Library Demo"); lcd.begin(16, 2); lcd.print("Хата"); lcd.setCursor(0, 1); lcd.print("Вулиця"); // Start up the library // Запуск библиотеки sensors.begin(); } void loop(void) { // call sensors.requestTemperatures() to issue a global temperature // вызов sensors.requestTemperatures () выдавать глобальной температуры // 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: "); lcd.setCursor(0, 0); lcd.print("Хата Т="); lcd.print(sensors.getTempCByIndex(0)); lcd.print(" C "); delay (10); lcd.setCursor(0, 1); lcd.print("Вулиця Т="); lcd.print(sensors.getTempCByIndex(1)); lcd.print(" C "); delay (10); // Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"? // Почему byIndex // You can have more than one IC on the same bus. // Вы можете иметь более одного IC на одной шине. // 0 refers to the first IC on the wire // 0 относится к первому IC на проводе } Cсылка на источник http://www.hobbytronics.co.uk/ds18b20-arduino, добавлена поддержка LCD. HEX-файл без загрузчика здесь . Кроме этого скетча,мною был опробован скетч еще отсюда .При применении тех же библиотек они различаются тем ,что в первом случае микроконтролер сам выбирает какой датчик "дом",а какой "улица".Во втором же случае адреса датчиков прописываются вручную. |
Архив записей
Друзья сайта
Статистика
Онлайн всього: 1 Гостей: 1 Користувачів: 0 |