Ребят помогите разобраться
вот опять появилось время повозиться с планшетом
и довести до ума "хотелки" на основе этого виджета.
пользую прошивку от 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 Temp, znak, minus;
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 ( i = 0; i < 9; i++) {data[i] = ds.read();}
// высчитываем температуру датчика 1
Temp=(data[1]<<8)+data[0];
Temp=Temp;
znak=((Temp%16)*100)/160;
if (znak<0 && Temp/16==0) minus=1;
else minus=0;
if (znak<0) znak=znak*-1;
Serial.print("<OutDoor:");
if (minus==1) Serial.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 ( i = 0; i < 9; i++) {data[i] = ds2.read();}
// высчитываем температуру датчика 2
Temp=(data[1]<<8)+data[0];
Temp=Temp;
znak=((Temp%16)*100)/160;
if (znak<0 && Temp/16==0) minus=1;
else minus=0;
if (znak<0) znak=znak*-1;
Serial.print("<InDoor:");
if (minus==1) Serial.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 ( i = 0; i < 9; i++) {data[i] = ds3.read();}
// высчитываем температуру датчика 3
Temp=(data[1]<<8)+data[0];
Temp=Temp;
znak=((Temp%16)*100)/160;
if (znak<0 && Temp/16==0) minus=1;
else minus=0;
if (znak<0) znak=znak*-1;
Serial.print("<Engine:");
if (minus==1) Serial.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. еще вчера думал что не разберусь никогда

,но ниче постигаю потихоньку ....