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)

DelleTenebre 30.03.2016 11:52

Цитата:

З.Ы. вопрос - а в таскере можно теперь так же по анологии как для RIM сделать :
В таскере создаем профиль-событие-система-Intent Received. В поле действие пишем org.kangaroo.rim.action.ACTION_DATA_RECEIVE. Идем назад на вопрос - выбираем или создаем новую задачу, например, arduino.
4. В задаче:
4.1 Нажимаем плюс-переменная-установить переменную:
Имя: %имя (любое имя)
До: %org_kangaroo_rim_device_extra_args
Вместо org.kangaroo.rim.action.ACTION_DATA_RECEIVE
kg.delletenebre.serial.NEW_DATA

Вместо %org_kangaroo_rim_device_extra_args
%value (в нижнем регистре)

Возможно, если где-то Вы писали %org_kangaroo_rim_device_extra_command
%key (в нижнем регистре)

Остальное должно работать без дополнительной настройки (если до этого работало с RIM). Хотя, мне кажется, что если всего 3-5 датчиков, то не будет ничего страшного если присылать их значения по отдельности, типа .. .. вместо . Но, хозяин - барин.

Цитата:

а для чего можно выбирать действия ? хотя догадываюсь - это наверно если кнопки
рулевые используются
Всё верно, например, настраиваем что при нажатии кнопки, ардуино посылает , в Serial Manager мы можем назначить определённое действие когда эта команда будет распознана.


Цитата:

и все пошло даже без :
* в поле Ключ пишем click
* в поле Значение пишем 125
* в поле Погрешноcть значения пишем 15
* и выберите желаемое действие.
Так и должно было случиться, я просто не знал, что у Вас только датчики. Кстати, выше я эту особенность для виджетов даже подчеркнул :)

Serg-Zmuh 30.03.2016 13:42

Вложений: 3
чет не выходит:sad2:
вот так в таскере сделал:
где косячу ? :blush:
ардуино выводит

DelleTenebre 30.03.2016 15:55

Serg-Zmuh, сейчас попробовал, я неправильно посоветовал:
вместо %VALUE надо %value
вместо %KEY надо %key

Serg-Zmuh 31.03.2016 05:00

да заработало !
копаем разбираемся дальше ....
а вот с этим скетчем :
Код HTML:

#include <OneWire.h>
#include <DallasTemperature.h>
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("<data:");
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);
}

не выводит данные в Serial Manager`e
не понимаю как отловить ....
пробовал в строке команда писать: data ,#,data1,data2

извени мня ,наверно я надоел уже :blush:
вроде с этим скетчем работает, но как-то со сбоями
вот мне и неймется

P.S. но ! главное что твой SerialManager работает по USB и не отваливается не при каких отключениях - ГУД !
Респект Тебе :great:

Максимэ 31.03.2016 08:58

Тогда тебе надо в коде заменить на это:
Код:

Serial.print(" if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
Serial.print(" if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
Serial.print(" if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");


Serg-Zmuh 31.03.2016 12:55

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

Сообщение от Максимэ (Сообщение 356893)
Тогда тебе надо в коде заменить на это:

поддставил этот код
Код:

#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.println(">");
Serial.print(" if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
Serial.print(" if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");

}

картина такая:
скетч на компе работает норм ,данные теперь идут раздельно




а как только подключаю к планшету ститывает только один-два раза при подключении ,а потом молчит
это видно в SerialManager один раз уведомление выскакивает и тишина
с задержками поиграся - не помогает (
в logcat показывает что серис стопится

DelleTenebre 31.03.2016 13:57

Вы в конец задержку добавляли?

Код:

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.println(">");
delay(50);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Serial.print(" if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
delay(50);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Serial.print(" if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
delay(1000);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}

И как Вы хотите точно? Всё раздельно как в коде выше или в виде ?

Serg-Zmuh 31.03.2016 14:10

мне бы чтоб выводило на раздельные виджеты

Максимэ 31.03.2016 14:33

Я был уверен, что не забудешь delay поставить. Должна обязательно быть пауза в 1сек, а то система будет виснуть, поэтому пишем 1000мс. delay(40) можно убрать, т.к. их добавили delay(50) в serial.print.
Код:

tempa.requestTemperatures();
tempb.requestTemperatures();
tempc.requestTemperatures();


DelleTenebre 31.03.2016 17:35

Вложений: 2
Serg-Zmuh, только что попробовал следующее:
В качестве экономии (да и не зря же они OneWire) цепляем датчики последовательно. Картинки во вложении (резистор 4.7 кОм).

Затем скетч:
Код:

const int ONE_WIRE_BUS = 3,//Пин куда подключаем сигнальный провод
          ONE_WIRE_UPDATE_SEC = 1;//Время опроса датчиков в секундах

#include
#include

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature temperatureSensors(&oneWire);

void setup() {
  Serial.begin(9600);
  while (!Serial) ;// Если Leonardo

  temperatureSensors.begin();
  temperatureSensors.setWaitForConversion(false);
}

void loop() {
  updateTemperature();
}

unsigned long lastTemperatureRequest = 0;
void updateTemperature() {
  if (millis() - lastTemperatureRequest >= ONE_WIRE_UPDATE_SEC * 1000) {
    temperatureSensors.requestTemperatures();
   
    for (int i = 0; i < temperatureSensors.getDeviceCount(); i++) {
      printTemperature(i);
    }

    lastTemperatureRequest = millis();
  }
}
void printTemperature(int index) {
  Serial.print("   Serial.print(temperatureSensors.getTempCByIndex(index), 1);
  Serial.println(">");
  delay(100);//Вот тут можно чуть больше или меньше
}

В результате, в зависимости от количества датчиков, Arduino будет выводить: .. .. .. .. и т.д.

На двух датчиках (больше у меня нет) точно работает.


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

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