GUI Generic

User avatar
artur_n
Posts: 466
Joined: Thu Aug 17, 2017 2:24 pm
Location: RJA

Post

Nic prócz czujnika nie ma podłączone.
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

Musiałem na szybko zrobić sterownik do RGBW, no i oczywiście wgrałem GUI Generic z RGBW. Działa bajecznie :).
To niesamowite @krycha88 jak rozwijasz ten projekt - TAK TRZYMAJ!.
Obecnie nie mam czasu na kodowanie bo większość czasu jestem w rozjazdach i widzę, że teraz jak coś zmienię to ja będę musiał robić pull request do Twojego forka :D . Dołożę linka na pierwszej stronie do Twojego repozytorium, żeby nikt nie musiał szukać.
Trzeba będzie jeszcze zmienić opis funkcji bo jest duuuużo zmian (a może ktoś inny to zrobi :D a ja tylko wkleję ). Dobrze by było jakbyś zrobił na githubie jakieś miejsce na aktualne firmware i tam je umieszczaj. Przyznam, że trochę się naszukałem za nim znalazłem ten z RGBW a nie miałem przy sobie swojego komputera i nie mogłem kompilować.
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
Patryk
Posts: 2944
Joined: Mon Jan 07, 2019 7:51 pm
Location: Rybnik

Post

Jak by ktoś chciał używać czujnika termopary MAX31855 w GUI-Generic, to już można.
@elmaya udostępnił nową bibliotekę MAX6675.
Wystarczy podmienić dwa pliki (MAX6675) w bibliotece SuplaDevice.
Biblioteka sama wykrywa jaki mamy czujnik.
Czy MAX6675, czy MAX31855.
MAX31855 jest dokładniejszy oraz pokazuje również ujemne wartości temperatury.
You do not have the required permissions to view the files attached to this post.
noel841106
Posts: 32
Joined: Mon Mar 26, 2018 7:14 pm

Post

Wow, extra, to się przyda:-) kilka razy używałem w swoich projektach ukladu max do odczytu termopary.
Może przegapiłem, ale jest możliwość wykorzystania ADC? Jest to wejście analogowe oprogramowane?
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

Espablo wrote: Thu Feb 11, 2021 7:49 am Musiałem na szybko zrobić sterownik do RGBW, no i oczywiście wgrałem GUI Generic z RGBW. Działa bajecznie :).
To niesamowite @krycha88 jak rozwijasz ten projekt - TAK TRZYMAJ!.
Obecnie nie mam czasu na kodowanie bo większość czasu jestem w rozjazdach i widzę, że teraz jak coś zmienię to ja będę musiał robić pull request do Twojego forka :D . Dołożę linka na pierwszej stronie do Twojego repozytorium, żeby nikt nie musiał szukać.
Trzeba będzie jeszcze zmienić opis funkcji bo jest duuuużo zmian (a może ktoś inny to zrobi :D a ja tylko wkleję ). Dobrze by było jakbyś zrobił na githubie jakieś miejsce na aktualne firmware i tam je umieszczaj. Przyznam, że trochę się naszukałem za nim znalazłem ten z RGBW a nie miałem przy sobie swojego komputera i nie mogłem kompilować.
Cały czas do przodu. Faktycznie trzeba by zrobić trochę porządek- odezwę się wieczorem :)

Cały czas zachęcam do napisania przez kogoś wiki ;)
https://gui-generic-builder.supla.io/
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

artur_n wrote: Wed Feb 10, 2021 4:59 pm Wyjściem z tej sytuacji jest możliwość wyboru czasu odczytu z czujnika?
Jakiejś dużej dokładności nie potrzeba, z zapyleniem też nie mam problemu, monitoruje poziom soli w uzdatniaczu, prędzej go opary soli zjedzą jak pył.
Napisałem po swojemu obsługę HC_SR04 opierając się na bibliotece https://playground.arduino.cc/Code/NewPing/

Po mich krótkich testach pomiary wydają się zdecydowanie stabilniejsze ;) Proszę o jakąś informację zwrotną.
You do not have the required permissions to view the files attached to this post.
https://gui-generic-builder.supla.io/
User avatar
artur_n
Posts: 466
Joined: Thu Aug 17, 2017 2:24 pm
Location: RJA

Post

Jak tylko wrócę do domu to biorę się za testy.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Wrzuciłem stabilizowany HC_SR04 ;)

Użyłem algorytmu znanego wszystkim ze skoków narciarskich. Robimy 5 pomiarów, odrzucamy dwa skrajne i z tego liczymy średnią ;)
Pomiary są co 100 ms, więc opóźnienie (np. dla czujnika parkowania) nie jest jakieś zauważalnie duże. Natomiast stabilność pomiarów jest dużo większa.
Mój egzemplarz HC_SR04 tylko przy odległości ~2 m generuje czasem jakiś dziwny wynik. Przy 50 cm mam w miarę stabilne pomiary (raczej +-2 cm się pojawia). Dodałem też "noInterrupts()" na czas pomiaru pulsu, bo przerwanie w trakcie pomiaru może być źródłem niespodzianek.

(kod jak na razie u mnie na branchu develop)
Najlepsze suple dla Twojego domu :mrgreen:
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

klew wrote: Thu Feb 11, 2021 1:11 pm Wrzuciłem stabilizowany HC_SR04 ;)

Użyłem algorytmu znanego wszystkim ze skoków narciarskich. Robimy 5 pomiarów, odrzucamy dwa skrajne i z tego liczymy średnią ;)
Pomiary są co 100 ms, więc opóźnienie (np. dla czujnika parkowania) nie jest jakieś zauważalnie duże. Natomiast stabilność pomiarów jest dużo większa.
Mój egzemplarz HC_SR04 tylko przy odległości ~2 m generuje czasem jakiś dziwny wynik. Przy 50 cm mam w miarę stabilne pomiary (raczej +-2 cm się pojawia). Dodałem też "noInterrupts()" na czas pomiaru pulsu, bo przerwanie w trakcie pomiaru może być źródłem niespodzianek.

(kod jak na razie u mnie na branchu develop)
Przetestuję ale ping_median z biblioteki powyżej co podałem też działa dobrze :)

Aktualnie zrobiłem to w taki sposób:

Code: Select all

class HC_SR04 : public Distance {
 public:
  HC_SR04(int8_t trigPin, int8_t echoPin, int16_t depth = 0) : retryCount(0) {
    _depth = depth;
    sonar = new NewPing(trigPin, echoPin);
  }
  void onInit() {
    channel.setNewValue(getValue());
  }

  virtual double getValue() {
    unsigned long uS = sonar->ping_median();

    if (uS < 50) {
      retryCount++;
      if (retryCount > 3) {
        retryCount = 0;
        value = DISTANCE_NOT_AVAILABLE;
      }
    } else {
      retryCount = 0;
      unsigned long distance = sonar->convert_cm(uS);

      if (_depth > 0) {
        value = map(distance, 0, _depth, _depth, 0);
        if (value > _depth) value = 0;
      } else {
        value = distance;
      }
      value = value / 100.0;
    }
    return value;
  }

 protected:
  NewPing *sonar = nullptr;
  double value;
  int16_t _depth;
  int8_t retryCount;
};

};  // namespace Sensor
};  // namespace Supla
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

krycha88 wrote: Thu Feb 11, 2021 1:18 pm Przetestuję ale ping_median z biblioteki powyżej co podałem też działa dobrze :)

Aktualnie zrobiłem to w taki sposób:
Pytanie czy jest sens dla takiego "drobiazgu" dodawać kolejną dependencję do zewnętrznej biblioteki.

Przy okazji, może lepiej by było gdybyć tą klasę nazwał inaczej, aby nie było konfliktu nazw, ale chociaż w osobny namespace.
Najlepsze suple dla Twojego domu :mrgreen:

Return to “GUI Generic”