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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Софт (http://pccar.ru/forumdisplay.php?f=172)
-   -   Serial Manager - автоматизация/управление Android с помощью Arduino (http://pccar.ru/showthread.php?t=24120)

p_osipov 28.06.2016 14:21

1. правильнее Serial.println("%>")
2. Т.к. яркость в этом скетче задается в %, то как-то так:
Serial.print((int)(sens-740)/(1000-740));

lti1 28.06.2016 16:12

Тогда уж лучше так:
PHP код:

int sens 0
void setup()  

  
Serial.begin(115200); 
}  

void loop()     
{     
sens analogRead(0); 
String s "<brightness:" String((sens-740)/2.6) + "%>";
Serial.print(s);
delay(3000); 


ln не на что особо не влияет, а вот оформить в целую строку, что бы приходило единым куском без разрывов, не помешает.

DelleTenebre 28.06.2016 16:37

Цитата:

Сообщение от djdonatas
Теперь очень хотелось бы иметь возможность загружать свои иконки,т.к. ничего подходящего в шрифтах не найдено %)

Это можно: http://pccar.ru/showpost.php?p=363371&postcount=128
Как будет время сделаю более подробную инструкцию как собрать шрифт.

Цитата:

Сообщение от djdonatas
еще хотелось бы иметь простейшие операции со строками, типа hex2str, substr и тд.

В самом начале была такая мысль, но затем я думал что будет использоваться только arduino, а в своём скетче можно обработать как угодно и решил, что это излишество. В свете новых возможностей (контроллер Юры, например), конечно надо будет как-то реализовать.

Narkus 28.06.2016 17:07

Залил такой код
PHP код:

int sens 0
int light 0
void setup()    
{     
  
Serial.begin(115200); 
}   

void loop()    
{    
sens analogRead(0); 

if ((
sens 0) && (sens<740)) light 0
if ((
sens 740) && (sens<766)) light 10
if ((
sens 766) && (sens<792)) light 20
if ((
sens 792) && (sens<818)) light 30
if ((
sens 818) && (sens<844)) light 40
if ((
sens 844) && (sens<870)) light 50
if ((
sens 870) && (sens<896)) light 60
if ((
sens 896) && (sens<922)) light 70
if ((
sens 922) && (sens<948)) light 80
if ((
sens 948) && (sens<974)) light 90
if (
sens 974light 100

Serial.print("<brightness:");
Serial.print(light);
Serial.print("%>");
 
delay(300); 


Я думаю суперточность при регулировке яркости не нужна, но приложение Serial Manager ооочень меедленно реагирует: между закрытием фоторезистора (полная темнота) и изменением значения, которое приложение выводит, проходит около минуты. При этом системная яркость не регулируется. Приложение UsbTerminal выводит данные как положено быстро.

lti1 28.06.2016 18:33

Narkus, у Вас данные в приложение отправляются каждые 300 миллисекунд, зачем так часто? По факту данные нужно отправлять если изменения на датчике освещенности превысили какое-то значение, например +-10%.
Попробуйте так:
PHP код:

int sens;
int sens_save;
void setup() {
  
Serial.begin(115200);
}

void loop() {
  
sens analogRead(0);
  
sens = (sens-740)/2.6;
  if (
abs(sens_save sens) > 10) {
    
String s "<brightness:" String(sens) + "%>";
    
Serial.print(s);
    
sens_save sens;
  }



slon25 28.06.2016 20:23

Цитата:

Сообщение от YAM1966 (Сообщение 363580)
Все там приходит. Для начала появляется ли ttyACMx в /dev ?
Поставили ли галку Распознавать команду по новой... в настройках Serial Manager?

ttyACM0 в /dev появляется, но после установки serial исчезает . Галка тоже стоит.

Narkus 29.06.2016 12:15

lti1, спасибо за подсказку, немного изменил код для более простой калибровки под фоторезистор:
PHP код:

int sens 0
int sens_save
void setup() { 
  
Serial.begin(115200); 


void loop() { 
  
sens analogRead(0); 
  
sens map(sens74010000100); // для упрощения калибровки фоторезистора map(sens, нижний порог, верхний порог, 0, 100)
  
sens constrain(sens0100); // числовые показания ограничены диапазоном от 0 до 100 
  
if (abs(sens_save sens) > 10) { 
    if (
sens<10sens 0
    if (
sens>85sens 100
    
String s "<brightness:" String(sens) + "%>"
    
Serial.print(s); 
    
sens_save sens
  } 


Ардуино только начинаю изучать, узнаю много нового сейчас :rolleyes2:
Одна загвоздка осталась: мой китайский планшет регулирует яркость таким образом (Arduino nano + Serial Manager) только при выведенном на передний план ползунке регулировки яркости из настроек, в фоне значения меняются, но фактическая яркость неизменна.
И ещё вопрос: только у меня Serial Manager виснет при загрузке планшета с уже подключенной ардуиной?

djdonatas 29.06.2016 15:55

Еще идея в вишлист на будущее,не знаю, на сколько реализуема и востребована для других, но я столкнулся с тем,что мне бы не помешала:
группы виджетов
создавая несколько виджетов их можно объединить в группу.
Распишу на своем примере, есть 5 виджетов "мощности обдува кондиционера", если не использовать их как "переключатели" - то не видно,какой режим сейчас включен
если использовать по схеме вкл/выкл, то включив "мин",а потом включив "макс" - у нас получается подсвечены и мин и макс.
А в группе же,если 5 виджетов находятся внутри нее, то "включая" один - остальные визуально отключаются. по аналогии, как в дельфи была radiobuttongroup, если кто-то еще помнит %)
На данный момент решений несколько, но все они не очень.
- делать все на одном виджете и "листать" режимы, но если скажем с 3го надо попасть на 2й - надо пролистать весь "круг" до конца и начать сначала, много клацать и печку насиловать приходится %)
- делать без индикации,работает,но не наглядно =\

зы: а так-же есть возможность физически и/или визуально отключать "шестеренку" настроек на виджете? а то пальцы большие,виджеты маленькие, иногда запускаются настройки виджета вместо действия.
Спасибо

YAM1966 29.06.2016 16:07

Есть такая хрень, как GUI designer... На сколько я понял получившееся приложение коннектится по IP к порту и передает то, что нажали. Можно запустить листенер и принимать эти сообщения Serial Manager-ом...

djdonatas 29.06.2016 19:17

Цитата:

Сообщение от YAM1966 (Сообщение 363692)
Есть такая хрень, как GUI designer... На сколько я понял получившееся приложение коннектится по IP к порту и передает то, что нажали. Можно запустить листенер и принимать эти сообщения Serial Manager-ом...

насколько я вижу,для работы нужен некий iviewer, который в бесплатном варианте сильно кастрирован? Получается им надо слать команды на локалхост, а вот serial manager надо еще модифицировать,чтобы он слушал на каком-то порту соединения и выдавал уже полученную информацию в serial? Сейчас же он такого не умеет? Или есть уже какая-то софтина, которая форвардит с тцп на сериал? %)


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

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