Przygodę z Suplą zacząłem stosunkowo niedawno. Obecnie próbuję zaimplementować odczyt temperatury z wykorzystaniem protokołu modbus.
Napotkałem jednak problem przy próbie dodania do Supli większej ilości termometrów DS18B20 (tylko takie są obsługiwane).
Zanim zabiorę się za komunikację przez Modbus postanowiłem przetestować samą funkcjonalność dodawania większej ilości termometrów.
Na potrzeby testu zamiast fizycznej temperatury próbuję wyświetlić wartości odczytane z portów analogowych Arduino Mega.
Stworzyłem 5 kanałów:
Code: Select all
SuplaDevice.addDS18B20Thermometer(); //CHANNEL 0
SuplaDevice.addDS18B20Thermometer(); //CHANNEL 1
SuplaDevice.addDS18B20Thermometer(); //CHANNEL 2
SuplaDevice.addDS18B20Thermometer(); //CHANNEL 3
SuplaDevice.addDS18B20Thermometer(); //CHANNEL 4Code: Select all
// Set temperature callback
SuplaDevice.setTemperatureCallback(&get_temperature);Code: Select all
// DS18B20 Sensor read implementation
double get_temperature(int channelNumber, double last_val)
{
double t = -99;
if (channelNumber == 0 )
{
t = analogRead(0);
}
else if (channelNumber == 1 )
{
t = analogRead(1);
}
else if (channelNumber == 2 )
{
t = analogRead(2);
}
else if (channelNumber == 3 )
{
t = analogRead(3);
}
else if (channelNumber == 4 )
{
t = analogRead(4);
}
else
{
t = -98;
}
return t;
}Proszę o pomoc doświadczonych kolegów w znalezieniu problemu.
Próbowałem podpinać serial monitor o otrzymywałem komunikaty że wartości zostały zaktualizowane (Value changed) dla wszystkich pięciu kanałów. Nie miało to jednak odzwierciedlenia w Supla Claud oraz aplikacji mobilnej.
