Arduino Polska Forum
Ograniczenie zakresu wyświetlanego wyniku - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Ograniczenie zakresu wyświetlanego wyniku (/watek-ograniczenie-zakresu-wy%C5%9Bwietlanego-wyniku)



Ograniczenie zakresu wyświetlanego wyniku - Rafcio_3D - 24-07-2020

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


RE: Ograniczenie zakresu wyświetlanego wyniku - Jarewa0606 - 24-07-2020

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


RE: Ograniczenie zakresu wyświetlanego wyniku - Rafcio_3D - 24-07-2020

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


RE: Ograniczenie zakresu wyświetlanego wyniku - Jarewa0606 - 24-07-2020

Tu nie zadziała musisz osobno..

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

h= constrian(h, 0,99)


RE: Ograniczenie zakresu wyświetlanego wyniku - Rafcio_3D - 24-07-2020

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


RE: Ograniczenie zakresu wyświetlanego wyniku - Agregacik - 24-07-2020

A nie wystarczy użyć if i po kłopocie.
if (h > 99)
{
h = 99;
}