Skocz do zawartości

Kurs Arduino II - #7 - termometry analogowe i cyfrowe


Pomocna odpowiedź

Tak, wiem. Nie dało się edytować, od razu dodałem już odpowiedni.

 

Wydaje mi się, że częstotliwość "odpytywania" czujnika nie ma tutaj wpływu, bo aktualna temperatura wyświetla się zawsze prawidłowo. Maksymalna tak samo. Ale bawię się od 3 tygodni więc wiedzę i doświadczenia za bardzo nie mam. I pomysłu co zrobić, by to zadziałało. Ciekawe jest to, że przekopałem sieć i w kilku znalezionych przykładach kod wygląda w ten sam sposób i podobno działa. 

Link do komentarza
Share on other sites

12 godzin temu, gracjuszek10 napisał:

aktualna temperatura wyświetla się zawsze prawidłowo

Bo problem jest w początkowym ustalaniu TempMin.

TempMin odczytywana jest jako druga, zbyt szybko po TempMax, więc otrzymuje wartość 0.

Przy dalszych pomiarach temperatura aktualna jest zawsze większa od 0, więc minimalna pozostaje bez zmian.

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

Dnia 1.12.2023 o 12:37, Santiago napisał:

Jak inicjujesz zmienną TemperaturaMin tonadaj jej wartość np 50.  Bo jak ma 0 to co ma być zmieniane ?

Tak też robiłem i nadal nie działało. Ten  kod to po prostu jeden z wielu które próbowałem. 

 

Problem już rozwiązany. Faktycznie problemem było to, że tuż po resecie czujnik "pokazywał" temperaturę 0 stopni. Wystarczyło pierwsze pomiary opóźnić o kilka sekund.

Dziękuję za pomoc.

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

Zadanie 7.2

#define LM35_0 A0   //czujnik temp.
#define B_MIN 8   //przyciski temp. min. oraz max.
#define B_MAX 9

float tempMIN = 150;
float tempMAX = 0;
byte clock = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(B_MIN, INPUT_PULLUP);
  pinMode(B_MAX, INPUT_PULLUP);
}

void loop()
{
  float temp = ((analogRead(LM35_0) * 5.0 / 1024.0) * 100);
  clock ++;  //licznik zegara

  if(temp < tempMIN)   //zapis temp. min. do zmiennej
  {
    tempMIN = temp;
  }

  if(temp > tempMAX)   //zapis temp. max. do zmiennej
  {
    tempMAX = temp;
  }

  if(digitalRead(B_MIN) == LOW)
  {
    Serial.print("Temp. MIN: ");
    Serial.print(tempMIN);
    Serial.println("*C\n");

    while(digitalRead(B_MIN) == LOW);   //blokada ponownego wyświetlania podczas trzymania przycisku
    delay(25);                          //zabezpieczenie przed drganiem styku przycisku
    clock = 0;   //reset zegara

  }else if(digitalRead(B_MAX) == LOW)
    {
      Serial.print("Temp. MAX: ");
      Serial.print(tempMAX);
      Serial.println("*C\n");

      while(digitalRead(B_MAX) == LOW);   //blokada ponownego wyświetlania podczas trzymania przycisku
      delay(25);                          //zabezpieczenie przed drganiem styku przycisku
      clock = 0;   //reset zegara

    }else if(clock == 20)   //zegar odliczający 2 sec. przy pomocy koncowego delay(100)
      {
        Serial.print("Aktualna temp: ");
        Serial.print(temp);
        Serial.println("*C\n");
        clock = 0;   //reset zegara
      }

  delay(100);
}

 

Link do komentarza
Share on other sites

(edytowany)
Treker
Ta treść została wynagrodzona przez moderatora!

VMax otrzymał odznakę: "Korektor (za znalezienie błędu w artykule)"

Link do biblioteki One-Wire w części #7 wygasł. Sugeruję dodanie linku prowadzącego wprost do biblioteki żeby początkujący nie musieli długo szukać.

Edytowano przez VMax
  • Lubię! 1
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.