<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; MCP9800/1/2/3 - датчик температуры]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=246&amp;type=atom" />
	<updated>2020-12-10T05:16:00Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=246</id>
		<entry>
			<title type="html"><![CDATA[MCP9800/1/2/3 - датчик температуры]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2656#p2656" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-12-10T05:16:00Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2656#p2656</id>
		</entry>
</feed>
