Page 1 of 3

Pilne - kod ino

Posted: Mon Jun 24, 2019 8:25 pm
by QLQ
za diabła :evil: :cry: nie mogę przesłać wartości rainrate do Cloud, w serialport ładnie widzi i czyta a do Supli za cholery nie chce przesłać :((

Code: Select all

//*****************************OPADY_DESZCZ*******************************************

double get_rain(int channelNumber, double t) {

    t = rainrate;    ----------------------########### CZEMU TEGO NIE CZYTA Z VOID COUNT ??????????????????????
  
    
}
//**********************************WYLICZ OPADY****************************************
void count() {
  // Grab the current ms count for common calculations
  unsigned long curtime = millis();
  
  // Make sure we don't record bounces
  if ((curtime - tiptime) < interval) {
    return;
  }
// How long since the last tip?
  unsigned long tipcount = curtime - tiptime;
  tiptime = curtime;
  
  // Calculate mm/hr from period between cup tips
  double rainrate = 914400.0 / tipcount;
  
  Serial.print("Cup tip: ");
  Serial.print(tipcount);
  Serial.println("ms");  
  
  Serial.print("Opady deszczu: ");
  Serial.print(rainrate/10);
  Serial.println("l/m2");  
  Serial.println("mm/h");  
}
nie mogę przez to skończyć deszczomierza pod SUPLĘ :(
IMG_20190624_222732.jpg
IMG_20190624_222732.jpg (158.14 KiB) Viewed 381 times

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 8:32 pm
by lesny8
Brak zasięgu dla zmiennej rainrate w ciele funkcji get_rain. Zadeklaruj globalnie.

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 8:37 pm
by QLQ
lesny8 wrote:
Mon Jun 24, 2019 8:32 pm
Brak zasięgu dla zmiennej rainrate w ciele funkcji get_rain. Zadeklaruj globalnie.
no właśnie tylko jak ? noga ze mnie z programowania.

mam jeszcze tak:

Code: Select all

void setup() {
 
  Serial.begin(9600); 
 // Set up our digital pin as an interrupt
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), count, FALLING);
    double rainrate;

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 8:45 pm
by QLQ
Inaczej - jak wyciągnąć rainrate z funkcji count aby była widoczna globalnie?

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 8:56 pm
by maffiu
Odbiegając od kodu na jakiej zasadzie to działa?

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 8:57 pm
by lesny8
Zmienna ma zasięg globalny, jeśli jest zadeklarowaną poza funkcją. Np. Na początku pliku. Sprawdź czy Ci zadziała. Zaraz usiade do kompa...

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 8:59 pm
by QLQ
maffiu wrote:
Mon Jun 24, 2019 8:56 pm
Odbiegając od kodu na jakiej zasadzie to działa?
masz 2 szalki na ośce jak na foto wyżej - woda wypełnia jedną przechyla się na drugą , wypełnia drugą itd, do tego jest czujnik - kontrakton i magnes - standardowy pomiar w czasie, podobnie jak obroty.

CHCĘ ZROBIĆ FILMIK ALE NIE MOGĘ bo nie działa w Supla. Walczę z tym już od 2h :(

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 9:01 pm
by QLQ
lesny8 wrote:
Mon Jun 24, 2019 8:57 pm
Zmienna ma zasięg globalny, jeśli jest zadeklarowaną poza funkcją. Np. Na początku pliku. Sprawdź czy Ci zadziała. Zaraz usiade do kompa...
no właśnie NIE bo mam zaraz po definicjach bibliotek:

Code: Select all

#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET); // GPIO5 - SCL , GPIO4 -SDA


const byte interruptPin = 12;
const int interval = 500;
volatile unsigned long tiptime = millis();
double rainrate;    $$$$$$$$$$$$$$$$$$$$$
unsigned long curtime;

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 9:08 pm
by maffiu
QLQ wrote:
Mon Jun 24, 2019 8:59 pm
maffiu wrote:
Mon Jun 24, 2019 8:56 pm
Odbiegając od kodu na jakiej zasadzie to działa?
masz 2 szalki na ośce jak na foto wyżej - woda wypełnia jedną przechyla się na drugą , wypełnia drugą itd, do tego jest czujnik - kontrakton i magnes - standardowy pomiar w czasie, podobnie jak obroty.

CHCĘ ZROBIĆ FILMIK ALE NIE MOGĘ bo nie działa w Supla. Walczę z tym już od 2h :(
Już kumam dzięki
całe życie się człowiek uczy 🙃

Re: Pilne - kod ino

Posted: Mon Jun 24, 2019 9:08 pm
by lesny8
Ok, ale w void setup() masz zadeklarowaną zmienną o takiej samej nazwie i to do niej przypisujesz wartość, a nie do tej globalnej.
W void setup() daj po prostu

Code: Select all

rainrate = 914400.0 / tipcount;
zamiast

Code: Select all

double rainrate = 914400.0 / tipcount;