PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Дополнительные устройства (http://pccar.ru/forumdisplay.php?f=177)
-   -   Виджет для Remote steering wheel control (http://pccar.ru/showthread.php?t=21272)

Serg-Zmuh 16.03.2016 05:41

Цитата:

Сообщение от Максимэ (Сообщение 355037)
Устанавливаешь https://cloud.mail.ru/public/N9aY/JgUCfYHvb и https://cloud.mail.ru/public/Hh9Y/sk9kVdTz4 заходишь в оверлейс, нажимаешь get started, пишешь в enter profile name любое имя профиля например thermo жмешь next, дадьше на +, дальше на widget и выбираешь приложение zooper widget pro, выбираешь размер виджета например zooper widget 1x1, поставить галку всегда разрешать и жмем создать, видем окно виджета жмем дискетку. Выходим из этой программы. На рабочем столе жмем по виджету и жмем на макет редактировать, жмем на +, жмем текст, спускаемся ниже по списку, жмем отредактировать вручную, наводим на #dhh#:#dmm# стираем и пишем например #Tdata1# и жмем v. Выходим из этой пограммы.
Заходим в программу таскер в tasks после 2 задачи добавляем еще задачу. Жмем на +, жмем на плагин, выбираем zooper widget pro, жмем на карандаш, вводим zw переменная data1, вводим zw текст &data1, жмем дискетку. Назад, добавим еще одну задачу, жмем на +, плагин,overlays, карандаш, выбрать thermo, выбрать on, назад.
Дальше подключаем блютуз и видем в виджете меняющуся температуру. Можно в виджете добавлять еще текст #Tdata2# и добавляя задачу в таскере zooper widget pro data2 &data2. Можно редактировать фон виджета, убрать прозрачный черный фон и поставить прозрачный цвет #00000000. Выходим из этой программы. Теперь виджет текст с прозрачным фоном. Можно подредактировать текст например: в салоне #Tdata2#

одно не понял где ты данные из serialport скетча прописываешь ,короче у мня каша в голове .... ,просто не могу понять что от куда и куда идет

и как быть вот с этим советом ?

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 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
для мня - прогресс :big:
сейчас вот так тока работает:

P.S. еще вчера думал что не разберусь никогда :smile1: ,но ниче постигаю потихоньку ....

Serg-Zmuh 17.03.2016 17:37

Эх....:dntknw:
видать не кому подсказать

Максимэ 17.03.2016 17:48

Цитата:

Сообщение от Serg-Zmuh (Сообщение 355326)
Эх....:dntknw:
видать не кому подсказать

Завтра выложу скетч, сегодня был тяжелый день. Почти его написал, я так понял, что у тебя стоит три датчика и у них у каждого свой порт на ардуине. Затем у тебя в сериал порт шлет последовательно переменную &outdoor, потом &indoor и &engine. Лучше сделать вывод одной строкой, как у меня например и будет у тебя три переменных &temp1, &temp2, &temp3. Меня поражает то, что эта тема посути очень актуальна, т.к на смарте или планшете погода только в интернете, но затейливых людей в этой теме единицы(

Serg-Zmuh 17.03.2016 17:53

Цитата:

Сообщение от Максимэ (Сообщение 355328)
Завтра выложу скетч, сегодня был тяжелый день. Почти его написал, я так понял, что у тебя стоит три датчика и у них у каждого свой порт на ардуине. Затем у тебя в сериал порт шлет посдледовательно переменную outdoor, потом indoor и engine. Лучше сделать вывод одной строкой, как у меня например и будет у тебя три переменных &temp1, &temp2, &temp3.

пасиба дружище заранее :smile2:
ты все правильно понял :yes4:

vasilij_c 17.03.2016 21:47

или разберись как работает millis()
или напиши проще:
void loop(void)
{
delay(1000);

Temp_A();
Temp_B();
Temp_C();
}

oleg707 17.03.2016 22:57

далеко он на delay уедет...

Serg-Zmuh 18.03.2016 03:48

сразу признаюсь - в программировании я :whistle:
поэтому этот скетч не мой ,я туда тока третий датчик (ds3) сам по аналогии прописывал ,может и как-то криво :blush: на большее знаний не хватает

а так то этот скетч работает с родными виджетами топикстартера
может криво -но работает

у меня на Zooper не получается вывести ,а там через таскер надо ,и там я запутался....

Максимэ 18.03.2016 16:56

Попробуй этот скетч, напиши что у тебя выводит в сериал порт
Код:

#include
#include
OneWire OW_tempa(9);
OneWire OW_tempb(10);
OneWire OW_tempc(11);
DallasTemperature tempa(&OW_tempa);
DallasTemperature tempb(&OW_tempb);
DallasTemperature tempc(&OW_tempc);
DeviceAddress tempaAddress, tempbAddress, tempcAddress;
void setup(void){
Serial.begin(9600);
tempa.begin();
tempb.begin();
tempc.begin();
}
void loop(void){
tempa.requestTemperatures();
delay(40);
tempb.requestTemperatures();
delay(40);
tempc.requestTemperatures();
delay(40);
Serial.print(" if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.print("#");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.print("#");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
delay(1000);
}


Serg-Zmuh 19.03.2016 10:56

вот что выводит:
,но так как датчик дома один ,я попробовал перетыкивать на другие
пины ,10 и 11
тоже норм


Часовой пояс GMT +4, время: 18:16.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot