Weatherduino‚Æ‚¢‚¤»•i‚̃Tƒ“ƒvƒ‹ƒ‰ƒCƒuƒ‰ƒŠ‚ðƒx[ƒX‚ɃZƒ“ƒVƒŠƒIƒ“»‚ÌSHT-11‚Æ‚¢‚¤‰·Ž¼“xƒZƒ“ƒT[‚©‚ç‚̃f[ƒ^Žæ“¾‚ðs‚Á‚Ä‚¨‚è‚Ü‚µ‚½B
ƒ\[ƒXƒR[ƒh‚ð‰½“xŠm”F‚µ‚Ä‚àƒf[ƒ^ƒV[ƒg’Ê‚è‚̉‰ŽZ‚̂悤‚ÉŒ©‚¦‚é‚Ì‚ÉAŠÏ‘ªŒ‹‰Ê‚ÌŽ¼“x‚ª‚¢‚Æ‚àŠÈ’P‚É•p”É‚É100“‚É’B‚µ‚Ä‚µ‚Ü‚¤‚Ì‚Å‚·B
Weatherduino—p‚̃‰ƒCƒuƒ‰ƒŠ‚Í‚±‚¿‚ç‚©‚ç“üŽè‰Â”\‚Å‚·B
‚±‚̃Zƒ“ƒT[‚Ì“üŽè‚̓XƒgƒƒxƒŠ[ƒŠƒiƒbƒNƒX‚ª”äŠr“IˆÀ‚‚Ä—Ç‚¢‚Å‚µ‚傤B
‚³‚ÄA–{‘è‚Å‚·B ã‹L‚Ì›H–[‚̃Tƒ“ƒvƒ‹ƒ‰ƒCƒuƒ‰ƒŠG7Weather3.cpp‚ÌSHT-11‚̈—‚ł͈ȉº‚̉‰ŽZ•”•ª‚ª‚ ‚è‚Ü‚·B
// SHT11 ‰·“xiŽjEŽ¼“xi“jŽæ“¾ void G7Weather::get_sht11 (float *temp, float *humi) { unsigned short sot, sorh; float t, rhl, rht; @ // ‰·“x“Çž‚Ý sht_tsseq(); sht_write(0x03); SHT_SDA_H; while (SHT_SDA); // •ÏŠ·I—¹‘Ò‹@ sot = (unsigned short)sht_read(1) << 8; sot |= sht_read(1); sht_read(0); // Ž¼“x“Çž‚Ý sht_tsseq(); sht_write(0x05); SHT_SDA_H; while (SHT_SDA); // •ÏŠ·I—¹‘Ò‹@ sorh = (unsigned short)sht_read(1) << 8; sorh |= sht_read(1); sht_read(0); // ‰·“x•â³ 14bit (3.3V) sot &= 0x3fff; t = -39.66 + 0.01 * (float)sot; *temp = t; // Ž¼“x•â³ 12bit sorh &= 0x0fff; // rhl = -4.0 + 0.0405 * sorh + (-2.8 * 0.000001) * (sorh * sorh); // Ver.3 rhl = -2.0468 + 0.0367 * (float)sorh + (-1.5955 / 1000000.0) * (float)(sorh * sorh); // Ver.4 rht = (t - 25.0) * (0.01 + 0.00008 * (float)sorh) + rhl; if (rht > 99.0) rht = 100.0; *humi = rht; }
‚±‚̈—‚Ì’†‚ł̃oƒO‚͈ȉº‚Å‚·B
(float)(sorh * sorh)
‚±‚Ì•”•ª‚¾‚¯‚Å‚·‚ËB–â‘肪‚ ‚é‚Ì‚ÍB sorh‚Æ‚¢‚¤•Ï”‚Íunsigned short‚Å—LŒø‚ȃf[ƒ^‚Í12ƒrƒbƒg•ª‚Å‚·B’P“Æ‚ÅŽg‚¤ê‡‚Í16ƒrƒbƒg‚Å\•ª‚Å‚·‚ª2æ‚·‚é‚Ɖ‰ŽZŒ‹‰Ê‚Í16ƒrƒbƒg‚Å‚Í‘«‚è‚È‚‚È‚è‚Ü‚·B
‚È‚Ì‚ÅAˆÈ‰º‚̂悤‚ÉC³‚Ì•K—v‚ª‚ ‚è‚Ü‚·B
(float)((long)sorh * (long)sorh)
ŠÏ‘ªƒf[ƒ^‚Í12ƒrƒbƒg‚È‚Ì‚ÅÅ‘å’l‚Í4095‚Æ‚È‚è‚Ü‚·B ‚»‚ê‚ð2æ‚·‚é‚Æ16769025‚Æ‚È‚è16ƒrƒbƒg‚ÌÅ‘å’l‚Å‚ ‚é65535‚ð ’´‚¦‚Ä‚µ‚Ü‚Á‚Ä‚¢‚½‚킯‚Å‚·B
ˆê•ûA•„†•t‚Ìlong‚̳‚ÌÅ‘å’l‚Í2147483647‚Å‚·‚Ì‚Å\•ª‚ÉŠi”[‰Â”\‚É‚È‚è‚Ü‚·B ‚±‚ÌC³‚É‚æ‚èAŽ¼“x‚ªŠÈ’P‚É100“‚É‚È‚é–â‘è‚͉ðÁ‚µ‚Ü‚µ‚½B Œ´ˆö‰ð–¾‚É3”N‚©‚©‚è‚Ü‚µ‚½B
‚¿‚È‚Ý‚ÉAŽÊ^‚̊ÍWeatherduino‚Å‚Í‚È‚Ž©ì•i‚Å‚·B ArduinoUno‚Æ‚Ì‘g‚݇‚킹‚ÅŽg‚Á‚Ä‚¢‚Ü‚·B
ù¾ºÒÝÄ‚ð‚·‚é