Skocz do zawartości

Wyświetlanie temperatury minimalnej i maksymalnej na wyświetlaczu


Spoke

Pomocna odpowiedź

Cześć, 

Czy jest możliwe bez modułu pamięci EEPROM wyświetlać wartości temperatur minimalnych i maksymalnych z czujników DS18B20. Wykonałem prosty termometer pokazujący temperaturę wewnątrz oraz na zewnątrz na tych czujnikach DS18B20, ale chciałbym mieć również podgląd do wyników za jakiś okres czasu temperatur minimalnych i maksymalnych.

 image.thumb.png.d7b4418b1b73a99aa9123e9bd596d4c5.png

Link do komentarza
Share on other sites

Nie wiem jestem początkujący, chciałbym np. aby programik pokazywał temperaturę minimalną i maksymalną z ostatnich 12h. Rozumiem, że program będzie tylko porównywał wartość obecnej temp. z wartością zapisaną i jeśli ta obecna będzie niższa to zanotuje tą wartość, aż do kolejnej takiej sytuacji - jesli mówimy o temp min. 

Link do komentarza
Share on other sites

Jeżeli nie zależy ci na odporności na wyłączenie zasilania to po prostu przechowujesz w jakichś zmiennych max i min dotychczasowy i z każdym odczytem porównujesz zapisane x aktualną i ewentualnie nadpisujesz. A eeprom spowoduje że na wieki możesz ją przechowywać (póki pamięć nie zrobi papa)

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Coś ulepiłem i dla wartości MAX pokazuje w porządku, lecz dla wartości MIN niestety pokazuje mi 0,0 st. C. 

Kod: 

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Adafruit_SH1106.h>
#include <Wire.h>


#define ONE_WIRE_BUS 2
#define OLED_RESET 4

Adafruit_SH1106 display(OLED_RESET);
OneWire oneWire(ONE_WIRE_BUS);	
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer, outsideThermometer;
int deviceCount = 0;

float tempC;
float maxTemp;
float minTemp;

void setup(void)
{
  sensors.begin();	// Start up the library
  Serial.begin(9600);
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();  
  display.display();
  sensors.setResolution(insideThermometer, 11); 
  sensors.setResolution(outsideThermometer, 11); 
}

void loop() {             // temperature comes in as a float with 2 decimal places
  sensors.requestTemperatures();
  float tempC1 = sensors.getTempCByIndex(0);
  float tempC2 = sensors.getTempCByIndex(1);
  if (tempC1>maxTemp){maxTemp = tempC1;}
  if (tempC1<minTemp){minTemp = tempC1;}
  

  
  delay(500);
  // set up OLED text size and print the temperature data
  display.clearDisplay();
  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("Temp IN"); //Napis Temp IN

  display.setCursor(0, 15);
  display.print(tempC1, 2);  //Zaokrąglenie
  display.print((char)247);  //Symbol stopnia
  display.println("C");

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(70, 0);
  display.println("Temp OUT");

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(70, 15);

  display.print(tempC2, 2);  // rounded to 1 decimal place
  display.print((char)247);              // degree symbol
  display.println("C");


  display.setCursor(0, 30);
  display.print(maxTemp, 2);  //Zaokrąglenie
  display.print((char)247);  //Symbol stopnia
  display.print("C ");
  display.print((char)62);

  display.setCursor(0, 40);
  display.print(minTemp, 2);  //Zaokrąglenie
  display.print((char)247);  //Symbol stopnia
  display.print("C ");
  display.print((char)60);

  display.display(); 
}

image.thumb.png.86309054781366f70c4f4663236cdcd7.png

Link do komentarza
Share on other sites

A jeśli zależy Ci na długim przechowywaniu danych to musisz się zainteresować epromem..Nano ma go 1kb więc dla Ciebie aż nad to..poczytaj o EEMEM, to ułatwia poruszanie się po epromie, nie trzeba pamiętać gdzie co się zapisało bo poruszasz się po nazwach zmiennych..

  • Lubię! 1
Link do komentarza
Share on other sites

W zegarze mam wyjście SCL natomiast chce kabelkami na płytce wpiąć się do lini od wyświetlacza i tam mam SCK.

Czy mogę tam zrobić jeśli na jednym urządzeniu mam SCL a na innym SCK i oba te piny będą podłączone razem ?

SDA, VCC, GND analogicznie chce od zegara podłączyć pod linie z wyświetlacza na płyce. 

Zegar to DS3231

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.