Добавить в корзинуПозвонить
Найти в Дзене

Часы и погода на Arduino UNO

Всем привет. Сегодня мы будем делать экран с показателями даты, времени, температуры и влажности.
Для этого на понадобиться.
DS1302 модуль реального времени.
ЖК 1602 экран с шильдой IIC/I2C

Всем привет. Сегодня мы будем делать экран с показателями даты, времени, температуры и влажности.

Для этого на понадобиться.

 DS1302 модуль реального времени.
DS1302 модуль реального времени.
ЖК 1602 экран с шильдой IIC/I2C
ЖК 1602 экран с шильдой IIC/I2C
DHT11 или 22
DHT11 или 22
Arduino UNO
Arduino UNO

Все это можно купить на алиэкспрессе.

ЖК экран мы подключаем следующим образом:

SCL-SCL

SDA-SDA

SDA и SCL находятся чуть выше 13 пина.

GND-минус

VCC-5вольт

DS1302 подключаем так

GND-минус
VCC-5вольт

CLK DAT RST - 13, 12, 11

DHT11

GND-минус VCC-5вольт

S - A0

Первым делом надо залить такой код.

include <virtuabotixRTC.h> //|

//|

//=======================================================================================================//|

// //|

// Include files required for Program Function End //|

// //|

//=======================================================================================================//|

// Creation of the Real Time Clock Object

virtuabotixRTC myRTC(6, 7, 8);

void setup() {

Serial.begin(9600);

// Set the current date, and time in the following format:

// seconds, minutes, hours, day of the week, day of the month, month, year

myRTC.setDS1302Time(00, 59, 23, 6, 10, 1, 2014); //тут указываем секунды минуты часы день недели число месяц и год

}

void loop() { //|

myRTC.updateTime(); //|

//|

// Start printing elements as individuals //|

Serial.print("Current Date / Time: "); //|

Serial.print(myRTC.dayofmonth); //|

Serial.print("/"); //|

Serial.print(myRTC.month); //|

Serial.print("/"); //|

Serial.print(myRTC.year); //|

Serial.print(" "); //|

Serial.print(myRTC.hours); //|

Serial.print(":"); //|

Serial.print(myRTC.minutes); //|

Serial.print(":"); //|

Serial.println(myRTC.seconds); //|

//|

// Delay so the program doesn't print non-stop //|

delay( 5000); //|

}

он нужен чтоб датчик времени запомнил время.

include <virtuabotixRTC.h>

include <Wire.h> // Добавляем необходимые библиотеки

include <LiquidCrystal_I2C.h>

include "DHT.h"

define DHTPIN A0 // к какому пину будет подключен сигнальный выход датчика

//выбор используемого датчика

define DHTTYPE DHT11 // DHT 11

virtuabotixRTC myRTC(13, 12, 11);

//define DHTTYPE DHT22 // DHT 22 (AM2302)

//define DHTTYPE DHT21 // DHT 21 (AM2301)

//инициализация датчика

DHT dht(DHTPIN, DHTTYPE);

byte degree[8] = // кодируем символ градуса

{

B00111,

B00101,

B00111,

B00000,

B00000,

B00000,

B00000,

};

LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея

void setup()

{

lcd.init(); // Инициализация lcd

lcd.backlight(); // Включаем подсветку

lcd.createChar(1, degree); // Создаем символ под номером 1

Serial.begin(9600);

dht.begin();

myRTC.dayofmonth;

}

void loop() {

delay(1000);

myRTC.updateTime();

float h = dht.readHumidity();

// Read temperature as Celsius

float t = dht.readTemperature();

// Read temperature as Fahrenheit

float f = dht.readTemperature(true);

// Добавляем паузы в несколько секунд между измерениями

// Reading temperature or humidity takes about 250 milliseconds!

// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)

// Выводим показания влажности и температуры

lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки

lcd.print(myRTC.dayofmonth, 1); // Выводим текст

lcd.setCursor(3, 0); // Устанавливаем курсор на 7 символ

lcd.print(myRTC.month, 1); // Выводим на экран значение влажности

lcd.setCursor(5, 0); // Устанавливаем курсор в начало 2 строки

lcd.print(myRTC.year); // Выводим текст, \1 - значок градуса

lcd.setCursor(11, 0); // Устанавливаем курсор на 7 символ

lcd.print(myRTC.hours); // Выводим значение температуры

lcd.setCursor(13, 0); // Устанавливаем курсор на 7 символ

lcd.print(":"); // Выводим значение температуры

lcd.setCursor(14, 0); // Устанавливаем курсор на 7 символ

lcd.print(myRTC.minutes); // Выводим значение температуры

lcd.setCursor(0, 1); // Устанавливаем курсор в начало 1 строки

lcd.print("Vl ="); // Выводим текст

lcd.setCursor(5, 1); // Устанавливаем курсор на 7 символ

lcd.print(h, 1); // Выводим на экран значение влажности

lcd.setCursor(8, 1); // Устанавливаем курсор в начало 2 строки

lcd.print("Tem"); // Выводим текст, \1 - значок градуса

lcd.setCursor(12, 1); // Устанавливаем курсор на 7 символ

lcd.print(t,1); // Выводим значение температуры

}

дальше заливаем этот код и все готово.