Просмотр полной версии : Виджет для Remote steering wheel control
Запилил виджет для Remote steering wheel control(http://forum.xda-developers.com/showthread.php?t=2635159)
Позволяет выводить на виджет любые данные с ардуины (https://duino.ru/arduino.html).
Для начала ставим прогу по ссылке выше, там читаем описание что как и куда.
После чего ставим мою прогу, при создании виджета указываем название параметра который он будет отображать(например temp), с ардуины соответственно отсылаем его же, например Serial.print("<temp: 25>"). В названии параметра, насколько я заметил, нельзя использовать цифры, если кому критично пишите автору Remote steering wheel control.
Тестил на 4.4.4, кому нужно для версий пониже пишите - скомпилю.
https://lh4.googleusercontent.com/-o_A81A-tQio/VEoujyPcX5I/AAAAAAAAMZQ/wPhkLdRG4J8/w527-h878-no/Screenshot_2014-10-24-13-37-12.png
https://lh6.googleusercontent.com/-AL1VAIcRqys/VEouhV2IuGI/AAAAAAAAMZE/ZZ0rDTECfE4/w527-h878-no/Screenshot_2014-10-24-13-37-45.png
xxoma, Отличная работа!
Можно попросить скрины для наглядности как это выглядит. =)
Спасибо! Немного позже выложу. Еще датчики температуры в авто не подключил, все времени нет :sad2:
Добавил скрины как выглядит виджет.
ВладимирC
24.10.2014, 15:56
Круто. Спасибо.
Круто. Спасибо.
Если кто пользуется, отпишитесь. Есть ли глюки и тд. И в общем есть ли пожелания что то добавить/исправить? Думаю может прикрутить управление Power amp-ом, например включение/выключение shuffle, перключения папок и тд...
ВладимирC
24.10.2014, 16:14
Вот-вот. мне для этого и нужно. Главное перелистывание папок. Все остальное можно реализовать обычным скетчем, а перелистывать папки еще не нашли как. Вечром буду пробовать.
Вот-вот. мне для этого и нужно. Главное перелистывание папок. Все остальное можно реализовать обычным скетчем, а перелистывать папки еще не нашли как. Вечром буду пробовать.
Для управления переключением папок и тд в power amp нужно юзать его api: https://github.com/maxmpz/powerampapi/blob/master/poweramp_api_example/src/com/maxmpz/poweramp/
могу добавить что бы при приходе какого то параметра от ардиуны, например <shuffle: 1> включал шафл, соответсвенно при 0 выключал, так же с папками, например <folder:up> <folder:down> переключались папки.
ВладимирC
24.10.2014, 18:48
Я только начал изучать Ардуино, пока воспользовался Вот этим скетчем (http://pccar.ru/showpost.php?p=309251&postcount=2),
В таком виде можно вместо ускоренной перемотки подставить листание папок?
Я только начал изучать Ардуино, пока воспользовался Вот этим скетчем (http://pccar.ru/showpost.php?p=309251&postcount=2),
В таком виде можно вместо ускоренной перемотки подставить листание папок?
Там где у вас обрабатывается действие долгого нажатия кнопки делайте Serial.print("<Folder:1>") например. Но я еще не добавил возможность рулить повер ампом в сервис виджета.
Давайте договоримся на какой <action:value> будет реагировать сервис и что при этом будет происходить.
Могу выложить свой скетч который читает данные с ик пульта+управляет питанием планшета если нужно.
ВладимирC
24.10.2014, 19:15
Там где у вас обрабатывается действие долгого нажатия кнопки делайте Serial.print("<Folder:1>") например. Но я еще не добавил возможность рулить повер ампом в сервис виджета.
Давайте договоримся на какой <action:value> будет реагировать сервис и что при этом будет происходить.
Могу выложить свой скетч который читает данные с ик пульта+управляет питанием планшета если нужно.
Меня функциональность скетча в принципе устраивает, только длительная перемотка не нужна, а вместо нее лучше всего переключение папок в винампе. если получиться их листать по кругу, будет совсем замечательно. Только, как я понял весь скетч нужно будет переделывать, он работает как эмулятор клавиатуры, а с Serial.print, как я понимаю (если честно то очень слабо понимаю))) будут конфликты?
Меня функциональность скетча в принципе устраивает, только длительная перемотка не нужна, а вместо нее лучше всего переключение папок в винампе. если получиться их листать по кругу, будет совсем замечательно. Только, как я понял весь скетч нужно будет переделывать, он работает как эмулятор клавиатуры, а с Serial.print, как я понимаю (если честно то очень слабо понимаю))) будут конфликты?
Тоесть у вас ардуино прикидывается клавой и эмулирует нажатия кнопок?
Если да то не проще воспользоваться функционалом Remote steering wheel control если вы все равно ее будете ставить. В ней можно настроить как медиа кнопки, громкость так и запуск приложений и тд.
Смысл моего виджета в том что бы выводить на виджет любые данные с ардуины(темературу, напряжение борт сети, давление турбины как тут просили не давно). Но так как Remote steering wheel control в оригинале не умеет работать именно с Power Amp я предлагаю сделать поддержку его апи и например с пульта иметь возможность управлять шафлом, папками и тд...
ВладимирC
24.10.2014, 19:47
Насчте виджета я понял. Вывод данных очень интересно, ведь входов на ардуино остается много свободных, чего бы не задействовать.
Но потом речь пошла о Power Amp, и тут стало еще интереснее, насколько я понял, на форуме еще никто не научился листать его папки. У меня сейчас в машине стоит комп на винде, там я привык проличтывать плейлисты с рулевых кнопок, это очень удобно, Поставлю планшет - мне этого будет не хватать.
Единствено, надо учитывать, что клавиши вперед и назад управляют переключением станций радио, т.е. нельзя их "насовсем" отдавать Power Ampу.
ВладимирC
24.10.2014, 22:16
Попровал скомпилировать ResistantButtonsTest, вот что пишет:
ResistantButtonsTest.ino:1:20: warning: Button.h: No such file or directory
ResistantButtonsTest:6: error: 'Button' does not name a type
ResistantButtonsTest.ino: In function 'void setup()':
ResistantButtonsTest:13: error: 'button' was not declared in this scope
ResistantButtonsTest.ino: In function 'void loop()':
ResistantButtonsTest:19: error: 'button' was not declared in this scope
А библиотека button.h установлена?
ВладимирC
24.10.2014, 23:41
А библиотека button.h установлена?
Нет, как куда и что? Кажется нашел
Скачал http://arduino-info.wikispaces.com/HAL-LibrariesUpdates здесь библиотеку, распаковал в Arduino\arduino-1.0.4\libraries. Дальше в меню "Скетч-импортировать библиотеку - Button" Открываю Скетч, проверяю
ResistantButtonsTest.ino: In function 'void setup()':
ResistantButtonsTest:13: error: 'class Button' has no member named 'setDebounceDelay'
ResistantButtonsTest:14: error: 'class Button' has no member named 'setHoldDelay'
ResistantButtonsTest.ino: In function 'void loop()':
ResistantButtonsTest:19: error: 'class Button' has no member named 'listen'
ResistantButtonsTest:21: error: 'class Button' has no member named 'onPress'
ResistantButtonsTest:28: error: 'class Button' has no member named 'isHold'
ResistantButtonsTest:35: error: 'class Button' has no member named 'onRelease'
Опять ошибки
Не та библиотека.
Вот из первого поста:
sketch for arduino based on carlynorama / Arduino-Library-Button (https://github.com/carlynorama/Arduino-Library-Button/)
you can find sketch in attachmanets
also as RemoteInputsMgr app.
Качайте эту, только уберите "-" из названия архива и папки внутри перед импортом
https://github.com/carlynorama/Arduino-Library-Button/archive/master.zip
С этой компилируется, только что проверил.
Чет я не понял, кто тут не может папки перелистывать в Power Amp.
Как вы их перелистывать хотите??? Меня допустим устраивает перелистывание папок туда и обратно с руля, что ещё нужно???
Чет я не понял, кто тут не может папки перелистывать в Power Amp.
Как вы их перелистывать хотите??? Меня допустим устраивает перелистывание папок туда и обратно с руля, что ещё нужно???
А как вы их перелистываете?
ВладимирC
25.10.2014, 15:03
А как вы их перелистываете?
Мне тут Написали, что двойное нажатие "NEXT" перелистывает папки (http://pccar.ru/showpost.php?p=309557&postcount=7) сегодня попробую.
Чет я не понял, кто тут не может папки перелистывать в Power Amp.
Как вы их перелистывать хотите??? Меня допустим устраивает перелистывание папок туда и обратно с руля, что ещё нужно???
Вот так форум мусором и обрастает.
Вместо одного поста типа "У меня папки перелистываются рулевыми кнопками вот таким образом" куча ненужных слов, "у меня все зашибись".
ЗЫ позже пост удалю.
ВладимирC, почитайте здесь (http://pccar.ru/showthread.php?p=305182#post305182).
cherkasoff
25.10.2014, 20:03
А кто-нибудь из здесь присутствующих использует модуль Bluetooth (HC-05) с Remote Steering Wheel Control? Если да, то как он к Arduino подключен?
А кто-нибудь из здесь присутствующих использует модуль Bluetooth (HC-05) с Remote Steering Wheel Control? Если да, то как он к Arduino подключен?
TX ардуины к RX модуля, ну и питание, в некоторых случаях нужно согласовать уровни, так как если не шилд а просто модуль то питание 3.3В. Хотя в чем проблема загуглить?)))
У меня по юсб, так более стабильно работает.
А кто-нибудь из здесь присутствующих использует модуль Bluetooth (HC-05) с Remote Steering Wheel Control? Если да, то как он к Arduino подключен?В этом посте (http://pccar.ru/showpost.php?p=268471&postcount=1) есть схема подключения.
ВладимирC
25.10.2014, 23:35
Возвращаясь к проге из шапки. Попытался назначить на кнопку задачу таскера - список пуст.
ВладимирC
26.10.2014, 14:09
Залил библиотеку, залил скетч в Ардуино Pro Micro, поставил программу.
На нажатия реагирует. Но двойной Next папки не листает ( в настройках power двойное нажатие включил. Быстро нажимаю - переключается на следующий трек, медленно - на 2 трека.
Не дает выбрать задачу Таскера. При выборе таскера открывает пустой список задач. Может нужно их как то подготовить в таскере?
Теперь интересная вещь, при нажатии на паузу, Power Amp на паузу ставится.... и включается радио и наоборот. Нужная мне функция, но решилась как то неожиданно). Причем если я ставлю плеер на паузу его родной кнопкой на экране - радио не запускается.
ВладимирC, по порядку:
1. Устанавливаете RemoteInputsMgr-1.3.2.apk (http://forum.xda-developers.com/attachment.php?attachmentid=2963129&d=1412704208) от сюда (http://forum.xda-developers.com/showthread.php?t=2635159).
2. Заливаете этот скетч 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("<release:");
Serial.print(data1);
Serial.print(">");
data1 = 0;
flag = 0;
delay(10);
}
if(data>=950)
{
eventTime = millis();
}
if(data<=949 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800)
{
flag = 2;
if(millis()-eventTime <= 60) data1 = data;
}
if(data>=950 && flag == 2)
{
Serial.print("<click:");
Serial.print(data1);
Serial.print(">");
flag = 0;
delay(10);
}
if(data<=949 && flag == 2 && millis()-eventTime>800)
{
Serial.print("<hold:");
Serial.print(data);
Serial.print(">");
data1 = data;
flag = 1;
delay(10);
}
}
3. Подключаете кнопки по этой схеме http://pccar.ru/attachment.php?attachmentid=37395&stc=1&thumb=1&d=1413662414
4. Настраиваете RemoteInputsMgr на короткие и длинные нажатия необходимые Вам действия.
Если необходимо листать папки в PowerAMP:
5. Устанавливаете Tasker (https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ru). В настройках ставим галку "Разрешить внешний доступ".
6. Устанавливаете Action Box - Tasker Plug-in (https://play.google.com/store/apps/details?id=pe.lastingchild.actionbox&hl=ru)
7. Создаете задачу в Tasker: Плагин -> Action Box -> Конфигурация -> PowerAMP -> Player Control -> Next Dir или Previous Dir -> Готово -> Сохранить.
8. Далее созданную задачу вешаете в RemoteInputsMgr на необходимую кнопку.
Всё.
ВладимирC
26.10.2014, 17:36
ВладимирC,
8. Далее созданную задачу вешаете в RemoteInputsMgr на необходимую кнопку.
Всё.
Спасибо огромное, все сделал, коды читает, но с последним пунктом проблема, задаю действие "tasker shortcut" ? открываю список задач таскера - он пуст.
Спасибо огромное, все сделал, коды читает, но с последним пунктом проблема, задаю действие "tasker shortcut" ? открываю список задач таскера - он пуст.
Вы установили Action Box - Tasker Plug-in (https://play.google.com/store/apps/details?id=pe.lastingchild.actionbox&hl=ru) и создали задачу в Tasker? Tasker активен, в левом верхнем угу таскера шестеренка с молнией цветная?
ВладимирC
26.10.2014, 17:47
Все сделал, В таскере "Tasker enabled", в левом верхнем углу просто белая молния, в выпадающем меню "активных профилей нет"
ВладимирC, у себя проверил, не важно активен Tasker или нет.
Выложите скин созданной Вами задачи.
ВладимирC
26.10.2014, 17:57
Задача работает, при нажатии на нее в таскере. Ща попробую скрин сделать
На действие play/pause не обращайте внимания
ВладимирC
26.10.2014, 18:11
RemoteInputsMgr-1.3.2.apk переустанавливал. Еще одно неудобство, после каждой перезагрузки приходится заходить в настройки и вручную указывать "Device""
Не знаю, попробуйте перегрузить планшет что ли.
Планшет рутован? Не знаю, влияет это или нет.
У меня задача немного по другому выглядит.
ВладимирC
26.10.2014, 18:18
Не знаю, попробуйте перегрузить планшет что ли.
Планшет рутован? Не знаю, влияет это или нет.
У меня задача немного по другому выглядит.
Рутованный, планшет перегружал. Попробовать таскер переустановить если только.
Вспомнил, в настройках Tasker поставьте галку "Разрешить внешний доступ". Давно настраивал, забыл уже.
Добавил в инструкцию из 27 поста (http://pccar.ru/showpost.php?p=309621&postcount=27).
ВладимирC
26.10.2014, 18:38
Вспомнил, в настройках Tasker поставьте галку "Разрешить внешний доступ". Давно настраивал, забыл уже.
Урааааа, спасибо огромное, заработало)) У меня еще один вопрос, я в личку сейчас накатаю, чтобы тему не засорять.
Serg-Zmuh
06.11.2014, 11:40
Вот - вот !!!
это то что мне нужно и я раньше на всех форумах спрашивал
мне нужно выводить данные из Ардуино-Леонардо на планшет ,будет две температуры,
давление турбины ,ну и еще там потом по-ходу ....
Сейчас в наличии есть только Леонарда , какие скетчи туда необходимы ?
с чего начать так сказать ?
датчик далласовский я еже цеплял - работает :)
а вот куда дальше ...?
Serg-Zmuh, в первом посте есть ссылка http://forum.xda-developers.com/showthread.php?t=2635159, там пример скетча, дальше по инструкции из того же первого поста этой темы.
Serg-Zmuh
07.11.2014, 05:48
Serg-Zmuh, в первом посте есть ссылка http://forum.xda-developers.com/showthread.php?t=2635159, там пример скетча, дальше по инструкции из того же первого поста этой темы.
пытался по вашим ссылкам на XDA почитать скачать
скетчи ..., у мня они не компилятся и не грузятся ...
Arduino: 1.5.8 (Windows XP), Board: "Arduino Leonardo"
sketch_nov07g.ino: In function 'void setup()':
sketch_nov07g.ino:3:11: error: 'KPin' was not declared in this scope
sketch_nov07g.ino:4:11: error: 'SPin' was not declared in this scope
Ошибка компиляции.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
у мня Леонардо ,все что с Леонардо пока освоил -прикрутил DS18B20 датчик .... дальше что и куда у мня затык :(
ну полный ноль я пока-что ,мне бы по-шагово ктоб разжевал ....
Замените KPin, SPin на номер порта куда у вас поключен блютус. Вы будете через блютус связывать ардуино с планшетом или по юсб? Если по юсб то вам этот скетч не нужен, он для конфигурации блютус модуля. Примеры кода для кнопок внизу в приатаченых файлах.
Serg-Zmuh
08.11.2014, 06:48
пока по юсб буду использовать
Serg-Zmuh, скетч из этого поста (http://pccar.ru/showthread.php?p=309621#post309621) для примера тоже подойдет. Вот так примерно выводить информацию на виджет:data1=температуре с датчика 1
Serial.print("<tempa:");
Serial.print(data1);
Serial.print(">");
data2=температуре с датчика 2
Serial.print("<tempb:");
Serial.print(data2);
Serial.print(">");Ну и соответственно в конфигурации виджета прописываете для датчика 1 tempa, а для датчика 2 tempb.
При добавлении нескольких виджетов и динамически меняющихся значениях, происходит задержка обновления данных. В реальном времени обновляется только последний Serial.print в ардуино. Это проблема андроида? Можно это как то исправить?
Тестил на 4.4.4, кому нужно для версий пониже пишите - скомпилю.
Буду благодарен за версию для 4.1 и выше.
При добавлении нескольких виджетов и динамически меняющихся значениях, происходит задержка обновления данных. В реальном времени обновляется только последний Serial.print в ардуино. Это проблема андроида? Можно это как то исправить? Думаю чаще одной секунды обновлять виджет смысла нет, все равно визуально не успеете увидеть инфу)
Буду благодарен за версию для 4.1 и выше.
Под 4.1 позднее выложу. Насчет задержек, от моего виджета это не зависит. Пишите автору remote steering wheel. А какая частота обновления, что оно не успевает?
А какая частота обновления, что оно не успевает?
Для примера взять можно вот это:
int i, data1, data2, data3, data4;
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" обновляется как надо - раз в секунду. Остальные же как попало.
Ну так сделайте delay(250) после каждого вывода в сериал. А то оно за раз пачку выдает.
Спасибо. Так на много лучше
Из пожеланий хотелось бы иметь возможность изменять размер, цвет и сам шрифт. Без проблем все заработало на 4.1.1
Ок, позднее прикручу такую возможность.
А можно для чайников инструкцию?
Типа 1. взять ардуино, 2 приделать датчик туда то, такой ТО, залить скетч, поставить прогу такую то. Хочется выводить 2 температуры.
Спасибо заранее. Как раз имеется в наличии ардуино нано, покупал его для перепрошивки регуляторов квадрокоптера.
samael9,
http://lukjanow.ru/wp-content/uploads/2012/04/temps.jpg
Скетч для двух датчиков:#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 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 по таймеру каждую секунду, сдвиг 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 ( 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("<tempa:");
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("<tempb:");
if (minus==1) Serial.print("-");
Serial.print(Temp/16);
Serial.print(".");
Serial.print(znak);
Serial.print("C");
Serial.print(">");
}
Про прогу и виджет читайте первый пост.
Ссылка (http://cxem.net/arduino/arduino17.php), ссылка (http://habrahabr.ru/post/141865/).
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
Мужики чет не доезжаю ,А как все это связать ?
вот есть виджет xxoma я его установил на планшет
в ардуино-Леонардо залил скетч который выше привел в пример lti1
а что на xda-forum-е тогда лежит, это на каком этапе в Ардуино заливать ?
просто я пока дуб-дубом ,вы уж извените....
Если про скетч, то либо скетч lti1, либо c XDA. Но на XDA еще APK файл есть, вот его нужно скачать и установить на планшет.
на XDA еще APK файл есть, вот его нужно скачать и установить на планшет.
http://forum.xda-developers.com/attachment.php?attachmentid=2963129&d=1412704208
А в приведённом скетче переменные на оба датчика называются одинаково Temp. Что бы работал виджет, как в первом посте (1 виджет одна, второй другая) нужно переменную второго датчика обозвать по другому?
Serg-Zmuh
13.11.2014, 14:26
RemoteInputsMgr-1.3.2.apk переустанавливал. Еще одно неудобство, после каждой перезагрузки приходится заходить в настройки и вручную указывать "Device""
а эту проблему решили ?
и еще попутно вопрос :
случайно при первом втыкании леонардо поставил галку "использовать по умолчанию" таперь он становится клавой ,наверно и из-за этого когда настраиваешь виджет температуры при подтверждении рабочий стол планшета становится пустой и помогает только перезагрузка...:dntknw:
ВладимирC
13.11.2014, 14:33
а эту проблему решили ?
и еще попутно вопрос :
случайно при первом втыкании леонардо поставил галку "использовать по умолчанию" таперь он становится клавой ,наверно и из-за этого когда настраиваешь виджет температуры при подтверждении рабочий стол планшета становится пустой и помогает только перезагрузка...:dntknw:
Проблема сама как то решилась.
А в случае пропадания клавы в уведомлениях вскакивает "Выберите способ ввода". И в этом уведомлении напротив физической клавы есть выключатель, если его выключить, то работает и леонардо и экранная клава, перезагружать ничего не надо. Правда при перезагрузке, лпять нужно выключать.
А в приведённом скетче переменные на оба датчика называются одинаково Temp. Что бы работал виджет, как в первом посте (1 виджет одна, второй другая) нужно переменную второго датчика обозвать по другому?Нет, не нужно, все работает как есть. Переменная меняет свое значение каждые пол секунды и отправляет данные в порт, поочередно 1 датчик, 2 датчик.
А в самих виджетах нужно прописать tempa и tempb.
Serg-Zmuh
13.11.2014, 19:41
Проблема сама как то решилась.
А в случае пропадания клавы в уведомлениях вскакивает "Выберите способ ввода". И в этом уведомлении напротив физической клавы есть выключатель, если его выключить, то работает и леонардо и экранная клава, перезагружать ничего не надо. Правда при перезагрузке, лпять нужно выключать.
а прошивка у вас какая ?
у мня СМ11 PACMAN
ВладимирC
13.11.2014, 19:43
а прошивка у вас какая ?
у мня СМ11 PACMAN
Сток, ядро с поддержкой USB DAC.
Доброго дня! Никогда не сталкивался с ардуино, но очень бы хотелось попробовать.
Не подскажите какую версию ардуино лучше использовать и датчики температуры(чтоб мог работать на улице)? Если можно ссылки. Спасибо.
Доброго дня! Никогда не сталкивался с ардуино, но очень бы хотелось попробовать.
Не подскажите какую версию ардуино лучше использовать и датчики температуры(чтоб мог работать на улице)? Если можно ссылки. Спасибо.
http://compcar.ru/forum/forumdisplay.php?f=57
Доброго дня! Никогда не сталкивался с ардуино, но очень бы хотелось попробовать.
Не подскажите какую версию ардуино лучше использовать и датчики температуры(чтоб мог работать на улице)? Если можно ссылки. Спасибо.
на картинке слева Нано, справа Микро оба можно использовать, микро-аналог леонардо, датчики DHT11, DHT22 все покупается в китае по цене 3 доллара за единицу (+-1,5$)
можешь в гости заехать - покажу чего-нибудь :)
Спасибо за ответы и приглашение!
покажу чего-нибудь :)
Приезжай к нам, "тоже есть что показать":big:
Приезжай к нам, "тоже есть что показать":big:
если все сложится в след. году поеду в Кемеровскую область к родне, Могу ведь и заехать :)
ВладимирC
22.11.2014, 18:43
Друзья помогите понять что к чему в скетче, а то автор прогуливает)). Просто пока снял блочок, не хочется потом опять деинсталировать.
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("<release:");
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("<click:");
Serial.print(data1);
Serial.print(">");
flag = 0;
delay(10);
}
if(data<=949 && flag == 2 && millis()-eventTime>800)
{
Serial.print("<hold:");
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?
ВладимирC, ответил в личку.
1. Я описался, должно быть 1, а не 13, возможно из за этого искажается код кнопки.
2. Да.
3. Функция analogRead() (http://arduino.ru/Reference/AnalogRead). В идеале должно быть 1023, на всякий случай уменьшил значение до 950.
Serg-Zmuh
28.11.2014, 11:45
RemoteInputsMgr-1.3.2.apk переустанавливал. Еще одно неудобство, после каждой перезагрузки приходится заходить в настройки и вручную указывать "Device""
Я так и не могу победить это !!!!!
уже перепрошивался раз 5 ,и сток пробовал и....
постоянно меняется ID ардуины при монтировании ,
у мня подключено по USB в хаб :be:
Пришла Ардуина UNO ,думал поменяю , а фиг вам - тоже самое :no2:
Может кто натолкнет куда копнуть ? я уже и разрабу на форуме XDA отписал ,молчит вторую неделю ....
cherkasoff
28.11.2014, 12:31
Я так и не могу победить это !!!!!
уже перепрошивался раз 5 ,и сток пробовал и....
постоянно меняется ID ардуины при монтировании ,
у мня подключено по USB в хаб :be:
Пришла Ардуина UNO ,думал поменяю , а фиг вам - тоже самое :no2:
Может кто натолкнет куда копнуть ? я уже и разрабу на форуме XDA отписал ,молчит вторую неделю ....
Если из цепочки подключения хаб исключить, проблема не пропадает?
Serg-Zmuh
28.11.2014, 12:45
Если из цепочки подключения хаб исключить, проблема не пропадает?
Честно - не пробовал
а вот если прокатит -что тогда ? Без хаба мене ни как нельзя :no:
хаб качественный стоит ...
cherkasoff
28.11.2014, 13:16
Честно - не пробовал
а вот если прокатит -что тогда ? Без хаба мене ни как нельзя :no:
хаб качественный стоит ...
Надо попробовать без хаба.
Если проблема пропадет - брать другой хаб.
Что за "качественный хаб"?
Serg-Zmuh
29.11.2014, 18:27
Надо попробовать без хаба.
Если проблема пропадет - брать другой хаб.
Что за "качественный хаб"?
вот такой (http://www.shop-profit.ru/shop/kompyuternaya-tekhnika/manipulyatory-i-ustroystva-vvoda/kontsentrator-usb-khab/show103300/#prettyPhoto)
вскрывал смотрел ,везде на каждом выходе кондер ,
2 микросхемы распаяны ,вот (http://pccar.ru/attachment.php?attachmentid=37628&d=1416446393) я фотал ,только обратной стороны чет не зафотал :blush:
Serg-Zmuh
23.12.2014, 04:58
в общем замучался я с постоянным отвалом по USB :angry:
пришел блютуз модуль для ардуино ,НС-06 ,подключил
пытаюсь вывести через него с помощью этого (http://pccar.ru/showpost.php?p=310569&postcount=52) скеча от lti1
что надо добавить чтобы данные передавались через блютуз
если можно то сразу готовый скетч :pleasantry:
А то я деревянный в этом вопросе ....
что надо добавить чтобы данные передавались через блютуз
По приведенной ссылке вставлять ничего не надо. Просто подключаешься к своему ардуино с ВТ через терминал. Хоть в 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,так ведь ?
может для Леонардо надо в скече как-то прописать пины блютуз адаптера ?
Просто тут (http://cxem.net/arduino/arduino63.php) уже разжевано до нельзя .... а у мня не работатет :(
Через какую программу подключаешься? Сопряжение устройств делал? Светодиод на ВТ модуле мигает и после подключения зажигается? Через ардуиновский терминал по USB выводится? Пины Rx-Tx правильно подключил (Rx->Tx и Tx->Rx)? На модуль питание 3.3 В?
Serg-Zmuh
23.12.2014, 16:24
Через какую программу подключаешься? Сопряжение устройств делал? Светодиод на ВТ модуле мигает и после подключения зажигается? Через ардуиновский терминал по USB выводится? Пины Rx-Tx правильно подключил (Rx->Tx и Tx->Rx)? На модуль питание 3.3 В?
Все норм соединяется .как ты и пишешь.
только вот последнее не понял
.. rx k tx ? Я зацепил rx k rx и tx k tx,вот бы сроду не подумал что
все наоборот :blink2:
По твоей ссылке написано: вывод Arduino TX - к 2 пину модуля RX
вывод Arduino RX - к 1 пину модуля TX
Serg-Zmuh
24.12.2014, 03:46
По твоей ссылке написано: вывод Arduino TX - к 2 пину модуля RX
вывод Arduino RX - к 1 пину модуля TX
У мня то Леонардо , хотя я так и сяк попробовал - не работает :shok:
пробовал просто проверить отклик в терминале замкнув Rx-
Tx - работает ,получается с Леонардо нет вывода инфы ....
попробую на UNO еще ,она у мня в машине .... ,щаз морозы лезть туда ломы :(
короче х.з. что делать - прям невезуха какая-то :dntknw:
У мня то Леонардо , хотя я так и сяк попробовал - не работает :shok:
пробовал просто проверить отклик в терминале замкнув Rx-
Tx - работает ,получается с Леонардо нет вывода инфы ....
попробую на UNO еще ,она у мня в машине .... ,щаз морозы лезть туда ломы :(
короче х.з. что делать - прям невезуха какая-то :dntknw:
Модуль может 3.3В уровни имеет.
Serg-Zmuh, попробуйте на вывод RX HC-05 поставить делитель напряжения на двух резисторах, для согласования уровня с 5 до 3.3 вольт. Ардуино логический уровень 3.3 вольта воспринимает адекватно.
http://pccar.ru/attachment.php?attachmentid=32457&d=1377380852.jpg
Serg-Zmuh
25.12.2014, 09:15
lti1
попробовал - нифига :( Поправка ,у мня НС-06 )
все сходится к тому что с Леонарды нет сигналов ... странно как-то
скетчи и все остальное на ней работает ...
не мог же я спалить выходы на Леонардо просто перепутав Rx с Tx , бред какой-то
пичаль :(
Попробуй через SoftwareSerial.
Для проверки можно попробовать использовать переходник RxTx->USB. Себе сделал из старого компьютерного адаптера для телефона. Также продаются отдельные такие переходники в инет-магазинах.
d3890666
25.12.2014, 11:18
lti1
попробовал - нифига :( Поправка ,у мня НС-06 )
все сходится к тому что с Леонарды нет сигналов ... странно как-то
скетчи и все остальное на ней работает ...
не мог же я спалить выходы на Леонардо просто перепутав Rx с Tx , бред какой-то
пичаль :(
В Arduino Leonardo и Micro, основной класс Serial ассоциирован с драйвером виртуального последовательного порта для соединения с компьютером через USB. Физически он не соединен с выводами 0 и 1, как это сделано на платах Arduino Uno и в более старых версиях. Для обращения к аппаратному последовательному порту (выводам 0 и 1, RX и TX) используйте класс Serial1. (Для получения дополнительной информации см. справку по классу Serial). (http://arduino.ua/ru/guide/ArduinoLeonardoMicro)
Насколько я понимаю, из мануала на сайте ардины, у леонардо нужно обращаться по Сериал1 для получения инфы Rx Tx.
Serg-Zmuh
25.12.2014, 11:49
Во блин .... ,это уже интересно :)
седня попробую к УНО зацепить - и все станет ясно :)
Serg-Zmuh
25.12.2014, 15:06
Подключил к uno - все работает ! И при отключениях не
сбрасывает .
вывод- надо разбираться с Леонардой,
скетч надо наверно другой ...
Так попробуй через Serial1, а не просто Serial
Serg-Zmuh
26.12.2014, 03:19
Так попробуй через Serial1, а не просто Serial
Благодарю за помощь и подсказки :wink:
позже попробую с Леонардой ,я так понял там везде вместо serial изменить
на Serial1 , отпишусь позже ...,
Serg-Zmuh
06.02.2015, 11:07
Запилил виджет для Remote steering wheel control(http://forum.xda-developers.com/showthread.php?t=2635159)
Позволяет выводить на виджет любые данные с ардуины.
Для начала ставим прогу по ссылке выше, там читаем описание что как и куда.
После чего ставим мою прогу, при создании виджета указываем название параметра который он будет отображать(например temp), с ардуины соответственно отсылаем его же, например Serial.print("<temp: 25>"). В названии параметра, насколько я заметил, нельзя использовать цифры, если кому критично пишите автору Remote steering wheel control.
Тестил на 4.4.4, кому нужно для версий пониже пишите - скомпилю.
https://lh4.googleusercontent.com/-o_A81A-tQio/VEoujyPcX5I/AAAAAAAAMZQ/wPhkLdRG4J8/w527-h878-no/Screenshot_2014-10-24-13-37-12.png
https://lh6.googleusercontent.com/-AL1VAIcRqys/VEouhV2IuGI/AAAAAAAAMZE/ZZ0rDTECfE4/w527-h878-no/Screenshot_2014-10-24-13-37-45.png
Привет !!!
вопрос - случаем не собираешься виджет свой доработать ? :blush:
размер шрифта изменять , форму окна ., ну т.д.
или забросил тему ... :acute:
Привет. Собираюсь да вот никак не соберусь)
Если будет время на след. неделе то добавлю смену размера шрифта. А форму окна зачем менять? Размеры растягиваются лаучером.
Виджет, представленный здесь не имеет таких широких настроек как ,например, Zooper. Поэтому используя последний в связке с Remote steering wheel control и Tasker можно получить больше возможности.
Для получения данных с ардуино создаем профиль Событие - Система - Intent Recived. В действие пишем org.kangaroo.rim.action.ACTION_DATA_RECEIVE. Профиль будет отрабатывать при каждом приеме данных из ардуино.
На профиль вешаем задачу, в которой читаем переменную %org_kangaroo_rim_device_extra_args. Ну а далее используем эту переменную или в таскере для вывода на сцену, или через Zooper, в котором создаем любой виджет и отображаем данные. Из ардуино несколько данных можно передавать, например, в виде <var:x1#x2#x3>. Здесь x1, x2,x3 - передаваемые данные, # - разделитель (используется для расчленения переменной).
Как использовать Zooper в Tasker расписано при его настройке.
Ну если есть более удобное решение то не буду заново изобретать велосипед. Можно скрин как это выглядит?
http://s017.radikal.ru/i403/1502/cf/56b60140fb9c.png (http://www.radikal.ru)
В правом квадрате температура от датчика подключенного к ардуино
Переменной temp присваиваем данные от ардуино (вида "var1#var2#...). Разбираем temp на составляющие (temp1, temp2, ....).
Присваиваем переменной temp из zooper значение temp1. Выводим виджет zooper через оверлей.
Serg-Zmuh
20.02.2015, 04:09
у мня ни фига не получается :(
я в таскере не силен....
если можно разжевать по полочкам - буду благодарен
у мня выводится две тепмературы из ардуино ,tempa и tempb
все что я сделал - это поставил виджет и таскер :blush:
на большее тямы не хватает ....
1. В ардуино отправляешь данные вида:
Serial.print("<data:");
Serial.print (tempa);
Serial.print("#");
Serial.print(tempb);
Serial.println(">");
Можно отправлять данные как у автора RemoteInputsMgr по отдельности, но так, как мне кажется, немного сложнее в их отлавливании таскером. Но в некоторых случаях только такой вариант реализации возможен, например, для передачи данных температуры и реализации резистивных кнопок чтобы отсеивать информацию с кнопок.
2. На планшете в RemoteInputsMgr выбираем USB соединение и устанавливаем скорость обмена как в ардуино.
3. В таскере создаем профиль-событие-система-Intent Received. В поле действие пишем org.kangaroo.rim.action.ACTION_DATA_RECEIVE. Идем назад на вопрос - выбираем или создаем новую задачу, например, arduino.
4. В задаче:
4.1 Нажимаем плюс-переменная-установить переменную:
Имя: %имя (любое имя)
До: %org_kangaroo_rim_device_extra_args
4.2 Плюс-переменная-расчленить переменную:
Имя: имя из п.4.1
Разделитель: разделитель из строки посылаемой ардуино. В нашем случае - #
4.3 Ecли данные из ардуино посылаем по отдельности, то в задаче нужно отслеживать переменную %org_kangaroo_rim_device_extra_command. Аналогично п.4.1 читаем ее. Например, переменной %Com присваиваем ее значение и сравниваем, например, с "tempa". Если %Com=tempa, то выполняем какие-то действия с данными %org_kangaroo_rim_device_extra_args.
Как писал ранее, пофиль будет отрабатывать при каждом приеме данных из ардуино.
5. Открываем Overlas-плюс-название профиля-add-виджет-zooper-виджет нужного размера-назад и нажать на имени созданного виджета, чтобы OFF поменялось на ON. Выходим из программы. На экране тапаем по виджету, открывается редактор. Создаем что нужно. В поле дополнительные параметры выбираем таскер и пишем #Txxx#, Ok. XXX - имя переменной. Выходим из редактора. В overlays отключаем виджет. При необходимости там же в настройках отключаем возможность реакции при нажатии на него.
6. В таскере в ранее созданной задаче.
Плюс-плагин-zooper-конфигурация(карандаш):
ZW переменная: переменная из редактора zooper (XXX)
ZW текст: имя из п.4.1 Если данные из ардуино посылаются все сразу, то к имени нужно дописать порядковый номер передаваемых данных (1,2,...). Их можно посмотреть во вкладке VARS.
Сохранить.
7. Создаем новую задачу, например Overlays on.
Плюс-плагин-overlays-конфигурация(карандаш)-созданный виджет-вкл.
8. Запускаем задачу Overlays on и в виджете должна отображаться информация.
Serg-Zmuh
21.02.2015, 07:02
вот пятый пункт не понял ...
5. Открываем Overlas-плюс-название профиля-add-виджет-zooper-виджет нужного размера-назад и нажать на имени созданного виджета, чтобы OFF поменялось на ON
это где открывать ?
Overlays - Float Everywhere (https://play.google.com/store/apps/details?id=com.applay.overlay)
Кто нибудь выводил на нексус 2013 года русские символы?
Виджет не поддерживает выводятся непонятные знаки, usb serial monitor выводит нормально, а если через таскер создать сцену как с русскими буквами? Кодировка win1251.
Я отсканировал морду jvc x-310bte хочу вывести на планшет, английский нормально а вот с русским беда. В таскере можно размер шрифта менять?
Вот пока как: https://yadi.sk/i/nDapvjiDgmFJP
Совместными усилиями с lti1 всё получилось как надо, теперь русские символы как в виджете так и в таскере
https://yadi.sk/i/s7HPhTOMgrgUs
https://yadi.sk/i/eM9iYWBegrgVE
Disgraced
28.05.2015, 19:24
Подскажите, может ли данная программа дать ардуине команду на выполнение определённого действия? К примеру жму кнопку на планшете, программа передаёт команду ардуине, а ардуина замыкает контакты и включается/выключается свет в салоне или ещё что?
Или работает только в обратную сторону? Т.е. ардуина считала информацию и переслала в планшет.
Подскажите, может ли данная программа дать ардуине команду на выполнение определённого действия? К примеру жму кнопку на планшете, программа передаёт команду ардуине, а ардуина замыкает контакты и включается/выключается свет в салоне или ещё что?
Или работает только в обратную сторону? Т.е. ардуина считала информацию и переслала в планшет.
Может но с помощью стороних прог типа таскера, по ссылке из первого поста зайди там же написано:
added support recive data from external apps for sending to device
action: org.kangaroo.rim.action.ACTION_DATA_SEND
exrta: org.kangaroo.rim.device.EXTRA_COMMAND, org.kangaroo.rim.device.EXTRA_ARGS
data format that will be sent to device "<extra_command:extra_args>"
GRAFLEKX
21.06.2015, 14:54
Добрый день, друзья.
Прошу подсказать или дать наводку.
Если подобное решение под Android-2.3x?
Необходимо взять данные с Arduino (https://duino.ru/arduino-nano-micro-usb/) через USB и вывести их на экран.
Данные - температура с двух датчиков DS18B20.
Заранее благодарен за любую подсказку.
Заранее благодарен за любую подсказку.
http://pccar.ru/showpost.php?p=321209&postcount=99
http://pccar.ru/showpost.php?p=321209&postcount=99Для этого решения все равно необходимо устанавливать Remote steering wheel control (http://forum.xda-developers.com/showthread.php?t=2635159), а он не работает на Android-2.3x.
Добрый день, друзья.
Прошу подсказать или дать наводку.
Если подобное решение под Android-2.3x?
Необходимо взять данные с Arduino (https://duino.ru/arduino-nano-micro-usb/) через USB и вывести их на экран.
Данные - температура с двух датчиков DS18B20.
Заранее благодарен за любую подсказку.
Я ставил вот эту программу https://play.google.com/store/apps/details?id=appinventor.ai_rblackmore245.Arduino_Bl uetooth и таскером уже формировал данные
maxymike
08.09.2015, 18:45
Направьте на путь истинный:у меня вот такой девайс https://duino.ru/arduino-nano-v7--carduino-nano-duo-.html. Поставил скетч lti1 c 3-ей страницы, изменив номер аналогового порта на свой-в приложении на планшете выставил usb,устройство определяется, но от кнопок тишина. В сериал порт Arduino IDE ничего, только иногда пролетает hold без нажатия кнопки. С другими скетчами сериал порт работает, кнопки прозваниваются четко. В чем может быть беда?
Направьте на путь истинный: ... В чем может быть беда?Нужно Arduino Leonardo или Arduino Pro Micro.
Направьте на путь истинный:у меня вот такой девайс https://duino.ru/arduino-nano-v7--carduino-nano-duo-.html. Поставил скетч lti1 c 3-ей страницы, изменив номер аналогового порта на свой-в приложении на планшете выставил usb,устройство определяется, но от кнопок тишина. В сериал порт Arduino IDE ничего, только иногда пролетает hold без нажатия кнопки. С другими скетчами сериал порт работает, кнопки прозваниваются четко. В чем может быть беда?
Все должно работать, выложите свой скетч и схему подключения.
Нужно Arduino Leonardo (https://duino.ru/Arduino-Leonardo.html)или Arduino Pro Micro (https://duino.ru/arduino-pro-micro.html).Неправда, Nano (https://duino.ru/arduino-nano-v30-ch340-usb.html) тоже работает.
maxymike
08.09.2015, 19:22
Земля от кнопок руля к Gnd подключена,фаза к А7, без резисторов, так как на arduino (https://duino.ru/arduino.html) он уже на А7 стоит на 3,3кОм
Скетч от же, только в начале вместо А0 стоит А7
maxymike
08.09.2015, 19:25
int analogPin=A7
maxymike
08.09.2015, 19:29
int analogPin=A7;
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("<release:");
Serial.print(data1);
Serial.print(">");
data1 = 0;
flag = 0;
delay(10);
}
if(data>=950)
{
eventTime = millis();
}
if(data<=949 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800)
{
flag = 2;
if(millis()-eventTime <= 60) data1 = data;
}
if(data>=950 && flag == 2)
{
Serial.print("<click:");
Serial.print(data1);
Serial.print(">");
flag = 0;
delay(10);
}
if(data<=949 && flag == 2 && millis()-eventTime>800)
{
Serial.print("<hold:");
Serial.print(data);
Serial.print(">");
data1 = data;
flag = 1;
delay(10);
}
}
maxymike
08.09.2015, 19:54
В приложении при замыкании двух проводов ардуины иногда пишет 549 hold, но не всегда. Может, сопротивления надо больше?
Земля от кнопок руля к Gnd подключена,фаза к А7, без резисторов, так как на carduino он уже на А7 стоит на 3,3кОм
Скетч от же, только в начале вместо А0 стоит А7Попробуйте подключить к другому аналоговому входу без дополнительных резисторов, в скетче предусмотрена программная подтяжка к +5 digitalWrite(analogPin, HIGH);, для проверки можете просто замкнуть новый аналоговый вход на -.
maxymike
09.09.2015, 14:24
Попробуйте подключить к другому аналоговому входу без дополнительных резисторов, в скетче предусмотрена программная подтяжка к +5 digitalWrite(analogPin, HIGH);, для проверки можете просто замкнуть новый аналоговый вход на -.
Кинул на A0. То же самое. Планшет молчит. В сериал порте при замыкании проводов проскакивают hold 15, release 15, click 15. При подключении кнопок постоянно hold 108,реакции кнопок нет. Прям беда какая-то
Кинул на A0. То же самое. Планшет молчит. В сериал порте при замыкании проводов проскакивают hold 15, release 15, click 15. При подключении кнопок постоянно hold 108,реакции кнопок нет. Прям беда какая-тоТак и должно быть, при коротковременном (менее 0,8 секунды) замыкании в сериал приходит <click:15>, при длительном замыкании (более 0,8 секунды) <hold:15>, если после этого разомкнуть контакты, должно прилететь <release:15>, естественно вместо 15 может быть другое значение. Изучайте схему Ваших кнопок, она не соответсвует схеме указанной в моем посте на 3 странице, по этому и не работает.
maxymike
09.09.2015, 17:42
У меня chery tiggo fl, там стоит матрица из 6 резисторов от 0 до 2ком, на выход 2 провода. Они нормально опрашиваются сериал портом на стандартном скетче с дребезгом в 1-2 единицы.
У меня chery tiggo fl, там стоит матрица из 6 резисторов от 0 до 2ком, на выход 2 провода. Они нормально опрашиваются сериал портом на стандартном скетче с дребезгом в 1-2 единицы.Измерьте сопротивление на этих двух проводах при отпущенных кнопках.
maxymike
09.09.2015, 20:30
Измерьте сопротивление на этих двух проводах при отпущенных кнопках.
Прибора нет, но, что странно-значение покоя в сериалпорте (без нажатия кнопки)выше значений нажатия. В этом, наверное, все дело. Это как-нибудь программно,без перепайки резисторов, можно победить?
Прибора нет, но, что странно-значение покоя в сериалпорте (без нажатия кнопки)выше значений нажатия. В этом, наверное, все дело.Так и есть.Это как-нибудь программно,без перепайки резисторов, можно победить?Можно, заливайте этот скетч и выкладывайте полученные значения в состоянии покоя, минимальное и максимальное значение при нажатых кнопках.
int analogPin=A7; //пин для подключения кнопок
int data;
void setup()
{
Serial.begin(9600);
}
void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки
Serial.println(data);
delay(1000);
}
maxymike
09.09.2015, 21:49
540 покой,24 меньший, 317 больший
540 покой,24 меньший, 317 больший
Пробуйте, специально для Chery Tiggo FL и arduino Nano V.7 https://duino.ru/arduino-nano-v7--carduino-nano-duo-.html
int analogPin=A7;
int data;
int data1 = 0;
int flag = 0;
unsigned long eventTime = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
data=analogRead(analogPin);
if(data>=500 && data1 != 0 && flag <= 1)
{
Serial.print("<release:");
Serial.print(data1);
Serial.print(">");
data1 = 0;
flag = 0;
delay(10);
}
if(data>=500)
{
eventTime = millis();
}
if(data<=499 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800)
{
flag = 2;
if(millis()-eventTime <= 60) data1 = data;
}
if(data>=500 && flag == 2)
{
Serial.print("<click:");
Serial.print(data1);
Serial.print(">");
flag = 0;
delay(10);
}
if(data<=499 && flag == 2 && millis()-eventTime>800)
{
Serial.print("<hold:");
Serial.print(data);
Serial.print(">");
data1 = data;
flag = 1;
delay(10);
}
}
maxymike
10.09.2015, 01:50
Алилуйя! Все заработало, огромное спасибо. Долгое нажатие отрабатывается хорошо, клики через раз, хотя в приложении все четко. Наверное,надо задержку под себя подстроить. Буду экспериментировать
Долгое нажатие отрабатывается хорошо, клики через раз, хотя в приложении все четко.То есть?
ВладимирC
10.09.2015, 12:02
То есть?
Видимо как и у меня конденсатор стоит в кнопках, для устранения дребезга, Соответственно очень короткое нажатие искажает показания, увеличил интервалы для короткого и длинного нажатий работает почти идеально. По хорошему надо добраться до кнопок и найти этот зловредный кондер.
Видимо как и у меня конденсатор стоит в кнопках, для устранения дребезга, Соответственно очень короткое нажатие искажает показания, увеличил интервалы для короткого и длинного нажатий работает почти идеально. По хорошему надо добраться до кнопок и найти этот зловредный кондер.В таком случае можно попробовать убрать программный антидребезг.
ВладимирC
10.09.2015, 12:41
В таком случае можно попробовать убрать программный антидребезг.
В смысле убрать задержку в 50мс? Если я правильно понял - то не поможет, мне наоборот пришлось увеличить ее, иначе при коротком нажатии выдается значение больше положенного.
maxymike
10.09.2015, 14:11
У меня в приложении кнопки отзываются четко,дребезг +-1, так что руль в порядке. Но всплывающие сообщения в приложении при нажатии показывают в 80% не клик, а релиз. Холд показывает правильно. Буду пилить скетч.
ВладимирC
10.09.2015, 15:11
+-1 - это не дребезг. Могу только предположить, что нажатия слишком короткие (меньше 50мс) и тогда скетч адекватно их воспринимает как релиз и не воспринимает как клик. Попробуйте либо чуть дольше удерживать кнопку при коротком нажатии, либо изменить 50 на меньшую величину if(data<=499 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800)
mr_nixon
10.09.2015, 16:07
error
mr_nixon
10.09.2015, 16:32
error
maxymike
12.09.2015, 02:18
Так и не получилось победить этот сплошной релиз. Задержку прибавлял-убавлял. Убавил до 50 мс холд и смирился с 6-ю кнопками. Все четко
Так и не получилось победить этот сплошной релиз. Задержку прибавлял-убавлял. Убавил до 50 мс холд и смирился с 6-ю кнопками. Все четкоВы что убавляли, это?
if(data<=499 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800)
{
flag = 2;
if(millis()-eventTime <= 60) data1 = data;
}
maxymike
14.09.2015, 14:01
Да,тут
Maniac82
06.10.2015, 09:40
Я что-то не совсем понял по какому принципу распознает данное приложение нажатия кнопок!
По появлению в Serial команд click, hold, release со значениями?
Maniac82
10.10.2015, 15:04
1. В ардуино отправляешь данные вида:
Serial.print("<data:");
Serial.print (tempa);
Serial.print("#");
Serial.print(tempb);
Serial.println(">");
Можно отправлять данные как у автора RemoteInputsMgr по отдельности, но так, как мне кажется, немного сложнее в их отлавливании таскером. Но в некоторых случаях только такой вариант реализации возможен, например, для передачи данных температуры и реализации резистивных кнопок чтобы отсеивать информацию с кнопок.
2. На планшете в RemoteInputsMgr выбираем USB соединение и устанавливаем скорость обмена как в ардуино.
3. В таскере создаем профиль-событие-система-Intent Received. В поле действие пишем org.kangaroo.rim.action.ACTION_DATA_RECEIVE. Идем назад на вопрос - выбираем или создаем новую задачу, например, arduino.
4. В задаче:
4.1 Нажимаем плюс-переменная-установить переменную:
Имя: %имя (любое имя)
До: %org_kangaroo_rim_device_extra_args
4.2 Плюс-переменная-расчленить переменную:
Имя: имя из п.4.1
Разделитель: разделитель из строки посылаемой ардуино. В нашем случае - #
4.3 Ecли данные из ардуино посылаем по отдельности, то в задаче нужно отслеживать переменную %org_kangaroo_rim_device_extra_command. Аналогично п.4.1 читаем ее. Например, переменной %Com присваиваем ее значение и сравниваем, например, с "tempa". Если %Com=tempa, то выполняем какие-то действия с данными %org_kangaroo_rim_device_extra_args.
Как писал ранее, пофиль будет отрабатывать при каждом приеме данных из ардуино.
5. Открываем Overlas-плюс-название профиля-add-виджет-zooper-виджет нужного размера-назад и нажать на имени созданного виджета, чтобы OFF поменялось на ON. Выходим из программы. На экране тапаем по виджету, открывается редактор. Создаем что нужно. В поле дополнительные параметры выбираем таскер и пишем #Txxx#, Ok. XXX - имя переменной. Выходим из редактора. В overlays отключаем виджет. При необходимости там же в настройках отключаем возможность реакции при нажатии на него.
6. В таскере в ранее созданной задаче.
Плюс-плагин-zooper-конфигурация(карандаш):
ZW переменная: переменная из редактора zooper (XXX)
ZW текст: имя из п.4.1 Если данные из ардуино посылаются все сразу, то к имени нужно дописать порядковый номер передаваемых данных (1,2,...). Их можно посмотреть во вкладке VARS.
Сохранить.
7. Создаем новую задачу, например Overlays on.
Плюс-плагин-overlays-конфигурация(карандаш)-созданный виджет-вкл.
8. Запускаем задачу Overlays on и в виджете должна отображаться информация.
Ничего понять не могу!
Пишу чисто для примера в порт:
serial.println("<temp:25>")
Через каждую секунду.
Программа сама отрбражает что пришло, но Таскер никак не хочет снимать значение в переменную! Хотя интент вроде принимает, так как список переменных мигает каждую секунду, но в значениях сами имена переменных!
TempRead (9)
A1: Установить перем. [ Имя:%Temp До:%org.kangaroo.rim.device.EXTRA_ARGS Вычислить матем. выраж.:Выключить Добавить:Выключить ]
Явно Где-то косячу наверное, но где?
Maniac82
10.10.2015, 16:46
Третий пункт сделал?
Да конечно.
Внешний доступ тоже включил.
Профиль: Intent (8)
Событие: Intent Received [ Действие:org.kangaroo.rim.action.ACTION_DATA_RECEI VE Cat:None Cat:None Scheme:* Mime Type:* ]
Начальная: TempRead (9)
A1: Установить перем. [ Имя:%Temp До:%org.kangaroo.rim.device.EXTRA_ARGS Вычислить матем. выраж.:Выключить Добавить:Выключить ]
RabinoVich
10.10.2015, 17:11
Автор Remote steering wheel control, похоже, тоже русскоговорящий, интересно здесь обитает он?
Maniac82
10.10.2015, 19:45
Уже все что можно перепробовал... Переменные не меняются. Такое ощущение, что их нет, хотя сам интент, что данные приняты отрабатывает. Но в переменные заносится имя переменной и все.
Попробовал и маленькие и большие буквы...
Maniac82
10.10.2015, 20:01
Причем самое интересное, что виджет из первого поста работает! То есть именно Таскер не видит переменные...
Отписался на xda как смог :) надеюсь поймет автор проги :)
Maniac82, а таскер и профиль в нем включен?
Maniac82
11.10.2015, 04:03
Maniac82, а таскер и профиль в нем включен?
конечно.я же говорю саму обработку интента таскер видит.
Maniac82
11.10.2015, 06:09
А экспортируйте кто-нибудь свой профиль в .xml с таскера в виде файла, и залейте сюда.
Попробую добавить
А экспортируйте кто-нибудь свой профиль в .xml с таскера в виде файла, и залейте сюда.
Попробую добавитьОпробуйте.
Maniac82
11.10.2015, 11:03
Спасибо! Работает! И сразу ясно стало в чем отличие!
У меня переменная через точки, а тут через подчеркивание!
Довольно странно, ведь сам автор через точки пишет!
А в примере если приглядеться тоже через полчеркивание!
Maniac82
11.10.2015, 16:56
А как можно наоборот - данные в Arduino передавать?? При USB-подключении?
Вроде прога поддерживает, только сообразить не могу пока - не сталкивался с этим еще..
added support recive data from external apps for sending to device
action: org.kangaroo.rim.action.ACTION_DATA_SEND
exrta: org.kangaroo.rim.device.EXTRA_COMMAND, org.kangaroo.rim.device.EXTRA_ARGS
data format that will be sent to device "<extra_command:extra_args>"
Maniac82
14.10.2015, 21:20
Пока не могу осилить отправку команд на ардуино хоть через чего-нибудь. Может кто поможет? Ардуиной научился распознавать команды вида <команда:аргумент> функцией sscanf, отправленной в сериалпорт.
То есть если на компе в порт пишу <13:on> то команда распознается, обрабатывается, зажигается диод встроенный.
Помогите отправить подобную команду <13:on> с помощью вышеуказанного интента проги Remote inputs manager. Либо другим способом.
Наверняка же уже кто-то разобрался?
Я, пытаюсь создавать интент этот, но в порт вообще ничего не отправляется.
Плохо ,что сама программа слишком медленно производит опрос ардуино, примерно раз в пол секунды. И слишком короткие данные не с первого раза обрабатываются...
Плохо ,что сама программа слишком медленно производит опрос ардуино, примерно раз в пол секунды. И слишком короткие данные не с первого раза обрабатываются...Вы о чем? Программа отрабатывает короткие нажатия мгновенно, а удержание как установленной в скетче.
Вы о чем? Программа отрабатывает короткие нажатия мгновенно, а удержание как установленной в скетче.
Ну не знаю. У меня кнопка отрабатывается примерно за 0,4 - 0,5 сек ... То есть если кнопка нажата меньше этого времени ,то может и не удивить.Хотя данные по монитору приходят пару десятков раз в секунду. Но если я подключаю просто как usb hid key ,отрабатывает мгновенно.
Ну не знаю. У меня кнопка отрабатывается примерно за 0,4 - 0,5 сек ... То есть если кнопка нажата меньше этого времени ,то может и не удивить.Хотя данные по монитору приходят пару десятков раз в секунду. Но если я подключаю просто как usb hid key ,отрабатывает мгновенно.Какой скетч используете?
Какой скетч используете? Аля сборная солянка... Я сам пишу скетчи под ардуино,хотя больше предпочитаю писать на чистом си для авр,арм контроллеров. И дело здесь не в скетче. Так как голый скетч,который здесь залит в примере ,программа ведет себя так же. яж писал ,ардуино отправляет в порт данные около трех десятков раз в секунду. Но судя что я вижу, программа опрашивает или обрабатывает (исходников нету по этому не знаку как работает) примерно пару раз в секунду... Соответственно на команды малой длительности она не всегда успевает отрабатывать,она их просто не видит, что для меня не есть хорошо...
P.S. У вас какое минимальное по времени касание отрабатывает ?
P.S. У вас какое минимальное по времени касание отрабатывает ?Этот тестовый скетч у меня прибавляет, а потом убавляет громкость на 10 делений в секунду, то есть минимальное касание 0,1 секунды, меньше не пробовал.
void setup()
{
Serial.begin(115200);
}
void loop()
{
delay(5000);
for (int i=0; i <= 10; i++){
Serial.print("<click:50>");
delay(100);
}
delay(2000);
for (int i=0; i <= 10; i++){
Serial.print("<click:60>");
delay(100);
}
}
Время немного появилось и нашлось. Датчик температуры тупил... И все равно хоть сейчас и довольно таки быстро,но есть ощущение ,что программа проверяет раз "надцать"посылку в порт и только потом выполняет... Исходничик бы посмотреть...
Единственный момент,который для меня не совсем понятно ,почему программа вылетает с ошибкой ,когда прокручиваю список приложений для запуска,примерно где то в середине списка.
А как можно наоборот - данные в Arduino передавать?? При USB-подключении?
Вроде прога поддерживает, только сообразить не могу пока - не сталкивался с этим еще..
added support recive data from external apps for sending to device
action: org.kangaroo.rim.action.ACTION_DATA_SEND
exrta: org.kangaroo.rim.device.EXTRA_COMMAND, org.kangaroo.rim.device.EXTRA_ARGS
data format that will be sent to device "<extra_command:extra_args>"
+1 тоже интересует. Пока сам не разбирался времени не хватает ,может кто пробовал ?
Кто в теме, подскажите, такая проблемка.
кЕтай Ардуино Уно + Bluetooth-модуль HC-06 + RemoteInputsMgr 1.3.2 + виджеты из шапки - все работает, температура с двух датчиков отображается. Хочу убрать Bluetooth-модуль, и подключить ардуино к планшету по usb. Убираю, подключаю, ничего не работает (в RemoteInputsMgr ставлю подключение по usb). Показатели с датчиков не идут. Как настроить? В чем проблема?
p.s. в ардуино полный нуб, если можно подробно с решением
Кто в теме, подскажите, такая проблемка.
кЕтай Ардуино Уно + Bluetooth-модуль HC-06 + RemoteInputsMgr 1.3.2 + виджеты из шапки - все работает, температура с двух датчиков отображается. Хочу убрать Bluetooth-модуль, и подключить ардуино к планшету по usb. Убираю, подключаю, ничего не работает (в RemoteInputsMgr ставлю подключение по usb). Показатели с датчиков не идут. Как настроить? В чем проблема?
p.s. в ардуино полный нуб, если можно подробно с решением
А в Device %s заходили ? галочку ставили ?
ali_vlad
09.11.2015, 14:17
А, случайно, с контроллером от YAM будет работать?
А в Device %s заходили ? галочку ставили ?
Когла connection выбран bluetooth тогда в device есть выбор, ардуино, коавиатура, елм, а как только меняю на usb, в девайс выбор пропадает, там пусто, галочку негде ставить. Что я делаю не так?
Когла connection выбран bluetooth тогда в device есть выбор, ардуино, коавиатура, елм, а как только меняю на usb, в девайс выбор пропадает, там пусто, галочку негде ставить. Что я делаю не так?Какая у Вас ардуино, какой на ней драйвер UART>USB?
Какая у Вас ардуино, какой на ней драйвер UART>USB?
Китайский arduino uno r3, а вот про uart я ничего не знаю, дополнительно ничего не устанавливал. По всей видимости надо?
Когла connection выбран bluetooth тогда в device есть выбор, ардуино, коавиатура, елм, а как только меняю на usb, в девайс выбор пропадает, там пусто, галочку негде ставить. Что я делаю не так?
Такая же проблема на планшете Nexus 7 3g на wifi версии работает идеально. На 3г версии планшета заработало только на 5 дроиде, еще удалось запустить на прошивке автодроид 1.2 но с небольшим костылем (если планшет только запустился то в программе ардуина отсутствует, для этого требуется отрубить питалово и подать заного)
Китайский arduino uno r3, а вот про uart я ничего не знаю, дополнительно ничего не устанавливал. По всей видимости надо?
Нет.
Что написано на чипе в красном круге, если что то типа CH340G работать не будет, данный чип не поддерживается программой.
Нет.
Что написано на чипе в красном круге, если что то типа CH340G работать не будет, данный чип не поддерживается программой.
В данный момент посмотреть не могу, ардуино в машине, но возник вопрос, при подключении по блютус ведь эта ардуина работает с этой программой. Меняется то только тип подключения блютус на юсб
но возник вопрос, при подключении по блютус ведь эта ардуина работает с этой программой. Меняется то только тип подключения блютус на юсбCH340G (http://lmgtfy.com/?q=CH340G)
CH340G (http://lmgtfy.com/?q=CH340G)
все понял, завтра гляну
p.s. дома еще валяетcя ардуино нано, на ней именно CH340G. А что должно быть написано на чипе, чтоб все работало? Закажу конкретный ардуино, чтоб проблем не было
А что должно быть написано на чипе, чтоб все работало?FT232 (FTDI).
Так же программа нормально видит любые Leonardo и Micro.
maxymike
15.11.2015, 21:07
Не подскажете,то чего может быть аццкий разброс в цифрах при нажатии на кнопки руля? В пределах 20-ти?
FT232 (FTDI).
Так же программа нормально видит любые Leonardo и Micro.
Понял, спасибо большое, буду заказывать!
Такой подойдет? (http://ru.aliexpress.com/item/Mini-Leonardo-Pro-Micro-ATmega32U4-5V-16MHz-Module-For-Arduino-Best-Quality/32284746884.html)
Единственный момент,который для меня не совсем понятно ,почему программа вылетает с ошибкой ,когда прокручиваю список приложений для запуска,примерно где то в середине списка.
Ребята ,у кого нибудь есть такая проблема ?
Помогите с китайским arduino pro micro. Заливаю скетч. В мониторе порта все отображается нормально. Отключил-подключил ардуино, скетча нет. Монитор пустой. Заливаю так, замкнул rst на gnd, нажимаю залить, когда появляется "загружаем" размыкаю, заливка проходит успешно. В чем может быть дело?
Помогите с китайским arduino pro micro. Заливаю скетч. В мониторе порта все отображается нормально. Отключил-подключил ардуино, скетча нет. Монитор пустой. Заливаю так, замкнул rst на gnd, нажимаю залить, когда появляется "загружаем" размыкаю, заливка проходит успешно. В чем может быть дело?
там какая то хрень была с виртуальными ком портами...
fedor5800
21.01.2016, 22:26
Помогите с китайским arduino pro micro. Заливаю скетч. В мониторе порта все отображается нормально. Отключил-подключил ардуино, скетча нет. Монитор пустой. Заливаю так, замкнул rst на gnd, нажимаю залить, когда появляется "загружаем" размыкаю, заливка проходит успешно. В чем может быть дело?
А как определяете что скетча нет? А порт монитора правильно выставляете после заливки скетча, бывает он слетает, надо заново выбирать порт.
Ну и проверить ардуину, залейте скетч со светодиодом и посмотрите работает или нет?
А как определяете что скетча нет? А порт монитора правильно выставляете после заливки скетча, бывает он слетает, надо заново выбирать порт.
Ну и проверить ардуину, залейте скетч со светодиодом и посмотрите работает или нет?
скетч по отображению температуры в мониторе порта сразу после заливки показывает температуру. Отключил ардуино, закрыл программу, открыл, подключил, выбрал порт, открыл монитор порта - пусто. температура не отображается. Скетч со светодиодом точно так же, есть до вытаскивания из компьютера шнура, после нету, стирается.
скетч по отображению температуры в мониторе порта сразу после заливки показывает температуру. Отключил ардуино, закрыл программу, открыл, подключил, выбрал порт, открыл монитор порта - пусто. температура не отображается. Скетч со светодиодом точно так же, есть до вытаскивания из компьютера шнура, после нету, стирается.
портов там виртуальных несколько, для программирования и для работы разные. Смотрите в диспетчере задач номер порта.
портов там виртуальных несколько, для программирования и для работы разные. Смотрите в диспетчере задач номер порта.
в диспетчере задач в разделе "порты" только Arduino Leonardo (Com7) других нету
Есть пара вопросов можно виджет разместить внизу на панели навигации или в верху на строке состояния и можно будет его поставить только на рабочий стол чтобы его не было видно на других программах. Спасибо
Выложите исходники этого виджета
в диспетчере задач в разделе "порты" только Arduino Leonardo (Com7) других нету
ARDUINO PRO MICRO (http://forumdvrobot.ru/forum/2-111-1)
Значения через каждые 2 сек. с ардуино нано передаются по HC-05 <data:0.00#0.00#0.00#0.00#0.00#0.00#0.00#0.00#>
Хочу вывести значения выборочно прямо поверх экрана, как показано на видео https://yadi.sk/i/s7HPhTOMgrgUs
Подскажите, что нужно дальше прописать в таскере?
Serg-Zmuh
14.03.2016, 14:16
http://www.pccar.ru/showthread.php?t=21272&highlight=overlays&page=10
мне тут разжевывали :big:
ноя все равно полностью не осилил ,поэтому просто воспользовался прогой overlays ,и ей просто
выводил виджеты топикстартера
Получилось, можно посмотреть скриншоты https://cloud.mail.ru/public/MqKD/rejBHd3Aj
Благодаря оверлейс виджет отображается поверх всех программ. Можно виджет сдвинуть даже в строку статуса. Теперь у меня другая задумка, как значениями %data1 регулировать яркость экрана?
Serg-Zmuh
15.03.2016, 05:37
Получилось, можно посмотреть скриншоты https://cloud.mail.ru/public/MqKD/rejBHd3Aj
Благодаря оверлейс виджет отображается поверх всех программ. Можно виджет сдвинуть даже в строку статуса. Теперь у меня другая задумка, как значениями %data1 регулировать яркость экрана?
у тя ардуина по ЮСБ подключена ?
если так то проверь работоспособность при перезагрузке планшета и вкл.-откл. самой ардуины
ни че не сбрасывается ?
у тя ардуина по ЮСБ подключена ?
если так то проверь работоспособность при перезагрузке планшета и вкл.-откл. самой ардуины ни че не сбрасывается ?
По блютузу, у меня нано по юсб не видится. Единственная проблема, когда перезапускаю по питанию ардуино, то и блютуз соединение приходится перезапускать, а то коннектиться не хочет. Думаю это можно решить таскером.
Serg-Zmuh
15.03.2016, 08:48
да у мня тоже УНО по ВТусу сейчас подключено
сначала я по юсби делал ,но вылез косяк ,при перезагрузках ардуина монтируется с разными ID и нужно каждый раз в RemoteInputsMgr-1.3.2 выставлять новый ID :(
насколько я везде читал -это так и не победили ....
Устанавливаешь 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#
Serg-Zmuh
16.03.2016, 05:41
Устанавливаешь 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 скетча прописываешь ,короче у мня каша в голове .... ,просто не могу понять что от куда и куда идет
и как быть вот с этим советом (http://www.pccar.ru/showpost.php?p=321209&postcount=99) ?
Serg-Zmuh
16.03.2016, 20:24
Ребят помогите разобраться :blush:
вот опять появилось время повозиться с планшетом
и довести до ума "хотелки" на основе этого виджета.
пользую прошивку от PACman 5.1 которая,
таскер стоит версии 4.8u1 .
на ардуине выведено три датчика DS с пинов 9,10,11
вот скетч такой (незнаю может что подскажете где-что поправить) :
#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 вот тут (http://www.pccar.ru/showpost.php?p=321209&postcount=99)
вот хоть убей не могу понять как в таскере правильно , что именно и как
использовать из значений:
%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:
видать не кому подсказать
Эх....:dntknw:
видать не кому подсказать
Завтра выложу скетч, сегодня был тяжелый день. Почти его написал, я так понял, что у тебя стоит три датчика и у них у каждого свой порт на ардуине. Затем у тебя в сериал порт шлет последовательно переменную &outdoor, потом &indoor и &engine. Лучше сделать вывод одной строкой, как у меня например <temp:0.0#0.0#0.0> и будет у тебя три переменных &temp1, &temp2, &temp3. Меня поражает то, что эта тема посути очень актуальна, т.к на смарте или планшете погода только в интернете, но затейливых людей в этой теме единицы(
Serg-Zmuh
17.03.2016, 17:53
Завтра выложу скетч, сегодня был тяжелый день. Почти его написал, я так понял, что у тебя стоит три датчика и у них у каждого свой порт на ардуине. Затем у тебя в сериал порт шлет посдледовательно переменную outdoor, потом indoor и engine. Лучше сделать вывод одной строкой, как у меня например <temp:0.0#0.0#0.0> и будет у тебя три переменных &temp1, &temp2, &temp3.
пасиба дружище заранее :smile2:
ты все правильно понял :yes4:
vasilij_c
17.03.2016, 21:47
или разберись как работает millis()
или напиши проще:
void loop(void)
{
delay(1000);
Temp_A();
Temp_B();
Temp_C();
}
далеко он на delay уедет...
Serg-Zmuh
18.03.2016, 03:48
сразу признаюсь - в программировании я :whistle:
поэтому этот скетч не мой ,я туда тока третий датчик (ds3) сам по аналогии прописывал ,может и как-то криво :blush: на большее знаний не хватает
а так то этот скетч работает с родными виджетами топикстартера
может криво -но работает
у меня на Zooper не получается вывести ,а там через таскер надо ,и там я запутался....
Попробуй этот скетч, напиши что у тебя выводит в сериал порт
#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);
}
Serg-Zmuh
19.03.2016, 10:56
вот что выводит:
<data:29.5#0#0
,но так как датчик дома один ,я попробовал перетыкивать на другие
пины ,10 и 11
тоже норм <data:0#29.5#0 ,<data:0#0#28.0
вот что выводит:
<data:29.5#0#0
,но так как датчик дома один ,я попробовал перетыкивать на другие
пины ,10 и 11
тоже норм <data:0#29.5#0 ,<data:0#0#28.0
Значит работает. Теперь настраивай таскер на вывод всех трех переменных &data1, &data2, &data3. У тебя вывод строки заканчивается '>' ?
Serg-Zmuh
20.03.2016, 09:10
Значит работает. Теперь настраивай таскер на вывод всех трех переменных &data1, &data2, &data3. У тебя вывод строки заканчивается '>' ?
чет не выходит :no2:
не могу понять как теперь в таскере задачи построить
у меня сейчас так :
В таскере создаем профиль-событие-система-Intent Received. В поле действие пишем org.kangaroo.rim.action.ACTION_DATA_RECEIVE
Имя: %data2
До: %org_kangaroo_rim_device_extra_args
расчленить переменную %data2 #
zooper widget
#data2#=&data2
в таскере в vars пусто :dntknw:
в проге RemoteCntrl данные идут data:0#15.3#-2.2 то есть все принимается и обрабатывается - где я косячу ?
P.S. есть ньюанс - до этого я на столе подключал ардуину по usb а сейчас в машине там связь через блюпуп адаптер
Расчленить переменную имя: %data разделитель: #
Zooper Widget Pro Variable Конфигурация #Tdata1# = %data1
Zooper Widget Pro Variable Конфигурация #Tdata2# = %data2
Zooper Widget Pro Variable Конфигурация #Tdata3# = %data3
Serg-Zmuh
20.03.2016, 18:03
вроде дома на тестовой Ардуине пошло все,сам допёр :)
правда Zooper начинает тормозить когда виджеты начинаешь под себя разукрашивать.
когда один еще норм ,но когда добавляешь дальше - начинает прям в настройках лагать....,и соответственно считывание показаний тоже подтормаживает ,
но в тоже время если смотреть через Remote steering wheel control там показания не тормозят
это нормально ? не ужели может быть такая нагрузка из-за всего трех датчиков :dntknw:
У меня тоже самое, когда начинаешь редактировать виджет он может сам шрифт поменять, местоположение на экране, тупит с выводом значений. Вот если бы хозяин топика с украины поделился бы исходниками своего виджета, через месяц появилось бы здесь столько всяких виджетов заточенных под конкретные случаи..
Serg-Zmuh
21.03.2016, 03:46
я с ним переписывался года полтора назад ,щаз пороюсь вроде электронка у мня его была
Если бы он хотел, он бы мне ответил в ЛС, а так просто игнорирует.
Так ты уже внедрил ардуино-градусник в авто?
Serg-Zmuh
21.03.2016, 15:52
да в машине то планшет уже давно стоит и ардуино тоже
но у мня есть еще один Нексус для тестов и настроек :smile2:
вот только что все так же настроил в машине - не пашет че то :shok:
тут же цепляюсь по блютус к ардуино в машине другим планшетом все норм работает :wacko2:
ни фига пока понять не могу ,может с таскером там че ни так
еще разница в прошивках ,там 4.4 а тут 5.1 ,хотя обе PACman`а
надо попробовать кеш там почистить и еще таскер с зупером переставить
может поможет :acute:
У меня стоит голова newsmy nu5002s на андроиде 4.4.2, есть большое желание прикрутить ардуино-градусник, физику собрал, с софтом разобрался, буду внедрять.
Serg-Zmuh
24.03.2016, 13:25
Максимэ
только сегодня обратил внимание что виджеты автоматом на экране не обновляются :(
если зайти-выйти из Zooper то сразу происходит обновление
а потом опять тишина на экране
странно .... на втором планшете с LP -прошивкой еще не проверял
в зупере в настройках полазил ,там интервалы обновления от 30 мин.
и выше
может имеет значение как правильно прописано в зупере &data2 или %data2?
у меня прописано так :
ZW#Tdata2#
%data2
%data2. Попробуй виджет от xxoma, название переменной data. Что у тебя выведется и как часто будет менятся температура?
Serg-Zmuh
25.03.2016, 03:06
%data2. Попробуй виджет от xxoma, название переменной data. Что у тебя выведется и как часто будет менятся температура?
щаз попробую ,только что на работу пришел :whistle:
у нас щаз 9 утра
Serg-Zmuh
25.03.2016, 03:15
вот сейчас проверяю сижу ....
на нексусе с LP прошивкой норм все работает !
правда тут по USB-коннекту и Ардуино-Леонардо ...
P.S. заметил разницу - вот где норм работает там подтормаживает Зупер
а на том где не считывается - там нет тормозов :)
Serg-Zmuh
25.03.2016, 03:27
%data2. Попробуй виджет от xxoma, название переменной data. Что у тебя выведется и как часто будет менятся температура?
вывел через его виджет - результат:
все работает шустро ,выводит показания : 0#28.5#23.2
но это тут на столе ,а надо еще в машине проверить
сходил проверил ,результат:
с планшетом который в машине чет ни то ,надо перепрошить наверно
DelleTenebre
27.03.2016, 17:30
Можете попробовать Serial Manager (https://github.com/delletenebre/SerialManager). На данный момент поддерживается связь только через USB, но виджеты могут использовать входящие данные и от Remote Inputs Manager.
Serg-Zmuh
29.03.2016, 03:53
Можете попробовать Serial Manager (https://github.com/delletenebre/SerialManager). На данный момент поддерживается связь только через USB, но виджеты могут использовать входящие данные и от Remote Inputs Manager.
проверил - через Remote Inputs Manager работает :yes2:
а как на прямую настроить связь с USB подключеной Ардуиной ?
что надо прописать в настройках ключа и значение?
DelleTenebre
29.03.2016, 10:40
а как на прямую настроить связь с USB подключеной Ардуиной ?
что надо прописать в настройках ключа и значение?
Для виджетов в этом нет необходимости.
Но если Вы хотите заменить Remote Inputs Manager, то:
1) Удалите Remote Inputs Manager или очистите запуск по умолчанию в настройках приложения.
2) При подключении Arduino появится запрос на разрешение доступа - одобрите Serial Manager.
Откройте программу, понажимайте кнопки, должны появляться Toast (всплывающие) сообщения. Если их нет, в настройках включите опцию DTR (для Leonardo обязательно) и переподключите Arduino.
Если сообщения появляются, то добавьте новую команду.
Например, если при нажатии на какую-либо кнопку, Arduino присылает <click:129> ... <click:135> ... <click:122>, то:
* в поле Ключ пишем click
* в поле Значение пишем 125
* в поле Погрешноcть значения пишем 15
* и выберите желаемое действие.
Т.е. всё тоже самое что и в Remote Inputs Manager.
Для виджетов настраивать команду в программе не нужно. Например для температуры: arduino периодически присылает <temp:23.4> .. <temp:23.7> .. <temp:24.5> и т.д. Чтобы вывести данные, добавьте виджет, в настройках в поле ключ напишите temp, настройте остальное по вкусу.
Serg-Zmuh
30.03.2016, 03:20
Для виджетов в этом нет необходимости.
Но если Вы хотите заменить Remote Inputs Manager, то:
1) Удалите Remote Inputs Manager или очистите запуск по умолчанию в настройках приложения.
2) При подключении Arduino появится запрос на разрешение доступа - одобрите Serial Manager.
Откройте программу, понажимайте кнопки, должны появляться Toast (всплывающие) сообщения. Если их нет, в настройках включите опцию DTR (для Leonardo обязательно) и переподключите Arduino.
Если сообщения появляются, то добавьте новую команду.
Например, если при нажатии на какую-либо кнопку, Arduino присылает <click:129> ... <click:135> ... <click:122>, то:
* в поле Ключ пишем click
* в поле Значение пишем 125
* в поле Погрешноcть значения пишем 15
* и выберите желаемое действие.
Т.е. всё тоже самое что и в Remote Inputs Manager.
Для виджетов настраивать команду в программе не нужно. Например для температуры: arduino периодически присылает <temp:23.4> .. <temp:23.7> .. <temp:24.5> и т.д. Чтобы вывести данные, добавьте виджет, в настройках в поле ключ напишите temp, настройте остальное по вкусу.
с первыми двумя пунктами все понятно ,при подкл. выбрал Serial Manager.
понажимать кнопки - а какие кнопки понажимать ,на чем :dntknw:
уведомления выскакивать должны в окне программы или любом месте ?
включил опцию DTR (у мня Леонардо) ... по светодиодам Ардуины видно что обмен какой-то
происходит ,на экране тишина ....
использую скетч такой (http://www.pccar.ru/showpost.php?p=355452&postcount=199) физически подключено три раздельных датчика ,serial port выводит <data:25.1#23.3#-3.0>
P.S. Видишь ли ,для чего я все это пробую и переделываю :acute:
хочу добиться четко работающих датчиков с ардуино ,а не так как
сейчас ,то блюпуп-адаптер не сконнектился ,а если в RemoteInputsManager
использовать подключение по USB то при отключении хаба происходит
перемонтирование Ардуино на другой ID и надо лезьть в настройки Remote Inputs Manager
если у твой Serial Manager лишен этого недостатка ,я у себя переделаю подключение по USB вместо Блюпупа :yes2:
так и надежней и синезуб для других целей освободится :yes4:
DelleTenebre
30.03.2016, 05:57
понажимать кнопки - а какие кнопки понажимать ,на чем
Подключенные к ардуино, например на руле. Если не подключены, то не нажимать :)
уведомления выскакивать должны в окне программы или любом месте ?
В главном окне программы и при настройке команд.
Попробуйте, для чистоты экперимента, так:
void setup(){
Serial.begin(9600);
while (!Serial);
}
void loop() {
Serial.print("<data:test>");
delay(2000);
}
сейчас ,то блюпуп-адаптер не сконнектился ,а если в RemoteInputsManager
использовать подключение по USB то при отключении хаба происходит
перемонтирование Ардуино на другой ID и надо лезьть в настройки Remote Inputs Manager
У меня точно такая же проблема была с RIM. Поэтому и написал свою программу.
Serg-Zmuh
30.03.2016, 10:03
DelleTenebre
ну веригуд! ,все заработало ! :drink:
я залил предыдущий скетч (http://www.pccar.ru/showpost.php?p=355230&postcount=192)
и все пошло даже без :
* в поле Ключ пишем click
* в поле Значение пишем 125
* в поле Погрешноcть значения пишем 15
* и выберите желаемое действие.
З.Ы. вопрос - а в таскере можно теперь так же по анологии как для RIM сделать :
В таскере создаем профиль-событие-система-Intent Received. В поле действие пишем org.kangaroo.rim.action.ACTION_DATA_RECEIVE. Идем назад на вопрос - выбираем или создаем новую задачу, например, arduino.
4. В задаче:
4.1 Нажимаем плюс-переменная-установить переменную:
Имя: %имя (любое имя)
До: %org_kangaroo_rim_device_extra_args
догадываюсь что использоваться должно значение : Action: kg.delletenebre.serial.NEW_DATA ,а что где и как ....
и на это мои познания заканчиваются :blush:
еще нубский вопрос можно : а для чего можно выбирать действия ? хотя догадываюсь - это наверно если кнопки
рулевые используются :)
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 датчиков, то не будет ничего страшного если присылать их значения по отдельности, типа <temp0:23> .. <temp1:-10> .. <temp2:101> вместо <temp:23#-10#101>. Но, хозяин - барин.
а для чего можно выбирать действия ? хотя догадываюсь - это наверно если кнопки
рулевые используются
Всё верно, например, настраиваем что при нажатии кнопки, ардуино посылает <click:volumeup>, в Serial Manager мы можем назначить определённое действие когда эта команда будет распознана.
и все пошло даже без :
* в поле Ключ пишем click
* в поле Значение пишем 125
* в поле Погрешноcть значения пишем 15
* и выберите желаемое действие.
Так и должно было случиться, я просто не знал, что у Вас только датчики. Кстати, выше я эту особенность для виджетов даже подчеркнул :)
Serg-Zmuh
30.03.2016, 13:42
чет не выходит:sad2:
вот так в таскере сделал:
где косячу ? :blush:
ардуино выводит <InDoor:14.5>
DelleTenebre
30.03.2016, 15:55
Serg-Zmuh, сейчас попробовал, я неправильно посоветовал:
вместо %VALUE надо %value
вместо %KEY надо %key
Serg-Zmuh
31.03.2016, 05:00
да заработало !
копаем разбираемся дальше ....
а вот с этим скетчем :
#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:
вроде с этим (http://www.pccar.ru/showpost.php?p=355230&postcount=192) скетчем работает, но как-то со сбоями
вот мне и неймется
P.S. но ! главное что твой SerialManager работает по USB и не отваливается не при каких отключениях - ГУД !
Респект Тебе :great:
Тогда тебе надо в коде заменить на это:
Serial.print("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
Serg-Zmuh
31.03.2016, 12:55
Тогда тебе надо в коде заменить на это:
поддставил этот код
#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("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
}
картина такая:
скетч на компе работает норм ,данные теперь идут раздельно
<InDoor:14.5>
<OutDoor:0>
<Engine:0>
а как только подключаю к планшету ститывает только один-два раза <InDoor:14.5> при подключении ,а потом молчит
это видно в 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("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
delay(50);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
delay(50);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
delay(1000);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
И как Вы хотите точно? Всё раздельно как в коде выше или в виде <data:0#0#0>?
Serg-Zmuh
31.03.2016, 14:10
мне бы чтоб выводило на раздельные виджеты
Я был уверен, что не забудешь delay поставить. Должна обязательно быть пауза в 1сек, а то система будет виснуть, поэтому пишем 1000мс. delay(40) можно убрать, т.к. их добавили delay(50) в serial.print.
tempa.requestTemperatures();
tempb.requestTemperatures();
tempc.requestTemperatures();
DelleTenebre
31.03.2016, 17:35
Serg-Zmuh, только что попробовал следующее:
В качестве экономии (да и не зря же они OneWire) цепляем датчики последовательно. Картинки во вложении (резистор 4.7 кОм).
Затем скетч:
const int ONE_WIRE_BUS = 3,//Пин куда подключаем сигнальный провод
ONE_WIRE_UPDATE_SEC = 1;//Время опроса датчиков в секундах
#include <OneWire.h>
#include <DallasTemperature.h>
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("<temp" + String(index) + ":");
Serial.print(temperatureSensors.getTempCByIndex(in dex), 1);
Serial.println(">");
delay(100);//Вот тут можно чуть больше или меньше
}
В результате, в зависимости от количества датчиков, Arduino будет выводить: <temp0:22.3> .. <temp1:32.3> .. <temp2:42.3> .. <temp0:22.3> .. <temp1:32.3> и т.д.
На двух датчиках (больше у меня нет) точно работает.
Serg-Zmuh
31.03.2016, 18:49
Ребят , ну видите ли - дуб я пока что в познании Ардуины и таскера :dntknw:
зато в электрике авто уже давно работаю :yes4:
так что сильно не пинайте
DelleTenebre
с твоими предпоследними поправками с скетче:
void loop(void){
tempa.requestTemperatures();
delay(40);
tempb.requestTemperatures();
delay(40);
tempc.requestTemperatures();
delay(40);
Serial.print("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
delay(50);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
delay(50);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
delay(1000);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
с твоим виджитом все заработало четко !
убираешь датчик показывает ноль ,как и хотелось ...
по поводу применения палаллельной схемы ,да я знаю про такой способ ...
просто в машине смонтировано пока раздельно
а эксперименты провожу на другом плашете (тоже Нехус 2013)
с одним датчиком ,просто перетыкиваю его на нужные пины в ардуино
я тут просто еще параллельно через таскер захотел вывести
на Zooper или на KWGT (http://4pda.ru/forum/index.php?showtopic=623036)
С Зупером вроде уже делал ,но там тормоза после добавления 3-х
виджетов :sad2:
а в KWGT я не разобрался .
да и в таскере затуп ...
что там и как правильно переменные составить :dntknw:
все ведь зависит от того какой скетч используется
ну а в будущем еще хотел вывести виджет на бортовое напряжения- чтоб за зарядку акумов мониторить
датчик давления масла мониторить
и чтоб по порогу сигнал шел с планшета ....
вот такие мечты-желания :secret:
Автомобиль то у мня без OBD , мехеника-дизель
Serg-Zmuh
31.03.2016, 18:54
Я был уверен, что не забудешь delay поставить. Должна обязательно быть пауза в 1сек, а то система будет виснуть, поэтому пишем 1000мс. delay(40) можно убрать, т.к. их добавили delay(50) в serial.print.
tempa.requestTemperatures();
tempb.requestTemperatures();
tempc.requestTemperatures();
ну ты уже понял по ответу выше что я пока что ...мало шарю :secret:
Параллельное соединение датчиков мне кажется будет удобнее использовать в машине.
drfresh88
01.04.2016, 07:41
Всех приветствую!
Подскажите, пожалуйста, возможно ли выполнить следующее: Ардуина присылает данные <pin:1> или <pin:0>. И в зависимости от того, 0 или 1, на виджете рисуется та или иная картинка. Не хотелось бы использовать сцены таскера. Спасибо.
Serg-Zmuh
01.04.2016, 11:27
ну подскажете пожалуста что и как в таскере прописать по этому скетчу:
void loop(void){
tempa.requestTemperatures();
delay(40);
tempb.requestTemperatures();
delay(40);
tempc.requestTemperatures();
delay(40);
Serial.print("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
delay(50);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
delay(50);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
delay(1000);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
щаз у мну так :
профиль-событие-система-Intent Received :kg.delletenebre.serial.NEW_DATA
создал переменную :
%data до %value ,и %OutDoor - %value
тут вопрос :расчленять переменную надо ?
как дальше остальные значения добавить с других датчиков ?
DelleTenebre
01.04.2016, 18:29
drfresh88, с картинками хз как работать без tasker'а.
Serg-Zmuh, итак, приходят следующие данные с Arduino:
<InDoor:20>
<OutDoor:30>
<Engine:40>
Вы хотите их вывести, предположим, в Zooper Widget Pro.
Для этого в Tasker'е:
1.0 Создаём новый Profile: + > Event > System > Intent Received
1.1 В поле Action пишем kg.delletenebre.serial.NEW_DATA
1.2 Сохраняемся (нажимаем назад). При выборе задачи нажимаем на New Task
2.0 Задаём любое имя новой задачи, например, ZooperTemperatureData
2.1 Нажимаем + > Task > If
2.2 В поля Condition:
%key [Equals] InDoor
Сохраняем
2.3 Нажимаем + > Plugin > Zooper Widget Pro
2.4 Нажимаем на карандаш справа от Configuration
2.5 В поле ZW Переменная пишем indoortemp
В поле ZW Текст пишем %value
Нажимаем Сохранить
Сохраняемся (нажимаем назад)
2.6 Нажимаем + > Task > Else
2.7 Нажимаем + напротив If
2.8 В появившиеся поля пишем
%key [Equals] OutDoor
Сохраняем
2.9 Повторяем пункты 2.3, 2.4
2.10 В поле ZW Переменная пишем outdoortemp
В поле ZW Текст пишем %value
Нажимаем Сохранить
Сохраняемся (нажимаем назад)
2.11 Повторяем 2.6 - 2.10 для <Engine:40>. Соответственно в условии: %key [Equals] Engine
В ZW Переменная пишем enginetemp
2.12 Нажимаем + > Task > End If
2.13 Нажимаем назад до тех пор пока не выйдем на главный экран Android'а
3.0 Добавляем виджет Zooper желаемого размера.
3.1 Выбираем желаемый вид (пустой или встроенный шаблон)
3.2 Заходим в Макет
3.3 Вверху нажимаем (+) ADD
3.4 Выбираем модуль Текст или Текст с форматированием
3.5 В категории Текст выбираем пункт Отредактировать вручную
3.6 В верхнем (почти неприметном) поле пишем #Tindoortemp#
Сохраняемся (кнопка OK)
3.? Для остальных аналогично с пункта 3.3, можно добавить в новые виджеты или для этого же виджета создать два модуля Текст или Текст с форматированием. Соответственно в пункте 3.6 будут значения #Toutdoortemp# и #Tenginetemp#
Физика понятно, как собирается. С скетчами вроде разобрались. Теперь остается программная часть. Можно ли, как нибудь сделать виджет в виде визуального градусника "колбы" в Zooper и сделать автоматическое управление яркостью экрана в Tasker, с ардуины летят значения с фоторезистора 0-255?
DelleTenebre
02.04.2016, 15:44
... и сделать автоматическое управление яркостью экрана в Tasker, с ардуины летят значения с фоторезистора 0-255?
Предположим приходят такие данные: <brightness:125>
Создайте задачу; добавьте условие %key [equals] brightness; внутри условия Display -> Display Brightness, напротив поля Level нажмите на переплетающиеся стрелочки и введите %value.
Если пользуетесь RIM, то:
вместо %value надо %org_kangaroo_rim_device_extra_args
вместо %key надо %org_kangaroo_rim_device_extra_command
Но имейте в виду, сам Tasker предупреждает, что установив значение в 0, на некоторых устройствах полностью отключается подсветка экрана (хотя я такого эффекта не встречал).
Насчёт колбочки хз, надо подумать :hmm:
UPD. Попробуйте с колбочкой по этой инструкции (http://4pda.ru/forum/index.php?showtopic=383897&view=findpost&p=37032248) в разделе ВКЛ, ВЫКЛ WiFi с помощью изображений?
Serg-Zmuh
04.04.2016, 10:52
DelleTenebre
нифига ты расписал )
спасибо тебе! все настроил все работает ...
но... есть какой-то косяк где-то ....- это тормоза.
уже при настройке второго виджета в Зупере начались тормоза и зависоны именно в оболочке Зупера ,а на третьем виджете зупер стал останавливаться вообще :angry:
вылетела ошибка остановка trebuchet'a ...
Решил выяснить из-за чего так происходит :
тормоза появляются когда идет обмен с ардуиной , выдергиваешь USB -нет тормозов .
еще тормоза пропадают когда в таскере стопарю задачу,
и это у мня пока один датчик подключен..., с тремя наверно умрет , надо попробовать ....
Попробуй залить этот скетч и посмотри будут ли тормоза
#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(700);
Serial.print("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
tempb.requestTemperatures();
delay(700);
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
tempc.requestTemperatures();
delay(700);
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
}
Serg-Zmuh
05.04.2016, 10:29
Попробуй залить этот скетч и посмотри будут ли тормоза
#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(700);
Serial.print("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
tempb.requestTemperatures();
delay(700);
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
tempc.requestTemperatures();
delay(700);
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
}
тормозит блин также :sad2:
надо еще вместо Зупера попробовать KWGT (http://4pda.ru/forum/index.php?showtopic=623036)
с ним еще не разбирался ...
попробуй в коде delay(700); заменить на delay(2000); в трех местах.
если не поможет значит это Zooper виноват.
Serg-Zmuh
07.04.2016, 03:33
попробуй в коде delay(700); заменить на delay(2000); в трех местах.
если не поможет значит это Zooper виноват.
подтормаживает гад ,но поменьше
пойду на 4pda тама народ подастою ,на счет KWGT тыц (http://4pda.ru/forum/index.php?showtopic=623036&st=1620#entry48612458)
железо у планшета слабое, наверное
Serg-Zmuh
07.04.2016, 08:52
железо у планшета слабое, наверное
ты думаешь !? Nexus 2013 с 2-мя гигами оперы ... ну хз :blink2:
просто тут где-то узкое место я думаю есть , а вот где ?
вот взять к примеру проэкт с компкара VENATOR (http://compcar.ru/forum/showthread.php?t=9704&highlight=%EF%E0%ED%E5%EB%FC+%EF%F0%E8%E1%EE%F0%EE %E2)
уж там то не только датчики темпера :acute:
а работает и на более слабых таблетках ...
будем разбираться :smile2:
ali_vlad
07.04.2016, 12:57
Не совсем в тему, но...
Есть ли виджет, который не принимает, а отправляет данные на ардуину?
DelleTenebre
08.04.2016, 23:55
ali_vlad, попробуйте blynk (https://play.google.com/store/apps/details?id=cc.blynk)
Serg-Zmuh
09.04.2016, 20:25
DelleTenebre
а с Ардуино УНО ваш SerialManager тоже ведь должен работать ?
просто сегодня попробовал просто подключиться к УНО (в машине просто уже установлено) и в мониторе нету ничего ,хотя в лог-кете видно что считывание идет ...
может надо что-то в настройках что добавить ?
в крайнем случае я конечно Леонардо могу поставить ,но тут все таки вопрос принципа - хочу разобраться с УНО .... :yes2:
ali_vlad
09.04.2016, 20:54
ali_vlad, попробуйте blynk (https://play.google.com/store/apps/details?id=cc.blynk)
Мне нужен виджет, работающий не на приём, а на передачу.
Мне нужен виджет, работающий не на приём, а на передачу.
в видео чувак лампочкой с телефона управляет. это передача?
Работает на vBulletin® версия 3.8.4. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot