Skocz do zawartości

Problem z termometrem DS18b20 oraz zegarem czasu rzeczywistego DS3231


kuki12110

Pomocna odpowiedź

Cześć,

Napisałem program zajmujący się włączaniem pina przy określonej temperaturze oraz włączanie drugie pina o pewnej godzinie oraz pewnej wadze (moduł HX711). Problem wygląda tak, że kiedy w programie mam wykrywanie czasu i wprowadzenia alarmu to arduino przestaje wykrywać temperaturę i wypisuje ją równą -127 stopni. Kiedy usuwam linijki kodu z void setup oraz void loop związane z alarmem i zegarem arduino zaczyna wykrywać poprawna temperaturę. Biblioteki których użyłem do termometru są z kursu, a bibliotek której użyłem do alarmu to https://github.com/jarzebski/Arduino-DS3231. Czy jest coś co mogę na to poradzić? Oczywiście mój zamysł to włączanie funkcji pomiaru wagi o określonych godzinach wiec zmiana biblioteki i programu wchodzi w gre.

#include <OneWire.h>
#include <DallasTemperature.h>
#include <DFRobot_HX711.h>
#include <Wire.h>
#include <DS3231.h>

DS3231 clock; //Bibiloteka Zegar
RTCDateTime dt; //Zmienna do odczytu 

DFRobot_HX711 MyScale(A2, A3);  //Waga

OneWire oneWire(A5); //Bibiloteka 
DallasTemperature sensors(&oneWire); //Bibilioteka Termometr

//Przypisanie Termometrów
 DeviceAddress termometrZew = { 0x28, 0xFF, 0x48, 0x5A, 0x7C, 0x18, 0x1, 0xCC };  
 DeviceAddress termometrWod = { 0x28, 0xFF, 0x48, 0xA, 0x79, 0x18, 0x1, 0x21 } ;


    int i = 0; //Zmienna do Termometru
    int w = 0; //Zmianna do wagi

void setup(void) {
  Serial.begin(9600);
  sensors.begin(); //Inicjalizacja czujnikow
  clock.begin();  //Inicjalizacja Zegara

  // Reset oraz wyłączenie alarmu 
  clock.armAlarm1(false);
  clock.armAlarm2(false);
  clock.clearAlarm1();
  clock.clearAlarm2();

  pinMode(8, OUTPUT); 
  pinMode(7, OUTPUT); 

  //Ustawienie Alarmów
  clock.setAlarm1(0, 16, 0, 0, DS3231_MATCH_S);
 
  clock.setAlarm2(0, 23, 0, 0, DS3231_MATCH_S);
  }
 
void loop(void) { 

//CZĘŚĆ ODPOWIEDZIALNA ZA PODGRZEWANIE WODY
  sensors.requestTemperatures(); //Pobranie temperatury czujnika

 //Wyswietlenie informacji (do weryfikacji czy termometry działają za pomoca aplikacji Arduino IDE)
  Serial.print("Temperatura otoczenia ");
  Serial.println(sensors.getTempC(termometrZew));  
  
  Serial.print("Temperatura wody ");
  Serial.println(sensors.getTempC(termometrWod));

  Serial.print(MyScale.readWeight(), 1);
  Serial.println(" g");

 //Pomiar tempertaury 
  int Zew = sensors.getTempC(termometrZew);
  int Wod = sensors.getTempC(termometrWod);
  
 //Załączenie pina odpowiedzialnego za grzałke
  if (i == 0) {
      digitalWrite(8,LOW);  
    };
   
  if (Zew <= 15 && Wod <= 8) {
      i++;
    };      
         
    if (i > 0) {
      digitalWrite(8,HIGH);
      if (Wod >= 12)  {
          digitalWrite(8,LOW);
          i = 0;
       }
      }




//CZĘŚĆ ODPOWIEDZIALNA ZA PODAWANIE KARMY

  dt = clock.getDateTime(); //Odczytywanie daty

  int Waga = MyScale.readWeight();  //Pomiar wagi

  if (w == 0) {
       digitalWrite(9,LOW);
      };

  //Załączanie wyjścia silnika za pomocą alarmów
  if (clock.isAlarm1()){

    if (Waga < 200) {
      w++;
    };      
    }

  if (clock.isAlarm2()){

    if (Waga < 200) {
      w++;
    };      
         
    }
    
    if (w > 0) {
      digitalWrite(9,HIGH);
      if (Waga >= 800)  {
        digitalWrite(9,LOW);
        w = 0;
       }
      }
    
  delay(1000);

 
 }

 
  

 

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.