
A ja tu z innym zapytaniem @klew. Czy jest juz zdefiniowany kanał ogólnego przeznaczenia w SuplaDev?
Pytanie co tu definiować?QLQ wrote: Sat Mar 07, 2020 7:09 pm Z tymi kilkoma p(i)riwami coś jest na rzeczy...![]()
A ja tu z innym zapytaniem @klew. Czy jest juz zdefiniowany kanał ogólnego przeznaczenia w SuplaDev?
Code: Select all
/home/daniel/Arduino/libraries/SuplaDevice/src/SuplaDevice.cpp:217: undefined reference to `Supla::initTimers()'
Zabrakło wczoraj wieczorem jednego "git push".daniel wrote: Wed Mar 18, 2020 9:22 pm Aktualnie się nie kompiluje
@klew jak będziesz miał chwilkę zerknij proszęCode: Select all
/home/daniel/Arduino/libraries/SuplaDevice/src/SuplaDevice.cpp:217: undefined reference to `Supla::initTimers()'
![]()
Dzięki, działa.klew wrote: Wed Mar 18, 2020 11:19 pm Zabrakło wczoraj wieczorem jednego "git push".
Zaktualizuj bibliotekę, teraz powinno być ok.
Code: Select all
// method called on timer interupt
// Include all actions that have to be executed periodically regardless of
// other SuplaDevice activities
virtual void onTimer();
Code: Select all
void iterateAlways();
onTimer jest wywoływane z tego co pamiętam co 100 ms.daniel wrote: Thu Mar 19, 2020 5:48 amDzięki, działa.klew wrote: Wed Mar 18, 2020 11:19 pm Zabrakło wczoraj wieczorem jednego "git push".
Zaktualizuj bibliotekę, teraz powinno być ok.
Przy okazji zapytam jak wykorzystać metodę:próbowałem podobnie do:Code: Select all
// method called on timer interupt // Include all actions that have to be executed periodically regardless of // other SuplaDevice activities virtual void onTimer();
ale nie zadziałało.Code: Select all
void iterateAlways();
Napisałem klasę dziedziczącą po Supla::Sensor::ThermHygroMeter która pobiera dane z radiowego czujnika i temperatury i wilgotności 433Mhz.klew wrote: Thu Mar 19, 2020 5:19 pm onTimer jest wywoływane z tego co pamiętam co 100 ms.
iterateAlways jest wywoływane przy każdej pętli w Arduino.
Pytanie do czego chcesz to wykorzystać?
Code: Select all
void onTimer() {
rfThermHygroReceive();
Serial.print(".");
}
Code: Select all
void iterateAlways() {
rfThermHygroReceive();
if (lastReadTime + 10000 < millis()) {
lastReadTime = millis();
channel.setNewValue(getTemp(), getHumi());
}
}
Code: Select all
#include <RFControl.h>
#define RF_RECEIVER_PIN D6
#define RF_ZERO_PULSE 1700
#define RF_ONE_PULSE 3800
#define RF_AVG_PULSE (RF_ZERO_PULSE + RF_ONE_PULSE) / 2
#define RF_RAW_LENGTH 92
int rf_bin[RF_RAW_LENGTH / 2];
void setup() {
Serial.begin(9600);
RFControl::startReceiving(RF_RECEIVER_PIN);
}
void loop() {
if (RFControl::hasData()) {
unsigned int *timings;
unsigned int timings_size;
unsigned int pulse_length_divider = RFControl::getPulseLengthDivider();
RFControl::getRaw(&timings, &timings_size);
int i = 0;
Serial.println(" 1 2 3 4 5");
Serial.println("012345678901234567890123456789012345678901234567890");
if (timings_size == RF_RAW_LENGTH) {
for (int x = 1; x < timings_size; x += 2) {
unsigned long timing = timings[x] * pulse_length_divider;
if (timing > RF_AVG_PULSE) {
rf_bin[i++] = 1;
Serial.print(1);
} else {
rf_bin[i++] = 0;
Serial.print(0);
}
}
Serial.println();
}
}
}