<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; MCP9800/1/2/3 - датчик температуры]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=246</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=246&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «MCP9800/1/2/3 - датчик температуры».]]></description>
		<lastBuildDate>Thu, 10 Dec 2020 05:16:00 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[MCP9800/1/2/3 - датчик температуры]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=2656#p2656</link>
			<description><![CDATA[<p>Основная статья - <a href="http://rcl-radio.ru/?p=91031">http://rcl-radio.ru/?p=91031</a></p><p><span class="attention-yellow"></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/c230d032ca8e37796de7131b2fb8daec.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/c230d032ca8e37796de7131b2fb8daec.png" /></span> </p><div class="codebox"><pre><code>#define ADDR 0x4D

#include &lt;Wire.h&gt;
void setup(){
    Wire.begin();    
    Serial.begin(9600);
    pinMode(2,INPUT);
    pinMode(13,OUTPUT);
} 
 
void loop(){
    Serial.println(wire9800(26.0, 27.5, 12),4);
    if(digitalRead(2)==HIGH){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}
    delay(1000);
}

float wire9800(float regL, float regH, byte bites){
  byte minus;
  /// TEMPERATURE LIMIT-SET REGISTER 9 BIT
  if(regH&lt;0){regH=abs(regH);minus=0b10000000;}else{minus=0b00;}
  Wire.beginTransmission(ADDR);
  Wire.write (0x02);
  Wire.write (int(regH) + minus);
  Wire.write ((int(regH*10)&amp;0b01)&lt;&lt;7);
  Wire.endTransmission();
  /// TEMPERATURE HYSTERESIS REGISTER 9 BIT
  if(regL&lt;0){regL=abs(regL);minus=0b10000000;}else{minus=0b00;}
  Wire.beginTransmission(ADDR);
  Wire.write (0x03);
  Wire.write (int(regL) + minus);
  Wire.write ((int(regL*10)&amp;0b01)&lt;&lt;7);
  Wire.endTransmission();
  ///  CONFIGURATION REGISTER
  Wire.beginTransmission(ADDR);
  Wire.write (0x01);
  Wire.write (0b00000000 + ((bites-9) &lt;&lt; 5));
  Wire.endTransmission();
  ///  AMBIENT TEMPERATURE REGISTER
  Wire.beginTransmission(ADDR);
  Wire.write (0x00);
  Wire.endTransmission();
  delay(10);
  Wire.requestFrom(ADDR,2);
  while(Wire.available()&lt;2);
  float value;
  switch(bites){
  case 9:   value = Wire.read() + float(Wire.read()&gt;&gt;7)*0.5;break;
  case 10:  value = Wire.read() + float(Wire.read()&gt;&gt;6)*0.25;break;
  case 11:  value = Wire.read() + float(Wire.read()&gt;&gt;5)*0.125;break;
  case 12:  value = Wire.read() + float(Wire.read()&gt;&gt;4)*0.0625;break;
  }
  return value;
  }  </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Thu, 10 Dec 2020 05:16:00 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=2656#p2656</guid>
		</item>
	</channel>
</rss>
