Serg-Zmuh |
16.03.2016 20:24 |
помогите советом
Вложений: 1
Ребят помогите разобраться :blush:
вот опять появилось время повозиться с планшетом
и довести до ума "хотелки" на основе этого виджета.
пользую прошивку от 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
для мня - прогресс :big:
сейчас вот так тока работает:
P.S. еще вчера думал что не разберусь никогда :smile1: ,но ниче постигаю потихоньку ....
|