Показать сообщение отдельно
Старый 09.11.2014, 02:08   #52
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
lti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond repute
По умолчанию

samael9,

Скетч для двух датчиков:
PHP код:
#include <OneWire.h>

OneWire ds(10);  // линия 1-Wire будет на pin 10
OneWire ds2(11);  // линия 1-Wire будет на pin 11

byte i;
byte present 0;
byte data[12];
byte addr[8];
byte addr2[8];
int Tempznakminus;
 
void setup(void
{
  
Serial.begin(9600);
}
 
void loop(void
{
  static 
unsigned long time;
  static 
unsigned long flag=0;
  if ((
millis()-time)>500 && flag==0//запуск процедуры Temp_A по таймеру каждую секунду, сдвиг 500 милисекунд
   

     
flag=1;  
     
Temp_A(); 
   }
  if ((
millis()-time)>1000 && flag==1//запуск процедуры Temp_B по таймеру каждую секунду, сдвиг 500 милисекунд
   
{    
     
time millis();
     
flag=0;   
     
Temp_B();
   } 


void Temp_A()
{
  if ( !
ds.search(addr) )
   {
      
ds.reset_search();
      return;
   }
  
  
ds.reset();
  
ds.select(addr);
  
ds.write(0x44,1);         // запускаем конвертацию
    
  
present ds.reset();
  
ds.select(addr);    
  
ds.write(0xBE);         // считываем ОЗУ датчика

  
for ( 09i++) {data[i] = ds.read();}
  
  
// высчитываем температуру  датчика 1
    
Temp=(data[1]<<8)+data[0];
    
Temp=Temp;
    
znak=((Temp%16)*100)/160;
    if (
znak<&& Temp/16==0minus=1;
    else 
minus=0;
    if (
znak<0znak=znak*-1;
    
    
Serial.print("<tempa:");
    if (
minus==1Serial.print("-");
    
Serial.print(Temp/16);
    
Serial.print(".");
    
Serial.print(znak);
    
Serial.print("C");
    
Serial.print(">");
}

void Temp_B()
{
  if ( !
ds2.search(addr2) )
   {
      
ds2.reset_search();
      return;
   }
  
  
ds2.reset();
  
ds2.select(addr2);
  
ds2.write(0x44,1);         // запускаем конвертацию
    
  
present ds2.reset();
  
ds2.select(addr2);    
  
ds2.write(0xBE);         // считываем ОЗУ датчика

  
for ( 09i++) {data[i] = ds2.read();}
  
  
// высчитываем температуру датчика 2
    
Temp=(data[1]<<8)+data[0];
    
Temp=Temp;
    
znak=((Temp%16)*100)/160;
    if (
znak<&& Temp/16==0minus=1;
    else 
minus=0;
    if (
znak<0znak=znak*-1;
    
    
Serial.print("<tempb:");
    if (
minus==1Serial.print("-");
    
Serial.print(Temp/16);
    
Serial.print(".");
    
Serial.print(znak);
    
Serial.print("C");
    
Serial.print(">");

Про прогу и виджет читайте первый пост.
Ссылка, ссылка.
lti1 вне форума   Ответить с цитированием