Помогите.Часы с метеопараметрами мега2560+dht22+lcd 1.3 дюйма.,часы ds3231

krugleshok65
Offline
Зарегистрирован: 22.10.2015

Всем Добрый день или вечер. НЕ могу все связать это.Проблема такая что время убегает вперед, уже не знаю что делать, кто нибудь протестрируйте на своих библиотеках и на скетчах, нужно чтобы на дисплеи выводился день месяц, время само собой, показание температуры ,влажности и давления. Весь интернет облазил все не то.Помогите пожалуйста.Набор устройств такой:

 

Arduino Mega R3

Макетная плата МВ- 51а

Датчик температуры и влажности DHT22

Датчик - Барометр

Часы DS3231

OLED 1.3 - ГОЛУБОЙ

YRA
Offline
Зарегистрирован: 10.01.2015

http://geektimes.ru/post/258844/ поиск включайте  

pav2000
Offline
Зарегистрирован: 15.12.2014

krugleshok65 ! 

Не понял в чем у Вас проблема -

1. "НЕ могу все связать это"  если не неможите все компоненты заставить работать вместе  - тогда Вам в поиск и подключайте постепенно каждый компонет. Тем более кода вы не приводите.

2. "Проблема такая что время убегает вперед"  - если используете модуль часов 3221 и с него берете время и оно убегает то тогда разбирайтесь с ним. Может батарейка дохлая, может кварц не стабильный или не точный. Используете пример из библиотеки (напишите свой - читаем время и выводим в сом порт) и посмотрите стабильность времени.

Определитесь в чем проблема.

bwn
Offline
Зарегистрирован: 25.08.2014

Честно говоря, не слыщал про аппаратные проблемы с DS3231. Обычно косяки с кодом.

pav2000
Offline
Зарегистрирован: 15.12.2014

bwn пишет:

Честно говоря, не слыщал про аппаратные проблемы с DS3231. Обычно косяки с кодом.

Это как надо код написать что бы часы убегали. Это только специально паравки вводить.

 

bwn
Offline
Зарегистрирован: 25.08.2014

pav2000 пишет:

bwn пишет:

Честно говоря, не слыщал про аппаратные проблемы с DS3231. Обычно косяки с кодом.

Это как надо код написать что бы часы убегали. Это только специально паравки вводить.

 

У кого то системное время кушают, кто то предустановку забывает закомментить и т.п. Батарейку тоже не исключаю, но у них толковей чем на 1307 реализовано. Себе последнее время ионисторы леплю.

krugleshok65
Offline
Зарегистрирован: 22.10.2015

вот мой код

все работает, пока дачтик давления не подключал пока не нужно, помогите с координатами на десплеи чтобы красивее было. а то не понятненько , с командой setcursor не разобрался малец. И Место на дисплеи нужно оставить для датчика давления, если кто увидит ошибки в коде просьба отредактируйте пожалуйста

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
 
 
 
#include <Arduino.h>
#include <Wire.h>
#include <MicroLCD.h>
LCD_SH1106 lcd;
 
#include "DHT.h"
#define DHTPIN 2     // what pin we're connected to
 
#include <Wire.h>
#include "DS1307.h"
DS1307 clock;//define a object of DS1307 class
 
 
 
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11 
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
 
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
 
  Serial.begin(9600); 
  Serial.println("DHTxx test!");
  
  dht.begin();
  lcd.begin();
  clock.begin();
  lcd.clear();
  
 
  
 
  
}
 
void loop() {
  lcd.setCursor(0, 0);
  printTime();
  lcd.setFont(FONT_SIZE_SMALL);
  
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 
  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" *C");
    
    
    lcd.setFont(FONT_SIZE_MEDIUM);
    //lcd.println(" %\t");
    lcd.setCursor(0,2);
    lcd.print("T,*C:"); 
    lcd.print(t);
    //lcd.println(" *C");
    lcd.setCursor(0,3);
     lcd.print("H,%:"); 
    lcd.print(h);
    //lcd.println(" %\t");
     
    
  } 
 }
  /*Function: Display time on the serial monitor*/
void printTime()
{        lcd.setFont(FONT_SIZE_MEDIUM);
          
 
clock.getTime();
Serial.print(clock.hour, DEC);
Serial.print(":");
Serial.print(clock.minute, DEC);
Serial.print(":");
Serial.print(clock.second, DEC);
Serial.print(" ");
Serial.print(clock.month, DEC);
Serial.print("/");
Serial.print(clock.dayOfMonth, DEC);
Serial.print("/");
Serial.print(clock.year+2000, DEC);
Serial.print(" ");
Serial.print(clock.dayOfMonth);
Serial.print("*");
         
         
         lcd.setFont(FONT_SIZE_MEDIUM);
         clock.getTime();
         
         lcd.print(clock.hour, DEC);
lcd.print(":");
lcd.print(clock.minute, DEC);
 
         lcd.setFont(FONT_SIZE_SMALL);
         lcd.print(" "); 
lcd.print(clock.dayOfMonth, DEC);
lcd.print("/");
lcd.print(clock.month, DEC);
lcd.print("/");
 
lcd.print(clock.year, DEC);
         lcd.setFont(FONT_SIZE_MEDIUM);
         lcd.println();    
          
  
 
 
        
switch (clock.dayOfWeek)// Friendly printout the weekday
{
case MON:
 Serial.print("MON");
 break;
case TUE:
 Serial.print("TUE");
 break;
case WED:
 Serial.print("WED");
 break;
case THU:
 Serial.print("THU");
 break;
case FRI:
 Serial.print("FRI");
 break;
case SAT:
 Serial.print("SAT");
 break;
case SUN:
 Serial.print("SUN");
 break;
}
Serial.println(" ");
        lcd.print(" ");
}