#1 2018-02-18 23:25:25

ilyasan
Участник
Зарегистрирован: 2017-02-10
Сообщений: 26

TM1638 и DHT11

Долго рылся в сети на предмет вменяемого скетча на TM1638
(Модуль индикации и управления на TM1638)
large_AOC510-1.jpg
нужно было избавится от немерянного количества пинов на 7 сегментник выводящий данные от DHT11  (12 шт)
пока на ( испанском сайте )  не набрел на рабочий скетч.
Кажет одновременно влажность и температуру. Весьма скромен размерами и не мерехтит индикатор.
Сейчас ковыряю скет что бы можно было попеременно снимать данные с двух датчиков
( не влезают в панель управления домом оба TM1638 )

/*
xsetaseta@gmail.com
Juan Galaz
4/SEP/2017
*/

#include <TM1638.h>

//data(I/O) pin 8, clock(CLK) pin 9 , strobe(STB) pin 7
TM1638 module(8, 9, 7);

#include <Wire.h>
//#include <VirtualWire.h>
#include "DHT.h"

#define DHTPIN 3     // what pin we're connected to
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);

float h,t;
int hi,ti;

char cadena[20];

void setup()
{
  Serial.begin(9600);
   dht.begin();
//activa intensidad con nivel 2
  module.setupDisplay(1,0);
  module.setDisplayToString("SENSOR  ",0,0);
  delay(500);
}

void loop()
{
  h = dht.readHumidity();
  t = dht.readTemperature();

if (isnan(t) || isnan(h))
    {
    Serial.println("Failed to read from DHT");
    }
  else
    {     
      hi=h;
      ti=t*10;
     
      Serial.print("Humedad="); Serial.print(hi);
      Serial.print("     Temperatura="); Serial.println(ti);
     
      sprintf(cadena,"H%2d %3d*",hi,ti);
      if(ti>-100)
        {module.setDisplayToString(cadena,4,0);}
        else
        {module.setDisplayToString(cadena,2,0);}
      Serial.println(cadena);     
    }
   
delay(1000);
}

Редактировался ilyasan (2018-02-18 23:27:48)

#2 2018-02-19 17:23:23

ilyasan
Участник
Зарегистрирован: 2017-02-10
Сообщений: 26

Re: TM1638 и DHT11

Слепил в кучу два датчика.    ( этот модуль только часть глобального скетча с массой датчиков, ШИМ и условий )
Расхождение по показаниям на 1 единицу по влажности и  температуре.
Требует доработки в индикации верхним светодиодом какой из датчиков в данный момент опрашивается.
Цель: Два датчика поставлены один в ванной второй в кухне под мойкой.
Включение  ШИМ  на вентиляторы в ванной  в случае существенного разрыва между показаниями обоих датчиков
( привязка включения вентиляции  к конкретному уровню может при повышении влажности на улице дать ложную сработку)

 
//data(I/O) pin 47, clock(CLK) pin 48 , strobe(STB) pin 49
#include <TM1638.h>
TM1638 module(47, 48, 49);
#include <Wire.h>
#include "DHT.h"

#define DHTTYPE DHT11   // DHT 11

DHT dht1 (3, DHTTYPE);
DHT dht2 (4, DHTTYPE);
#define DHTPIN 3
#define DHTPIN 4   

unsigned long last_time;


float h,t;
int hi,ti;

char cadena[20];

void setup()
{
  Serial.begin(9600);
   dht1.begin();
   dht2.begin();
   
  module.setupDisplay(1,0);
  module.setDisplayToString("SENSOR  ",0,0);
  delay(500);
}

void loop()
{
 
if (millis() -last_time > 5000) {
  last_time = millis();

  h = dht1.readHumidity();
  t = dht1.readTemperature();
}
else
{
 
  h = dht2.readHumidity();
  t = dht2.readTemperature();
}
    {   
      hi=h;
      ti=t*10;
      sprintf(cadena,"H%2d %3d*",hi,ti);
      if(ti>-100)
        {module.setDisplayToString(cadena,4,0);}
        else
        {module.setDisplayToString(cadena,2,0);}
      Serial.println(cadena);   
   }
}

Редактировался ilyasan (2018-02-20 12:48:04)

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела