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)

xxoma 07.11.2014 23:31

Замените KPin, SPin на номер порта куда у вас поключен блютус. Вы будете через блютус связывать ардуино с планшетом или по юсб? Если по юсб то вам этот скетч не нужен, он для конфигурации блютус модуля. Примеры кода для кнопок внизу в приатаченых файлах.

Serg-Zmuh 08.11.2014 06:48

пока по юсб буду использовать

lti1 08.11.2014 08:23

Serg-Zmuh, скетч из этого поста для примера тоже подойдет. Вот так примерно выводить информацию на виджет:
Код:

data1=температуре с датчика 1
Serial.print(" Serial.print(data1);
Serial.print(">");

data2=температуре с датчика 2
Serial.print(" Serial.print(data2);
Serial.print(">");

Ну и соответственно в конфигурации виджета прописываете для датчика 1 tempa, а для датчика 2 tempb.

murano 08.11.2014 14:17

При добавлении нескольких виджетов и динамически меняющихся значениях, происходит задержка обновления данных. В реальном времени обновляется только последний Serial.print в ардуино. Это проблема андроида? Можно это как то исправить?
Цитата:

Сообщение от xxoma (Сообщение 309207)
Тестил на 4.4.4, кому нужно для версий пониже пишите - скомпилю.

Буду благодарен за версию для 4.1 и выше.

xxoma 08.11.2014 16:49

Цитата:

Сообщение от murano (Сообщение 310516)
При добавлении нескольких виджетов и динамически меняющихся значениях, происходит задержка обновления данных. В реальном времени обновляется только последний Serial.print в ардуино. Это проблема андроида? Можно это как то исправить? Думаю чаще одной секунды обновлять виджет смысла нет, все равно визуально не успеете увидеть инфу)

Буду благодарен за версию для 4.1 и выше.

Под 4.1 позднее выложу. Насчет задержек, от моего виджета это не зависит. Пишите автору remote steering wheel. А какая частота обновления, что оно не успевает?

murano 08.11.2014 18:42

Цитата:

Сообщение от xxoma (Сообщение 310519)
А какая частота обновления, что оно не успевает?

Для примера взять можно вот это:
PHP код:

int idata1data2data3data4;

void setup()
{
  
Serial.begin(9600);
}

void loop()
{
  for(
i=0;i<100;i++)
  {
    
data1=i;
    
data2=i;
    
data3=i;
    
data4=i;
    
Serial.print("<tempa:");
    
Serial.print(data1);
    
Serial.print(">");
    
Serial.print("<tempb:");
    
Serial.print(data2);
    
Serial.print(">");
    
Serial.print("<tempc:");
    
Serial.print(data3);
    
Serial.print(">");
    
Serial.print("<tempd:");
    
Serial.print(data4);
    
Serial.print(">");
    
delay(1000);
  }


Здесь "data4" обновляется как надо - раз в секунду. Остальные же как попало.

xxoma 08.11.2014 18:55

Ну так сделайте delay(250) после каждого вывода в сериал. А то оно за раз пачку выдает.

murano 08.11.2014 19:11

Спасибо. Так на много лучше

murano 08.11.2014 19:35

Из пожеланий хотелось бы иметь возможность изменять размер, цвет и сам шрифт. Без проблем все заработало на 4.1.1

xxoma 08.11.2014 21:07

Ок, позднее прикручу такую возможность.

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:

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

lti1 13.11.2014 14:39

Цитата:

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

Нет, не нужно, все работает как есть. Переменная меняет свое значение каждые пол секунды и отправляет данные в порт, поочередно 1 датчик, 2 датчик.
А в самих виджетах нужно прописать tempa и tempb.

Serg-Zmuh 13.11.2014 19:41

Цитата:

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

а прошивка у вас какая ?
у мня СМ11 PACMAN

ВладимирC 13.11.2014 19:43

Цитата:

Сообщение от Serg-Zmuh (Сообщение 311033)
а прошивка у вас какая ?
у мня СМ11 PACMAN

Сток, ядро с поддержкой USB DAC.

anjey 14.11.2014 11:51

Доброго дня! Никогда не сталкивался с ардуино, но очень бы хотелось попробовать.
Не подскажите какую версию ардуино лучше использовать и датчики температуры(чтоб мог работать на улице)? Если можно ссылки. Спасибо.

Denkos 14.11.2014 12:10

Цитата:

Сообщение от anjey (Сообщение 311080)
Доброго дня! Никогда не сталкивался с ардуино, но очень бы хотелось попробовать.
Не подскажите какую версию ардуино лучше использовать и датчики температуры(чтоб мог работать на улице)? Если можно ссылки. Спасибо.

http://compcar.ru/forum/forumdisplay.php?f=57

timtman 14.11.2014 12:16

Вложений: 1
Цитата:

Сообщение от anjey (Сообщение 311080)
Доброго дня! Никогда не сталкивался с ардуино, но очень бы хотелось попробовать.
Не подскажите какую версию ардуино лучше использовать и датчики температуры(чтоб мог работать на улице)? Если можно ссылки. Спасибо.

на картинке слева Нано, справа Микро оба можно использовать, микро-аналог леонардо, датчики DHT11, DHT22 все покупается в китае по цене 3 доллара за единицу (+-1,5$)
можешь в гости заехать - покажу чего-нибудь :)

anjey 14.11.2014 13:08

Спасибо за ответы и приглашение!

Denkos 14.11.2014 13:11

Цитата:

Сообщение от timtman (Сообщение 311088)
покажу чего-нибудь :)

Приезжай к нам, "тоже есть что показать":big:

timtman 14.11.2014 13:21

Цитата:

Сообщение от Denkos (Сообщение 311100)
Приезжай к нам, "тоже есть что показать":big:

если все сложится в след. году поеду в Кемеровскую область к родне, Могу ведь и заехать :)

ВладимирC 22.11.2014 18:43

Друзья помогите понять что к чему в скетче, а то автор прогуливает)). Просто пока снял блочок, не хочется потом опять деинсталировать.
Цитата:

Сообщение от lti1 (Сообщение 309621)
Код:

int analogPin=A0;
int data;
int data1 = 0;
int flag = 0;
unsigned long eventTime = 0;

void setup()
{
Serial.begin(9600);
digitalWrite(analogPin, HIGH);
}

void loop()
{
data=analogRead(analogPin);

if(data>=950 && data1 != 0 && flag <= 1)
 {
  Serial.print("   Serial.print(data1);
  Serial.print(">");
  data1 = 0;
  flag = 0;
  delay(10);
 }

if(data>=950)
 {
 eventTime = millis();
 }

if(data<=949 && flag != 13 && millis()-eventTime>=50 && millis()-eventTime<=800)
 {
  flag = 2;
  data1 = data;
 }

if(data>=950 && flag == 2)
 {
  Serial.print("   Serial.print(data1);
  Serial.print(">");
  flag = 0;
  delay(10);
 }

if(data<=949 && flag == 2 && millis()-eventTime>800)
 {
  Serial.print("   Serial.print(data);
  Serial.print(">");
  data1 = data;
  flag = 1;
  delay(10);
 }
}


1. if(data<=949 && flag != 13 && millis()-eventTime>=50 && millis()-eventTime<=800)
{
почему в этой строке flag сравнивается с 13? Ведь мы задаем ему значения 0, 1, или 2.
2. При очень коротком нажатии код кнопки искажается, чтобы задать минимальное время надо поменять "eventTime>=50" на большее?
3. И чисто для понимания, откуда берется в строках подобной этой: "if(data>=950)" значение 950?

lti1 22.11.2014 19:29

ВладимирC, ответил в личку.
1. Я описался, должно быть 1, а не 13, возможно из за этого искажается код кнопки.
2. Да.
3. Функция analogRead(). В идеале должно быть 1023, на всякий случай уменьшил значение до 950.

Serg-Zmuh 28.11.2014 11:45

Цитата:

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

Я так и не могу победить это !!!!!
уже перепрошивался раз 5 ,и сток пробовал и....
постоянно меняется ID ардуины при монтировании ,
у мня подключено по USB в хаб :be:

Пришла Ардуина UNO ,думал поменяю , а фиг вам - тоже самое :no2:

Может кто натолкнет куда копнуть ? я уже и разрабу на форуме XDA отписал ,молчит вторую неделю ....

cherkasoff 28.11.2014 12:31

Цитата:

Сообщение от Serg-Zmuh (Сообщение 312363)
Я так и не могу победить это !!!!!
уже перепрошивался раз 5 ,и сток пробовал и....
постоянно меняется ID ардуины при монтировании ,
у мня подключено по USB в хаб :be:

Пришла Ардуина UNO ,думал поменяю , а фиг вам - тоже самое :no2:

Может кто натолкнет куда копнуть ? я уже и разрабу на форуме XDA отписал ,молчит вторую неделю ....

Если из цепочки подключения хаб исключить, проблема не пропадает?

Serg-Zmuh 28.11.2014 12:45

Цитата:

Сообщение от cherkasoff (Сообщение 312367)
Если из цепочки подключения хаб исключить, проблема не пропадает?

Честно - не пробовал
а вот если прокатит -что тогда ? Без хаба мене ни как нельзя :no:
хаб качественный стоит ...

cherkasoff 28.11.2014 13:16

Цитата:

Сообщение от Serg-Zmuh (Сообщение 312371)
Честно - не пробовал
а вот если прокатит -что тогда ? Без хаба мене ни как нельзя :no:
хаб качественный стоит ...

Надо попробовать без хаба.
Если проблема пропадет - брать другой хаб.

Что за "качественный хаб"?

Serg-Zmuh 29.11.2014 18:27

Цитата:

Сообщение от cherkasoff (Сообщение 312374)
Надо попробовать без хаба.
Если проблема пропадет - брать другой хаб.

Что за "качественный хаб"?

вот такой

вскрывал смотрел ,везде на каждом выходе кондер ,
2 микросхемы распаяны ,вот я фотал ,только обратной стороны чет не зафотал :blush:

Serg-Zmuh 23.12.2014 04:58

в общем замучался я с постоянным отвалом по USB :angry:
пришел блютуз модуль для ардуино ,НС-06 ,подключил
пытаюсь вывести через него с помощью этого скеча от lti1
что надо добавить чтобы данные передавались через блютуз
если можно то сразу готовый скетч :pleasantry:
А то я деревянный в этом вопросе ....

murano 23.12.2014 10:05

Цитата:

Сообщение от Serg-Zmuh (Сообщение 315364)
что надо добавить чтобы данные передавались через блютуз

По приведенной ссылке вставлять ничего не надо. Просто подключаешься к своему ардуино с ВТ через терминал. Хоть в Windows, хоть в андроиде. А вот чтобы все было красиво надо писать что-то свое. По крайней мере готового под ВТ ничего не встречал.

Serg-Zmuh 23.12.2014 11:04

Странно ....
вот решил проверить простой скетч

int cnt = 0; // счетчик

void setup() {
Serial.begin(9600); // инициализация порта
}

void loop() {
cnt++;
Serial.print("Hello BB from Arduino! Counter:"); // выводим надпись
Serial.println(cnt); // выводим значение счетчика и переводим на новую строку
delay(1000); // ждем 1 секунду
}

ну и чтоб в терминале на планшете посмотреть : чет не выводит ни чего :(
может я сами Rx-Tx пины на Леонардо не туда втыкаю ?
ну там вроде для идиотов подписано : первые два пина DIGITAL 0 и 1,так ведь ?
может для Леонардо надо в скече как-то прописать пины блютуз адаптера ?
Просто тут уже разжевано до нельзя .... а у мня не работатет :(

murano 23.12.2014 12:24

Через какую программу подключаешься? Сопряжение устройств делал? Светодиод на ВТ модуле мигает и после подключения зажигается? Через ардуиновский терминал по USB выводится? Пины Rx-Tx правильно подключил (Rx->Tx и Tx->Rx)? На модуль питание 3.3 В?


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

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