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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.