Nie testowałem, ale może coś w stylu:
OneWire oneWire1(22);
OneWire oneWire2(24);
OneWire oneWire3(26);
OneWire oneWire4(28);
DallasTemperature sensor1(&oneWire1);
DallasTemperature sensor2(&oneWire2);
DallasTemperature sensor3(&oneWire3);
DallasTemperature sensor4(&oneWire4);
double get_temperature(int channelNumber, double last_val) {
double t = -275;
DallasTemperature *sensor = NULL;
switch(channelNumber) {
case 0:
sensor = &sensor1;
break;
case 1:
sensor = &sensor2;
break;
case 2:
sensor = &sensor2;
break;
case 3:
sensor = &sensor3;
break;
};
if ( sensor != NULL && sensor->getDeviceCount() > 0 )
{
sensor->requestTemperatures();
t = sensor->getTempCByIndex(0);
};
return t;
}
i później w setup()
zamiast
sensors.begin();
wstaw
sensor1.begin();
sensor2.begin();
sensor3.begin();
sensor4.begin();
Arduino + supla.org - początki
-
- Posts: 66
- Joined: Sat Mar 19, 2016 4:38 pm
pzygmunt wrote:2. 16 - takie ograniczenie jest ustawione w https://github.com/SUPLA/arduino/blob/m ... oto.h#L123 ale można to zwiększyć w zależności od dostępnej pamięci. Bez dodatkowych bibliotek spokojnie można zwiększyć do 128 i jeszcze zostanie trochę pamięci.
Jak zwiekszyc ta ilosc do 20szt?
-
- Posts: 19465
- Joined: Tue Jan 19, 2016 9:26 am
- Location: Paczków
-
- Posts: 66
- Joined: Sat Mar 19, 2016 4:38 pm
No wlasnie zmienilem na 20 ale arduino I tak nie łaczy sie z supla
-
- Posts: 2068
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
Witam, potrzebuję odczytywać kilka temperatur na różnych gpio , bo na jednym to już potrafię
.
Zasugerowałem się pomocą Przemka ale niestety u mnie to nie działa.
U mnie to wygląda tak :
Na wszystkich kanałach pojawia się -275.
Jako że moje początki z Arduino zbiegły się z powstaniem Supli
, nie rozumiem zapisu
Co oznacza ta "strzałka" ?

Zasugerowałem się pomocą Przemka ale niestety u mnie to nie działa.
U mnie to wygląda tak :
Code: Select all
// Setup a oneWire instance
OneWire oneWire_CO(22); // Deklaracja pinu 22 jako magistrala OneWire dla czujnika temperatury CO
OneWire oneWire_IN(24);// Deklaracja pinu 22 jako magistrala OneWire dla czujnika temperatury wewnętrznej
OneWire oneWire_OUT(26); // Deklaracja pinu 22 jako magistrala OneWire dla czujnika temperatury Zewnętrznej
// Pass oneWire reference to Dallas Temperature
DallasTemperature sensors_CO(&oneWire_CO);
DallasTemperature sensors_IN(&oneWire_IN);
DallasTemperature sensors_OUT(&oneWire_OUT);
// DS18B20 Sensor read implementation
double get_temperature(int channelNumber, double last_val) {
double t = -275;
DallasTemperature *sensor = NULL;
if ( sensors_CO.getDeviceCount() > 0 )
switch(channelNumber) {
case 0: {
sensor = &sensors_CO;
Serial.print("Temp CO : ");
Serial.println(t,1);
break;
}
case 1:{
sensor = &sensors_IN;
Serial.print("Temp IN : ");
Serial.println(t,1);
break;
}
case 2: {
sensor = &sensors_OUT;
Serial.print("Temp OUT : ");
Serial.println(t,1);
break;
};
}
if ( sensor != NULL && sensor->getDeviceCount() > 0 )
{
sensor->requestTemperatures();
t = sensor->getTempCByIndex(0);
};
return t;
}
void setup() {
Serial.begin(115200);
// Init DS18B20 library
sensors_CO.begin();
sensors_IN.begin();
sensors_OUT.begin();
// Set temperature callback
SuplaDevice.setTemperatureCallback(&get_temperature);
Jako że moje początki z Arduino zbiegły się z powstaniem Supli

Code: Select all
sensor->requestTemperatures();
t = sensor->getTempCByIndex(0);
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024

-
- Posts: 2068
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
OK, poprawiłem
działa , ale nadal nie wiem co oznaczas zapis :
Code: Select all
double get_temperature(int channelNumber, double last_val) {
double t = -275;
DallasTemperature *sensor = NULL;
switch(channelNumber) {
case 0: {
sensor = &sensors_CO;
break;
}
case 1:{
sensor = &sensors_IN;
break;
}
case 2: {
sensor = &sensors_OUT;
break;
};
}
if ( sensor != NULL && sensor->getDeviceCount() > 0 )
{
sensor->requestTemperatures();
t = sensor->getTempCByIndex(0);
};
return t;
}
Code: Select all
if ( sensor != NULL && sensor->getDeviceCount() > 0 )
{
sensor->requestTemperatures();
t = sensor->getTempCByIndex(0);
};
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024

-
- Posts: 2068
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
Czemu nie, trochę to trwało ale się udało 

You do not have the required permissions to view the files attached to this post.
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024

-
- Posts: 686
- Joined: Sat Jan 07, 2017 1:17 pm
Pięknie dziękuję
. Mam jeszcze pytanie czy ten program pójdzie na nodemcu ? czy tylko na arduino Mega ?

-
- Posts: 2068
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
Napewno nie bezpośrednio , należy go dostosować do nodemcu (każdego esp).
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
