www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Arduino, globalne spremenljivke in "multiple tabs"

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
damo
Član
Član



Pridružen-a: Čet 31 Jul 2003 13:45
Prispevkov: 2008
Aktiv.: 9.04
Kraj: Krško

PrispevekObjavljeno: Čet Dec 28, 2017 2:19 pm    Naslov sporočila:  Arduino, globalne spremenljivke in "multiple tabs" Odgovori s citatom

Ojla,

imam program, ki kliče funkcije v knjižnici.

Funcija, ki jo rabim, je narejena v stilu neskončne zanke in kot taka deluje ok. (vsake 3 sekunde izmeri parametre in jih preračuna). Ker bi jaz med temi 3 sekundami počel še kaj drugega, sem funkcijo skopiral in while zanko "odprl", v svoji glavni funkciji pa skrbim, da jo pokličem vsake 3 sekunde.
Pojavil se mi je problem, da ta originalna zanka rabi spremenljivke iz prejšnje iteracije ter nato izračunava povprečje po nekem algoritmu. Problem sedaj je, da za vsako ko kličem to mojo "one time read" funkcijo, so spremenljivke na novo inicializirane (torej 'arhiv' je prazen).

Nič hudega, sem si rekel. Bom spremenljivke naredil globalne in se bodo ohranile. In tu se mi zatakne. Problem je, ker je projekt v večih datotekah in knjižnicah (1 datoteka .INO, ostale pa so .h in .cpp oz. .c)

Ima kdo recept, kje in kako definirat globalne sprejemljivke, da bodo delovale globalno? Če imaš samo 1 ino datoteko, to ni problem, če pa imaš več datotek (multi tab), pa mi nikakor ne gre, kljub temu da sem naredil po klasičnem receptu.

Imamo kakega "naprednega" Arduino znalca?

Hvala za pomoč!

_________________
Dobrga štromarja samo slab šnops strese!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
polkic
Član
Član



Pridružen-a: Pon 04 Dec 2017 20:27
Prispevkov: 68
Aktiv.: 0.88

PrispevekObjavljeno: Čet Dec 28, 2017 6:45 pm    Naslov sporočila:   Odgovori s citatom

Pozdravljeni,
ali se Vam v Arduino okolju med prevajanjem pojavi kakšno opozorilo (warning)?

Ponavadi je lažje problem iskat/rešit, če lahko vidimo kodo programa.

Lep pozdrav.

Edit: Mislim, da Vam manjka EXTERN deklaracija spremenljivk.


Nazadnje urejal/a polkic Čet Dec 28, 2017 7:01 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vpeter
Član
Član



Pridružen-a: Pon 11 Jun 2012 16:05
Prispevkov: 337
Aktiv.: 2.35
Kraj: Maribor okolica

PrispevekObjavljeno: Čet Dec 28, 2017 7:00 pm    Naslov sporočila:   Odgovori s citatom

Originalno funkcijo pretvori v dve funkciji: prva inicializira spremenljivke in jo kličeš samo enkrat, druga pa je vsebina zanke.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
damo
Član
Član



Pridružen-a: Čet 31 Jul 2003 13:45
Prispevkov: 2008
Aktiv.: 9.04
Kraj: Krško

PrispevekObjavljeno: Čet Dec 28, 2017 8:37 pm    Naslov sporočila:   Odgovori s citatom

Se javljam malce kasneje....

Butasta stvar. Skozi sem mislil, da se mi spremenljivka ne "prenaša" in na koncu pogruntal, da sem nehote izključil zakasnitveno zanko.

Torej, meritev se izvede vsake 3 sekunde, vsakih 600 meritev pa se zapiše povprečje v eeprom. Povprečje se mi je zapisovalo vsakih nekaj sekund, števec meritev mi je javljal vedno 601. Po dolgem času sem skapiral, da sem izključil zakasnitev in se mi je v cca 3 sekundah izvedlo 600 meritev. Zadeva je delovala pravilno, le jaz tega nisem videl.

Sem pa našel dobro foro, kako zaradi boljše preglednosti razdrobiti .ino file: narediš več ino datotek, kompajlirale se bodo po abecednem redu. Vse skupaj se obnaša kot da je v enem .ino fajlu, le bolj pregledno je.

Druga varianta je uporaba headerjev in source datotek, tam pa moraš deklarirati spremenljivke, da se "vidijo".

Hvala za pomoč!

p.s. Polkic - ni potrebe za vikanjem, na forumu se vsi tikamo Wink

_________________
Dobrga štromarja samo slab šnops strese!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
polkic
Član
Član



Pridružen-a: Pon 04 Dec 2017 20:27
Prispevkov: 68
Aktiv.: 0.88

PrispevekObjavljeno: Čet Dec 28, 2017 10:02 pm    Naslov sporočila:   Odgovori s citatom

Haha, hvala za nasvet. Smile

Jaz si navadno pomagam:
- kar z dodajanem številk na začetku v imenu datotek in nato definicijo spremenljivk napišem v prvi datoteki. (Hitra rešitev)

Drugače se pa includa željene datoteke(.h), če obstajajo v novem tabu in nato spremenljivke dodatno externo declarira.

Lp.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group