Jak przesłać odczyt z kilku Analogowych Pin A10, A12, A7 ESP32

elektronik9
Posty: 23
Rejestracja: wt paź 13, 2020 11:01 am

Jak odczytać i przeałać dane z kilku wejść Analogowych na esp32 w SuplaDevice?
Na jednym wejściu Analogowym na esp8266 w SuplaDevice wszystko działa ale już nakilku wejściach nie wiem jak to napisać.
Proszę o pomoc.

//*********************************************************************
class AnalogValue : public Supla::Sensor::Thermometer {
public:
AnalogValue(float pin) : pin(pin) { }

void onInit() {
pinMode(A0, INPUT);

channel.setNewValue(getValue());

} //Koniec void onInit()


double getValue() {

return analogRead(pin)*300.0/1024;

}

protected:

float pin;

};
//*******************************************************
Awatar użytkownika
klew
Posty: 2844
Rejestracja: czw cze 27, 2019 12:16 pm

Tutaj ustawiasz tylko jedno wejście w tryb INPUT.
pinMode(A0, INPUT);

Powinieneś ustawiać "pin".

Druga rzecz - zmień typ zmiennej pin na "int", albo jakiś inny typ całkowity.
elektronik9
Posty: 23
Rejestracja: wt paź 13, 2020 11:01 am

To co podałem to mi działa wpisywałem też zamiast pin A0 i też działa ale w esp32 mam więcej wejść Analogowych i wpisałem np. A12, A10 i inne ale tylko przesyła z jednego wejścia a resztę nie wiem jak dopisać żeby np. z 3 wejść Analogowych odczytywało i przesyłało do SuplaDevice bo jak dopiszę więcej to wtedy jest błąd. Jak to rozpisać na 3 wej. Analogowe nie mam pojęcia. Proszę o pomoc jak ktoś wie.
lukfud
Posty: 1182
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

elektronik9 pisze: pn lip 26, 2021 8:52 pm To co podałem to mi działa wpisywałem też zamiast pin A0 i też działa ale w esp32 mam więcej wejść Analogowych i wpisałem np. A12, A10 i inne ale tylko przesyła z jednego wejścia a resztę nie wiem jak dopisać żeby np. z 3 wejść Analogowych odczytywało i przesyłało do SuplaDevice bo jak dopiszę więcej to wtedy jest błąd. Jak to rozpisać na 3 wej. Analogowe nie mam pojęcia. Proszę o pomoc jak ktoś wie.

Kod: Zaznacz cały

class AnalogSensor : public Supla::Sensor::Thermometer {
  public: AnalogSensor(int pin) : pin(pin) {}
  void onInit() { 
    pinMode(pin, INPUT);
    channel.setNewValue(getValue()); }
  double getValue() { 
    return analogRead(pin)*300.0/1024; 
   }
  protected: int pin;
};
W setup() dodajesz:

Kod: Zaznacz cały

new AnalogSensor(A0);
new AnalogSensor(A7);
new AnalogSensor(A10);
new AnalogSensor(A12);
elektronik9
Posty: 23
Rejestracja: wt paź 13, 2020 11:01 am

W setup mi ałem dodane : new AnalogValue(analogInPin);
Czy to wystarczy tylko tak dopisać w setup jak podałeś a w tym miejscu co ja podałem to nic nie dopisywać żadnych wejść Analogowych a jeżeli dopisać to jak należy dopisać pozostałe wej. Analogowe bo co dopiszę jest błąd.
lukfud
Posty: 1182
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

elektronik9 pisze: pn lip 26, 2021 9:38 pm W setup mi ałem dodane : new AnalogValue(analogInPin);
Czy to wystarczy tylko tak dopisać w setup jak podałeś a w tym miejscu co ja podałem to nic nie dopisywać żadnych wejść Analogowych a jeżeli dopisać to jak należy dopisać pozostałe wej. Analogowe bo co dopiszę jest błąd.
Wstaw dokładnie tak, jak podałem.
elektronik9
Posty: 23
Rejestracja: wt paź 13, 2020 11:01 am

Bardzo dziękuję za pomoc. Wczoraj było już późno dopiero dziś wpisałem i żadnego błędu niema jest Ok. zostało mi jeszcze wgrać i sprawdzić na płytce esp32. jak będzie działać to wtedy podzielę się wiadomością czy jest Ok.
elektronik9
Posty: 23
Rejestracja: wt paź 13, 2020 11:01 am

Witam ponownie trochę zeszło mi się z tymi próbami ale najważniejsze że wszystko działa tylko musiałem zmienić oznaczenia w Pin Analogowych zamiast np. new AnalogSensor(A7); trzeba napisać : new AnalogSensor(35); nie tak jak przy Arduino (A0, A1)
ale to mały szczegół. Jeszcze raz Wielkie Dzięki Kolego.
lukfud
Posty: 1182
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

elektronik9 pisze: czw lip 29, 2021 8:10 pm Witam ponownie trochę zeszło mi się z tymi próbami ale najważniejsze że wszystko działa tylko musiałem zmienić oznaczenia w Pin Analogowych zamiast np. new AnalogSensor(A7); trzeba napisać : new AnalogSensor(35); nie tak jak przy Arduino (A0, A1)
ale to mały szczegół. Jeszcze raz Wielkie Dzięki Kolego.
Nie ma sprawy ;)
ODPOWIEDZ

Wróć do „supla-dev”