Skocz do zawartości

Pytanie o klasy, obiekty, konstruktory, dziedziczenie...


Pomocna odpowiedź

4 minuty temu, ethanak napisał:

Nie blokujący oznacza, że nie blokuje na ileś tam czasu wykonania funkcji (w Twoim przypadku prawie sekunda).

ale w kodzie nie uzywam delayow🙄 Czy to ma związek z biblioteką ?

Narazie tak wykombinowałem dałem w klasie funkcje odczytu jako protected i potem dziedzicze klase.

Przerobie sobie dalej kurs, ale wazne ze juz światło w tunelu się pojawia.

// Include the libraries we need
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

float prevTemp;

class Temp {

protected:

  float getSensor() {

    static float prevTemp = -100;
    float temp = sensors.getTempCByIndex(0);
    printf("Temp %f\n", temp);
    sensors.requestTemperatures();  // Send the command to get temperatures
   

    if (temp != prevTemp) {
      prevTemp = temp;
      //displayTemperature(temp);
      printf("Jesli temp rozna wyslij %s\n", "Apka");
    }
     return temp;
  }
};

class MojaTemp : public Temp {
public:

  void uzyjFunkcjiDziedziczenia() {

    Temp::getSensor();
   
  }
}; MojaTemp dz;
   


void setup() {
  // start serial port
  Serial.begin(115200);
  Serial.println("Dallas Temperature IC Control Library");
  sensors.begin();
}



void loop() {

  static unsigned long czas;

  if (millis() - czas > 10000) {
    czas = millis();

    dz.uzyjFunkcjiDziedziczenia();
  }
}

 

Ważna kwestia, czy kod który piszesz ma cel użytkowy, czy tylko dydaktyczny?

Bo jeśli użytkowy to moim zdaniem nie potrzebujesz tu dziedziczenia, a jeśli dydaktyczny to mogę ci podesłać parę uczelnianych zadanek z programowania obiektowego, gdzie masz do przećwiczenia konstruktory, dziedziczenie i inne zagadnienia OOP.

  • Lubię! 1
(edytowany)

Tylko naukowo, kod nie będzie użyty.

Wiem że w tym kodzie nie potrzebna żadna klasa. Myślę że zwykła funkcja odczytu wystarczy, ale chciałem poćwiczyć na przykładzie ponieważ na przykładzie najlepiej mi się uczyć żeby zrozumieć.

Byłoby super, bardzo chce się nauczyć tych zagadnień jeśli chciałbyś wysłać.

Teraz czytałem o użyciu polimorfizmu i wskaźnikach polimorficznych. Fajna sprawa, żeby to opanować OOP

Edytowano przez nebraska

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...