Показать сообщение отдельно
Старый 16.03.2016, 20:24   #192
Serg-Zmuh
Старший Пользователь
 
Аватар для Serg-Zmuh
 
Регистрация: 19.02.2014
Возраст: 53
Город: Ванино
Регион: 27
Машина: MMC-Pajero-II,V46,4М40
Сообщений: 327
Serg-Zmuh will become famous soon enough
Question помогите советом

Ребят помогите разобраться

вот опять появилось время повозиться с планшетом
и довести до ума "хотелки" на основе этого виджета.
пользую прошивку от PACman 5.1 которая,
таскер стоит версии 4.8u1 .
на ардуине выведено три датчика DS с пинов 9,10,11
вот скетч такой (незнаю может что подскажете где-что поправить) :
PHP код:
#include <OneWire.h> 

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

byte i
byte present 0
byte data[12]; 
byte addr[8]; 
byte addr2[8]; 
byte addr3[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 по таймеру каждую секунду, сдвиг 1000 милисекунд 
   
{     
     
time millis(); 
     
flag=0;    
     
Temp_B(); 
   }  
  if ((
millis()-time)>500 && flag==0//запуск процедуры Temp_C по таймеру каждую секунду, сдвиг 750 милисекунд 
   
{     
     
time millis(); 
     
flag=1;    
     
Temp_C(); 
   }  
}  

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("<OutDoor:"); 
    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("<InDoor:"); 
    if (
minus==1Serial.print("-"); 
    
Serial.print(Temp/16); 
    
Serial.print("."); 
    
Serial.print(znak); 
    
Serial.print("C"); 
    
Serial.print(">"); 
    
}

void Temp_C() 

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

  
for ( 09i++) {data[i] = ds3.read();} 
   
  
// высчитываем температуру  датчика 3 
    
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("<Engine:"); 
    if (
minus==1Serial.print("-"); 
    
Serial.print(Temp/16); 
    
Serial.print("."); 
    
Serial.print(znak); 
    
Serial.print("C"); 
    
Serial.print(">"); 
    

по совету выше Максимэ и еще раньше было от MURANO вот тут
вот хоть убей не могу понять как в таскере правильно , что именно и как
использовать из значений:
%org_kangaroo_rim_device_extra_args
и
%org_kangaroo_rim_device_extra_command
вот тут я запнулся :
Цитата:
4.3 Ecли данные из ардуино посылаем по отдельности, то в задаче нужно отслеживать переменную %org_kangaroo_rim_device_extra_command. Аналогично п.4.1 читаем ее. Например, переменной %Com присваиваем ее значение и сравниваем, например, с "tempa". Если %Com=tempa, то выполняем какие-то действия с данными %org_kangaroo_rim_device_extra_args.
не до конца понятно как правильно сделать чтоб работало это на три отдельные виджеты
с zooper и Overlays я вроде разобрался ...
но пока получилось вывести данные только из одного датчика :sad2
для мня - прогресс
сейчас вот так тока работает:

P.S. еще вчера думал что не разберусь никогда ,но ниче постигаю потихоньку ....
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot_2016-03-17-02-51-59.jpg
Просмотров: 433
Размер:	40.2 Кб
ID:	43061  
__________________
MMC-Pajero ,Teyes CC3 ,все пока в процессе

Последний раз редактировалось Serg-Zmuh; 16.03.2016 в 21:00.
Serg-Zmuh вне форума   Ответить с цитированием