
Вдоволь наморгавшись светодиодами,проверив анологовые и 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-файл без загрузчика здесь .
Кроме этого скетча,мною был опробован скетч еще отсюда .При применении тех же библиотек они различаются тем ,что в первом случае микроконтролер сам выбирает какой датчик "дом",а какой "улица".Во втором же случае адреса датчиков прописываются вручную.