help часы + датчик температуры, отдельно работают, вместе никак =0(((

Тема в разделе "Arduino & Shields", создана пользователем lorgus, 2 дек 2014.

  1. lorgus

    lorgus Нуб

    что не так ???
     
  2. lorgus

    lorgus Нуб

    //
    // FILE: dht11.h
    // VERSION: 0.4.1
    // PURPOSE: DHT11 Temperature & Humidity Sensor library for Arduino
    // LICENSE: GPL v3 (http://www.gnu.org/licenses/gpl.html)
    //
    // DATASHEET: http://www.micro4you.com/files/sensor/DHT11.pdf
    //
    // URL: http://arduino.cc/playground/Main/DHT11Lib
    //
    // HISTORY:
    // George Hadjikyriacou - Original version
    // see dht.cpp file
    //

    #ifndef dht11_h
    #define dht11_h

    #if defined(ARDUINO) && (ARDUINO >= 100)
    #include <Arduino.h>
    #else
    #include <WProgram.h>
    #endif

    #define DHT11LIB_VERSION "0.4.1"

    #define DHTLIB_OK 0
    #define DHTLIB_ERROR_CHECKSUM -1
    #define DHTLIB_ERROR_TIMEOUT -2

    class dht11
    {
    public:
    int read(int pin);
    int humidity;
    int temperature;
    };
    #endif
    //
    // END OF FILE
    //
     
  3. lorgus

    lorgus Нуб

    /*
    DS1307.h - Arduino library support for the DS1307 I2C Real-Time Clock
    Copyright (C)2010 Henning Karlsen. All right reserved

    You can find the latest version of the library at
    http://www.henningkarlsen.com/electronics

    This library has been made to easily interface and use the DS1307 RTC with
    the Arduino without needing the Wire library.

    If you make any modifications or improvements to the code, I would appreciate
    that you share the code with me so that I might include it in the next release.
    I can be contacted through http://www.henningkarlsen.com/electronics/contact.php

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
    */
    #ifndef DS1307_h
    #define DS1307_h

    #if defined(ARDUINO) && ARDUINO >= 100
    #include "Arduino.h"
    #else
    #include "WProgram.h"
    #endif

    #define DS1307_ADDR_R 209
    #define DS1307_ADDR_W 208

    #define FORMAT_SHORT 1
    #define FORMAT_LONG 2

    #define FORMAT_LITTLEENDIAN 1
    #define FORMAT_BIGENDIAN 2
    #define FORMAT_MIDDLEENDIAN 3

    #define MONDAY 1
    #define TUESDAY 2
    #define WEDNESDAY 3
    #define THURSDAY 4
    #define FRIDAY 5
    #define SATURDAY 6
    #define SUNDAY 7

    #define SQW_RATE_1 0
    #define SQW_RATE_4K 1
    #define SQW_RATE_8K 2
    #define SQW_RATE_32K 3

    class Time
    {
    public:
    uint8_t hour;
    uint8_t min;
    uint8_t sec;
    uint8_t date;
    uint8_t mon;
    uint16_t year;
    uint8_t dow;

    Time();
    };

    class DS1307_RAM
    {
    public:
    byte cell[56];

    DS1307_RAM();
    };

    class DS1307
    {
    public:
    DS1307(uint8_t data_pin, uint8_t sclk_pin);
    Time getTime();
    void setTime(uint8_t hour, uint8_t min, uint8_t sec);
    void setDate(uint8_t date, uint8_t mon, uint16_t year);
    void setDOW(uint8_t dow);

    char *getTimeStr(uint8_t format=FORMAT_LONG);
    char *getDateStr(uint8_t slformat=FORMAT_LONG, uint8_t eformat=FORMAT_LITTLEENDIAN, char divider='.');
    char *getDOWStr(uint8_t format=FORMAT_LONG);
    char *getMonthStr(uint8_t format=FORMAT_LONG);

    void halt(bool value);
    void setOutput(bool enable);
    void enableSQW(bool enable);
    void setSQWRate(int rate);

    void writeBuffer(DS1307_RAM r);
    DS1307_RAM readBuffer();
    void poke(uint8_t addr, uint8_t value);
    uint8_t peek(uint8_t addr);

    private:
    uint8_t _scl_pin;
    uint8_t _sda_pin;
    uint8_t _burstArray[8];

    void _sendStart(byte addr);
    void _sendStop();
    void _sendAck();
    void _sendNack();
    void _waitForAck();
    uint8_t _readByte();
    void _writeByte(uint8_t value);
    void _burstRead();
    uint8_t _readRegister(uint8_t reg);
    void _writeRegister(uint8_t reg, uint8_t value);
    uint8_t _decode(uint8_t value);
    uint8_t _decodeH(uint8_t value);
    uint8_t _decodeY(uint8_t value);
    uint8_t _encode(uint8_t vaule);
    };
    #endif
     
  4. Дисплей у вас какой? сколько символов и строк?
     
  5. lorgus

    lorgus Нуб

    а программе Fritzing отсутствует 4 строчный дисплей... не знаю как схему нарисовать ... =0(((
     
  6. lorgus

    lorgus Нуб

    20 символов на 4 строки
    да и датчика dht11 не нашел =0(((
     
    Последнее редактирование: 4 дек 2014
  7. Тогда идей нет. Попробуйте заносить температуру и влажность в переменные.
     
  8. lorgus

    lorgus Нуб

    поищу в чем нарисовать схему....
    "Тогда идей нет. Попробуйте заносить температуру и влажность в переменные." .... например ????
     
  9. Библиотека отсюда https://github.com/amperka/dht
    float temp, humi;
    dht11.read(humi, temp);
    .....
    lcd.print(humi);
    Или пробовать отладить частями сначала дисплей + часы, потом добавить датчик
     
  10. lorgus

    lorgus Нуб

    дисплей и с часами и с датчиком отдельно работает , а вот вместе никак....
    с часами:
    с датчиком:

     
  11. А не пробовали поискать, может где нибудь одинаковые переменные или константы ???????
     
  12. lorgus

    lorgus Нуб

    это первое, что пришло в голову.... искал... повторов не нашел....
     
  13. Странный код у вас

    if (sensor.temperature < t2); Вот это что Делает ?

    if (sensor.temperature > t2); вот это что Делает


    Может так ?????

    Код (Text):
    if (sensor.temperature < t2)
      {
          lcd.setCursor(10, 3);
          lcd.print("on ");
      }
    Если не подписывать код, там сами потом в нем не разберетесь. Ставьте комментарии на каждое действие.
     
  14. lorgus

    lorgus Нуб

    "Странный код у вас

    if (sensor.temperature < t2); Вот это что Делает ?

    if (sensor.temperature > t2); вот это что Делает"
    сорри не стер... эт дальше будет... сравнение температур....
     
  15. lorgus

    lorgus Нуб

    решено, хотя не понимаю...
    поменял местами порядок вывода данных, т.е. на первом месте температура на втором время и дата и все заработало... не пойму только в почему так произошло....
     
  16. lorgus

    lorgus Нуб

    Тема закрыта. Всем ОГРОМНОЕ Спасибо!!!
     
  17. Вывод данных (Переменные).