Arduino mega2560 DC1307 DS18b20 LCD1602
<Пытаюсь создать , что то типа управления аквариумом , но пока мало что получается . Пока добился , что бы
LCD показывал день недели ( по аглицки ) , дату , время и температуру в квартире .
Вот скетч ... Скомпилирован на Arduino 1.8.5 . Вполне себе рабочий :
// Функции даты и времени с использованием RTC DS1307, подключенного через I2C и Wire lib
#include <Wire.h>
#include <LiquidCrystal.h>
#include "RTClib.h"
#include <DS18B20.h>
// Провод данных подключен к контакту 19 на Arduino
#define SENSOR_PIN 19//
DS18B20 ds(SENSOR_PIN);
RTC_DS1307 rtc;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // (rs, e, d4, d5, d6, d7)//Подключение индикации на lcd
char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
void setup ()
{
Serial.begin(9600);
lcd.begin(16, 2);
if (! rtc.begin())
{
lcd.print("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning())
{
lcd.print("RTC is NOT running!");
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//автоматическое обновление по компьютерному времени
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));// чтобы установить время вручную
}
void loop ()
{
DateTime now = rtc.now();
lcd.setCursor(0, 1);
lcd.print(now.hour());
lcd.print(':');
lcd.print(now.minute());
lcd.print(':');
lcd.print(now.second());
lcd.print(" ");
if (ds.selectNext())
// Выводим в последовательный порт
Serial.print(ds.getTempC());
Serial.println(" C");
lcd.setCursor(11, 1);
lcd.print(ds.getTempC(),0);
lcd.print("C");
lcd.setCursor(0, 0);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(" ,");
lcd.print(now.day());
lcd.print('/');
lcd.print(now.month());
lcd.print('/');
lcd.print(now.year());
}
Это сама мега 2560 . У меня скорее всего китайский клон , но по цифрам пинов расписаны правильно :
Часы реального времени DS1307 :
Датчик температуры DS18b20 :
LCD Keypad Shield 1602
|