Problemy z kanałami

User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Poszukuje pomocy w rozwikłaniu problemu nad którym walczę od rana i zaraz osiwieje,już niewiele mi brakuje.
Do rzeczy , pracuje nad pewnym projektem w którym wykorzystuje kanały czujników dht22 i ds18b20 :

Code: Select all

double get_temperature(int channelNumber, double last_val) {

    double t = -275;
     switch (channelNumber)
        {
   
        case 0:
         t =  myBH1750.readLightLevel();
          Serial.print("Light Level : ");
         Serial.println(t,2);
        break;
        }
    return t;  
}



void get_temperature_and_humidity (int channelNumber, double *temp, double *humidity){
    switch (channelNumber)
    {
   
        case 1:
        *temp = bme.readTemperature();
        *humidity = bme.readHumidity();
         Serial.print("Temp : ");
         Serial.print(*temp);
         Serial.print("  Wilg : ");
         Serial.println(*humidity);              
        break;
      case 2:
        *temp = pomiar25;
        *humidity = pomiar10;       
         Serial.print("PM2,5 : ");
         Serial.print(*temp);
         Serial.print(" PM10 : ");
         Serial.println(*humidity);        
        break;        
    } 

  
  }
i gdy zadeklaruje to tak :

Code: Select all

  SuplaDevice.addDS18B20Thermometer(); //bh1750
  SuplaDevice.addDHT22();       //bme280
  SuplaDevice.addDHT22();      //sds011 
wówczas to co jest w "case2" nie działa, tzn dane nie pokazują się a w aplikacji, tzn pojawią się raz , może dwie zmiany i coś się blokuje i przestaje odświeżać ,oczywiście serial.printy się drukują i dane są.

gdy zmieniłem kolejność deklaracji czujników tj ds18b20 na końcu, wówczas efekt jak opisałem dotyczy wówczas jego ,
tzn że problem dotyczy zawsze ostatniego zadeklarowano czujnika
gdzie popełniam błąd, w czym jest problem?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Może jest jakiś błąd w bibliotece. Musiałbyś więcej "printów" dodać do SuplaDevice.cpp
SUPLA.... Nareszcie w domu.
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Dla testu zrobiłem coś takiego :

Code: Select all

double get_temperature(int channelNumber, double last_val) {

    double t = -275;
     switch (channelNumber)
        {
   
        case 0:
         t =  myBH1750.readLightLevel();
          Serial.print("Light Level : ");
         Serial.println(t,2);
        break;
        
        case 1:
        t = bme.readTemperature();
         Serial.print("Temp : ");
         Serial.print(t);
         
        break;
        case 2:
        t = bme.readHumidity();
         Serial.print("  Wilg : ");
         Serial.println(t);              
        break;
      case 3:
        t = bme.readTemperature();
         Serial.print("PM2,5 : ");
         Serial.print(t);
         
        break;        
      case 4:
        t = bme.readHumidity();   
         Serial.print(" PM10 : ");
         Serial.println(t);        
        break;        
    }         
    return t;  
}
oczywiście w setup'ie jest 5 x ds18b20

efekt jest podobny przez chwilę jest ok, nagle dwa ostatnie kanały się zawieszają
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Spróbuj rozmiar kolejki zwiększyć
https://github.com/SUPLA/arduino/blob/m ... srpc.c#L46
z 2 na 10
SUPLA.... Nareszcie w domu.
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Pomogło, dzięki,
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)

Return to “Pomoc”