 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
KlemenD Član

Pridružen-a: Sre 18 Maj 2011 15:08 Prispevkov: 188 Aktiv.: 1.10 Kraj: Maribor
|
Objavljeno: Pon Jul 22, 2013 11:22 pm Naslov sporočila: Merjenje intenzivnosti setlobe - arduino |
|
|
Zdravo
V dveh različnih trenutkih bi rad izmeril intenzivnost svetlobe in potem rezultate meritev med seboj primerjal. Uporabil sem seznor TSL235 ki intezivnost svetlobe pretvori v neko frekvenco (višina frekvence sorazmerna z intenzivnostjo svetlobe ki pade na senzor). Najprej je bil iziv spisati program ki mi bo na arduinu meril frekvenco, no na sreco sem ta program nasel tukaj: LINK. No sedaj bi pa rad izmeril frekvenco v nekem trenutku (recimo temu vednost A) nato bi pa 100 milisekund kasnej rad izmeril še vrednost B, ter potem izračunal delež za koliko se je intenzivnost povečala torej B/A potem bi se mi ta delež ispisal na ekranu in meritev bi se spet ponovila.
Kodo sem prilagodil takole
Koda: |
#include <FreqCounter.h>
void setup() {
Serial.begin(57600); // connect to the serial port
Serial.println("Frequency Counter");
}
long double a;
long double b;
long double z;
Void loop() {
FreqCounter::f_comp= 8; // Set compensation to 12
FreqCounter::start(100); // Start counting with gatetime of 100ms
while (FreqCounter::f_ready == 0) // wait until counter ready
a=FreqCounter::f_freq; // read result
delay(100);
FreqCounter::f_comp= 8; // Set compensation to 12
FreqCounter::start(100); // Start counting with gatetime of 100ms
while (FreqCounter::f_ready == 0) // wait until counter ready
b=FreqCounter::f_freq; // read result
z = b/a
Serial.println(z);
delay(100);
} |
Tukaj pa nekaj ni delalo... kasneje sem ugotovil problem, ko sem spremenil program tako da mi je izpisal vsako izmerjeno vrednost a in b čas med meritvami pa sem povečal na nekaj sekund. Dogajalo pa se je naslednje : (recimo da je vrednost 600 normalna vrednost ko je detektor na dnevni svetlobi, 50 pa ko ga pokrijem z prstom)
Zaženem program in ta najprej izmeri vrednost a ki je 600 nato pa gre program na 5 sec delay. V tem času detektor pokrijem z prstom in počamakam da gre program iz delay-a nato izpiše vrednost b ki pa je 600 ( namesto pricakovanih 50) spet gre na delay in prst umaknem program gre spet odzacetka in poisce novo vrednost a ki pa je sedaj 50... program zaostaja za eno izmerjeno vrednost pa nevem zakaj.
Primer sem poenostavil koliko sem lahko drugače pa delam merilec kisika v krvi, ce mi bo uspelo popravit kodo objavim celoten projekt !  |
|
Nazaj na vrh |
|
 |
|
|
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: 497 dni
Powered by phpBB © 2001, 2005 phpBB Group
|