• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Ograniczenie zakresu wyświetlanego wyniku
#1
Witam potrzebuję porady dotyczącej ograniczenia wyniku odczytywanego z czujnika DHT22.

Odczyt temperatury i wilgotności wyświetlany jest na czterocyfrowym wyświetlaczu, i mam problem ponieważ gdy wyświetla się wilgotność 100% to na wyświetlaczu jest tylko 1... potrzebuję ograniczyć wyniki czujnika do zakresu 0 - 99.

Próbowałem funkcji constrain(x,a,b) lecz nic z tego mi nie wyszło  Sad

Ma ktoś pomysł jak to zrobić?

Mój kod:
Kod:
#include <DHT.h>
#include <TM1637Display.h>

#define DHTPIN 50
#define DHTTYPE DHT22

#define CLK 48
#define DIO 49

DHT dht(DHTPIN, DHTTYPE);
TM1637Display display(CLK, DIO);

uint8_t stC[] = {
  SEG_A | SEG_F | SEG_G | SEG_B,
  SEG_A | SEG_F | SEG_E | SEG_D
};
uint8_t hum[] = {
  SEG_F | SEG_E | SEG_G | SEG_C,
  SEG_E | SEG_D | SEG_C
};

int ModePin = 53;
int val = 0;

void setup()
{
  Serial.begin(9600);
  dht.begin();

  display.setBrightness(0x08);

  pinMode(ModePin, INPUT);
}

void loop()
{
  val = digitalRead(ModePin);

  if (val >= 1)
  {
    int t = dht.readTemperature();
    int h = dht.readHumidity();

    display.showNumberDecEx(t, 0b01000000, false, 2, 0);
    display.showNumberDecEx(h, 0b01000000, false, 2, 2);
    delay(500);

    val = digitalRead(ModePin);
  }

  else
  {
    int t = dht.readTemperature();
    int h = dht.readHumidity();
   
    display.setSegments(stC, 2, 2);
    display.showNumberDec(t, false, 2, 0);
    delay(2500);

    display.setSegments(hum, 2, 2);
    display.showNumberDec(h, false, 2, 0);
    delay(2500);

    val = digitalRead(ModePin);
  }
}



Pozdrawiam
 
Odpowiedź
#2
To funkcja jest to co chciałeś.. Co tam nie wychodzi bo w kodzie jej nie ma i nie wiem co z nią robisz że się nie udaje
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#3
Generalnie to nie mam pojęcia gdzie ją zastosować 

próbowałem tu 

Kod:
    int t = dht.readTemperature();
    int h = dht.readHumidity(constrain(h, 0, 99));

    display.showNumberDecEx(t, 0b01000000, false, 2, 0);
    display.showNumberDecEx(h, 0b01000000, false, 2, 2);
    delay(500);

ale to nic nie daje
 
Odpowiedź
#4
Tu nie zadziała musisz osobno..

Po odczycie poniżej przed wyświetleniem dołącz linijke

h= constrian(h, 0,99)
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#5
Hmm tak zrobiłem i nadal to samo pokazuje 24:_1 pierwsze dwie to temperatura a drugie to wilgotność czasem mu coś zatrybi i pokazuje 23 56 78 99 _1 przykładowo w takiej kolejności może czujnik sie popsuł? zazwyczaj nie przekraczało 99% wilgotności a tu nagle jest _1
 
Odpowiedź
#6
A nie wystarczy użyć if i po kłopocie.
if (h > 99)
{
h = 99;
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości