Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 7-segment start -------------------
- /*
- ***** These pin numbers will probably not work with your hardware *****
- pin 11 is connected to the DataIn
- pin 10 is connected to the CLK
- pin 9 is connected to LOAD
- We have only a single MAX72XX.
- */
- #include "LedControl.h"
- LedControl lc=LedControl(11,10,9,1);
- // 7-segment end -------------------
- // 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() {
- /*
- The MAX72XX is in power-saving mode on startup,
- we have to do a wakeup call
- */
- lc.shutdown(0,false);
- /* Set the brightness to a medium values */
- lc.setIntensity(0,8);
- /* and clear the display */
- lc.clearDisplay(0);
- 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("версия 3.2");
- 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));
- double t01;
- double t02;
- if (tempBMP >= 0) {
- t01 = floor(tempBMP/10);
- t02 = (tempBMP - t01*10);
- lc.setChar(0,6,' ',false);
- } else {
- t01 = floor(-tempBMP/10);
- t02 = (-tempBMP - t01*10);
- lc.setChar(0,6,'-',false);
- }
- if (tempBMP > -10 && tempBMP < 10) {
- lc.setChar(0,5,' ',false);
- } else {
- lc.setChar(0,5,t01,false);
- }
- lc.setChar(0,4,t02,false);
- double t11 = floor(tempDS/10);
- double t12 = (tempDS - t11*10);
- if (tempDS > -10 && tempDS < 10) {
- lc.setChar(0,1,' ',false);
- } else {
- lc.setChar(0,1,t11,false);
- }
- lc.setChar(0,0,t12,false);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement