Hőmérővel kapcsolatban , beírtam a programot találtam is benne pár hibát azt kijavitottam .
De még most is hibát jelez a legelején .( mi lehet a hiba?)
void loop()
{ Wire.beginTransmission(72);
//00-s cim a Hőmérséklet kiolvasása
Wire.write(0x00);
//Wire.endTransmission(); <- Ez a sor nem kell....
// A 72-es cimről 2 byte-t kerunk
Wire.requestFrom(72, 2);
//Ha nincs eszkoz, akkor itt all a program
while(Wire.available())
{
//1.byte megérkezik: egész fok
// t = Wire.receive();
t = Wire.read();
//2. byte megerkezik :tort hőfok
// 1 = Wire.receive();
1 = Wire.read();
//Hőmérséklet számolás. Lsd adatlap!
1=1 /16;
fok=t;
fok=fok + 1*0.125;
Serial.println (fok);
}
delay(100);
}
Most mindegyik 1-est megváltoztattam ( L )betűre és jó lett .
A soros monitoron jelenik meg ,de fél fokot nem jelez csak (27.00-28.00 fokot ír ki)
Mikor lesz a tanfolyamon hogy , ezt az értéket a kijelzőre kiírja ,vagy törjem a fejem ?!
Nekem is van egy kérdésem ezzel a hőmérővel kapcsolatban, mégpedig a hőmérséklet számítása az ami nem tiszta. Megnéztem az adatlapot, de csak sejtéseim vannak. Szeretném, ha tisztába tennénk a dolgot.
Kérdések:
1. A törtrészt azért osztjuk 16-tal, mert egy fokot 16-os felbontásban kezel a chip - vagy ez egy téves elgondolás?
2. Az egészrészhez hozzáadjuk a törtrészt - ez még tiszta - de előtte miért kell 0,125 -tel megszorozni? (Ez a rész sajnos teljes homály)
Amíg ezek nem tiszták, nem tudok/akarok továbblépni a tanfolyamban.
Csak fejből írom, az alapelv a lényeg (nincs itt az adatlap). 12 bites felbontással mérve, az egyik byte a egész+előjel, a másik a törtérték.
A visszakapott adat egészrésze az OK.
A törtrész:
7.bit: 0,5 fok
6. bit : 0,25 fok
5. bit: 0,125 fok
4. bit: 0,0625 fok
3-2-1-0: 0
A byteértéke ennek 0...255 közt lehet.
A /16 osztás, az gyakorlatilag 4x shifteli az értékeket balra:
7-6-5-4. bit: 0
3.bit: 0,5 fok
2. bit : 0,25 fok
1. bit: 0,125 fok
0. bit: 0,0625 fok
A kapott számérték: max: &B00001111 = 0....15
Ezt kell leképezni 0...(1-0,0625) közé. A legyszerűbb: kapott szám(tized)*0,0625.
Tudom nem vág az előző témába ,rengeteget töröm a fejem de nem akar sikerülni olyan értéket elérni vele ami a környéken mért értékekhez közelítene. A wikipédián is utána jártam ,hogy ahol én vagyok az 149méterrel a tengerszinthez képest ezért 15milibárral kevesebb a kalibrálási érték, mivel 10méterenként 1 mbárral csökken a légnyomás .Tehát 99835ez lenne a normális légnyomás ezen a magasságon.
Ha valaki tud segítsen beállítani ,mit csináltam rosszul ?