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)

samael9 08.11.2014 23:37

А можно для чайников инструкцию?
Типа 1. взять ардуино, 2 приделать датчик туда то, такой ТО, залить скетч, поставить прогу такую то. Хочется выводить 2 температуры.
Спасибо заранее. Как раз имеется в наличии ардуино нано, покупал его для перепрошивки регуляторов квадрокоптера.

lti1 09.11.2014 02:08

samael9,
http://lukjanow.ru/wp-content/uploads/2012/04/temps.jpg
Скетч для двух датчиков:
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(">");


Про прогу и виджет читайте первый пост.
Ссылка, ссылка.

samael9 09.11.2014 17:02

Благодарю.

lti1 09.11.2014 19:01

Вложений: 3
xxoma, сегодня поигрался Вашим виджетом, можно повытаскивать разную информацию из ардуины и не обязательно создавать несколько, можно в одном разместить. Только, что бы русские буквы и специфические символы отображались без вопросов необходимо выставлять скорость порта 115200. В следующих версиях добавьте возможность удалять отображение переменной на виджете "tempa" и т.п. или её замены на произвольное название.
P.S.
На 4.2.2 работает.

Serg-Zmuh 13.11.2014 10:57

Мужики чет не доезжаю ,А как все это связать ?
вот есть виджет xxoma я его установил на планшет
в ардуино-Леонардо залил скетч который выше привел в пример lti1
а что на xda-forum-е тогда лежит, это на каком этапе в Ардуино заливать ?
просто я пока дуб-дубом ,вы уж извените....

ВладимирC 13.11.2014 11:21

Цитата:

Сообщение от Serg-Zmuh (Сообщение 310991)
Мужики чет не доезжаю ,А как все это связать ?
вот есть виджет xxoma я его установил на планшет
в ардуино-Леонардо залил скетч который выше привел в пример lti1
а что на xda-forum-е тогда лежит, это на каком этапе в Ардуино заливать ?
просто я пока дуб-дубом ,вы уж извените....

Если про скетч, то либо скетч lti1, либо c XDA. Но на XDA еще APK файл есть, вот его нужно скачать и установить на планшет.

murano 13.11.2014 11:23

Цитата:

Сообщение от ВладимирC (Сообщение 310992)
на XDA еще APK файл есть, вот его нужно скачать и установить на планшет.

http://forum.xda-developers.com/atta...9&d=1412704208

samael9 13.11.2014 13:05

А в приведённом скетче переменные на оба датчика называются одинаково Temp. Что бы работал виджет, как в первом посте (1 виджет одна, второй другая) нужно переменную второго датчика обозвать по другому?

Serg-Zmuh 13.11.2014 14:26

Цитата:

Сообщение от ВладимирC (Сообщение 309628)
RemoteInputsMgr-1.3.2.apk переустанавливал. Еще одно неудобство, после каждой перезагрузки приходится заходить в настройки и вручную указывать "Device""

а эту проблему решили ?

и еще попутно вопрос :
случайно при первом втыкании леонардо поставил галку "использовать по умолчанию" таперь он становится клавой ,наверно и из-за этого когда настраиваешь виджет температуры при подтверждении рабочий стол планшета становится пустой и помогает только перезагрузка...:dntknw:

ВладимирC 13.11.2014 14:33

Цитата:

Сообщение от Serg-Zmuh (Сообщение 311009)
а эту проблему решили ?

и еще попутно вопрос :
случайно при первом втыкании леонардо поставил галку "использовать по умолчанию" таперь он становится клавой ,наверно и из-за этого когда настраиваешь виджет температуры при подтверждении рабочий стол планшета становится пустой и помогает только перезагрузка...:dntknw:

Проблема сама как то решилась.
А в случае пропадания клавы в уведомлениях вскакивает "Выберите способ ввода". И в этом уведомлении напротив физической клавы есть выключатель, если его выключить, то работает и леонардо и экранная клава, перезагружать ничего не надо. Правда при перезагрузке, лпять нужно выключать.


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

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