Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // LCD Nokia 5110 start -------------------
- //LCD pins
- //RST - 6
- //CE - 7
- //DC - 5
- //Din - 4
- //Clk - 3
- #include <PCD8544.h>
- static PCD8544 lcd;
- // LCD Nokia 5110 end -------------------
- // DS18B20 start -------------------
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #define ONE_WIRE_BUS 12
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- DeviceAddress firstThermometer;
- // DS18B20 end -------------------
- // BMP180 start -------------------
- #include <Wire.h>
- #include <Adafruit_BMP085.h>
- Adafruit_BMP085 bmp;
- // BMP180 end -------------------
- // DHT11 start -------------------
- #include "DHT.h"
- #define DHTPIN 2
- #define DHTTYPE DHT11
- DHT dht(DHTPIN, DHTTYPE);
- // DHT11 end -------------------
- // DS1307 start -------------------
- #include <Time.h>
- #include <DS1307RTC.h>
- // DS1307 end -------------------
- // Используемые переменные start -------------------
- int tempDS = 0; // температура с DS18B20
- int tempBMP = 0; // температура с BMP180
- int presBMP = 0; // атмосферное давление с BMP180
- int tempDHT = 0; // температура с DHT11, не используется
- int humiDHT = 0; // влажность с DHT11
- const char *days[7] = { "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" };
- // знак градуса
- static const byte gradus[] = {
- B00000000,
- B00000110,
- B00001001,
- B00001001,
- B00000110 };
- // иконка Луны (чОрный круг)
- static const byte moon[] = {
- B00011100,
- B00111110,
- B00111110,
- B00111110,
- B00011100 };
- // иконка солнышка
- static const byte sun[] = {
- B00101010,
- B00011100,
- B00110110,
- B00011100,
- B00101010 };
- // Используемые переменные end -------------------
- // добавление нолика к часам/минутам/дате..., если там одна цифра
- void print2digits(int number) {
- if (number >= 0 && number < 10) {
- lcd.print('0');
- }
- lcd.print(number);
- }
- void setup() {
- lcd.begin(84, 48);
- lcd.createChar(0, gradus);
- lcd.createChar(1, moon);
- lcd.createChar(2, sun);
- sensors.begin();
- if (!sensors.getAddress(firstThermometer, 0)) {
- lcd.setCursor(0,0);
- lcd.println("Проблемы с DS18!");
- }
- sensors.setResolution(firstThermometer, 9);
- bmp.begin();
- dht.begin();
- lcd.setCursor(18,0);
- lcd.print("Погодная");
- lcd.setCursor(18,1);
- lcd.print("станция");
- lcd.setCursor(12,3);
- lcd.print("версия 2.8");
- lcd.setCursor(6,5);
- lcd.print("by Al'Ninyo");
- delay(3000);
- lcd.clear();
- }
- void loop() {
- tmElements_t tm;
- RTC.read(tm);
- sensors.requestTemperatures();
- tempDS = sensors.getTempC(firstThermometer);
- tempBMP = bmp.readTemperature();
- presBMP = bmp.readPressure()/133.3;
- tempDHT = dht.readTemperature();
- humiDHT = dht.readHumidity();
- lcd.setCursor(6,0);
- lcd.print("Улица");
- lcd.setCursor(40,0);
- lcd.print("| ");
- lcd.print("Дом");
- /* if (tempBMP < -10) {
- lcd.write(1);
- lcd.setCursor(12,3);
- lcd.print("Сиди дома! ");
- } else if (tempBMP < 0) {
- lcd.setCursor(0,3);
- lcd.print("Одевайся тепло");
- }
- */
- lcd.setCursor(0,1);
- lcd.print(tempBMP);
- lcd.write(0);
- lcd.print("C ");
- lcd.setCursor(40,1);
- lcd.print("| ");
- lcd.print(tempDS);
- lcd.write(0);
- lcd.print("C ");
- lcd.setCursor(0,2);
- lcd.print(presBMP);
- lcd.print(" mm");
- lcd.setCursor(40,2);
- lcd.print("| ");
- lcd.print(humiDHT);
- lcd.print("% ");
- lcd.setCursor(12,4);
- if ( tm.Second % 2 == 1) {
- lcd.print(" ");
- } else if (tm.Hour >= 7 && tm.Hour <= 19) {
- lcd.write(2);
- } else {
- lcd.write(1);
- }
- lcd.print(" ");
- print2digits(tm.Hour);
- lcd.print(":");
- print2digits(tm.Minute);
- lcd.print(":");
- print2digits(tm.Second);
- lcd.setCursor(0,5);
- lcd.print(days[tm.Wday]);
- lcd.print(" ");
- print2digits(tm.Day);
- lcd.print(".");
- print2digits(tm.Month);
- lcd.print(".");
- lcd.print(tmYearToCalendar(tm.Year));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement