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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Дополнительные устройства (http://pccar.ru/forumdisplay.php?f=177)
-   -   Резистивные кнопки под андроид (http://pccar.ru/showthread.php?t=18478)

takosan 25.06.2015 16:01

Всем привет! Народ ткните носом пожалуйста, где подробно описано как сделать управление музыкой на Nexus 7 2013 с рулевых кнопок. Просто начитался уже кучу вариантов, что голова кругом. Интересует простой и недорогой способ реализации.

lti1 25.06.2015 17:18

Цитата:

Сообщение от takosan (Сообщение 331379)
Всем привет! Народ ткните носом пожалуйста, где подробно описано как сделать управление музыкой на Nexus 7 2013 с рулевых кнопок. Просто начитался уже кучу вариантов, что голова кругом. Интересует простой и недорогой способ реализации.

Вот пара вариантов:
http://pccar.ru/showthread.php?p=319975#post319975
http://pccar.ru/showthread.php?t=20460

takosan 25.06.2015 20:40

Цитата:

Сообщение от lti1 (Сообщение 331385)

второй вариант Мне подходит, но как говорит сам продавец, это пушка по воробьям)))

Забыл сказать, что штатную магнитолу я хочу оставить и мне необходимо будет реализовать переключение управления С планшета на на штатное ГУ. Может есть еще варианты на Вашей памяти?

slon25 26.06.2015 10:57

Цитата:

Сообщение от takosan (Сообщение 331401)
второй вариант Мне подходит, но как говорит сам продавец, это пушка по воробьям)))

Забыл сказать, что штатную магнитолу я хочу оставить и мне необходимо будет реализовать переключение управления С планшета на на штатное ГУ. Может есть еще варианты на Вашей памяти?

http://pccar.ru/showthread.php?t=20460

takosan 26.06.2015 11:53

Цитата:

Сообщение от slon25 (Сообщение 331428)

Спасибо, но это как раз и есть второй вариант, который предложили мне выше

nikopol70 27.06.2015 23:28

Цитата:

Сообщение от armlive (Сообщение 331181)
Используй Poweramp и будет возможность переключать папки
Было:
PHP код:

 if(digitalRead(ACCPin) && stateACC && millis () -offOFFKIS)
    {
    
digitalWrite(pinKIS1LOW);
    
digitalWrite(pinIsoAmpLOW);
    
digitalWrite(pinRearCamLOW);
    
relestate1 0;
    
millisold millis();
    
Serial.end();
    
Serial1.end();
    
delay(100);
    
sleepNow(); 
    } 

Стало:
PHP код:

 if(digitalRead(ACCPin) && stateACC && millis () -offOFFKIS)
    {
    
Remote.pause();// нажимаем пузу!
    
Remote.clear();
    
digitalWrite(pinKIS1LOW);
    
digitalWrite(pinIsoAmpLOW);
    
digitalWrite(pinRearCamLOW);
    
relestate1 0;
    
millisold millis();
    
Serial.end();
    
Serial1.end();
    
delay(100);
    
sleepNow(); 
    } 


А после пробуждения почему плей не добавили?
Я спрашиваю не потому что как это сделать, а просто интересно, ведь наверно делали но не стали использовать?

Попробовал, не отрабатывает паузу....

И еще момент, после сна планшет играет не с места паузы, а с начала трека. Есть способ сделать так что бы играл с места на котором уснул?

Chubaka885 29.06.2015 21:50

Цитата:

Сообщение от nikopol70 (Сообщение 331532)
Попробовал, не отрабатывает паузу....
И еще момент, после сна планшет играет не с места паузы, а с начала трека. Есть способ сделать так что бы играл с места на котором уснул?

Странно, должен отрабатывать.
Питание хаба отключается. Если да, то скорее всего не получится что бы играл с места на котором уснул.

nikopol70 29.06.2015 23:25

Цитата:

Сообщение от Chubaka885 (Сообщение 331623)
Странно, должен отрабатывать.
Питание хаба отключается. Если да, то скорее всего не получится что бы играл с места на котором уснул.

Ну конечно отключается, через 10 сек после пропадания асс, схема то Ваша и скетч за основу тоже Ваш взял, только кнопки на руле сделаны с утилитой стрит контроль.
Может потому и не виден эффект от паузы...
Хотя логику такую пользую уже почти год, последовательность ухода в сон и выхода, и помнится мне был период когда после сна начинало играть с места где нажата пауза.
Но помнится мне что тогда был сток 4.4.4, стик моунт про. А щас автодроид

Ajlewka 30.06.2015 16:37

Блин, мужики, не понимаю. Все меня эти сраные скачки номиналов достали. Уже и отдельным блоком заппитал, и леонардо настроил. Перед блоком питания кондер стоит. Может стоит для сглаживания кондер и на выходе блока питания поставить? Поможет от Разброса номиналов резистивных? Хочу сказать что мерил тестером и напряжение стабильно держится ни десятой не просаживается

lti1 30.06.2015 19:59

Цитата:

Сообщение от Ajlewka (Сообщение 331666)
Блин, мужики, не понимаю. Все меня эти сраные скачки номиналов достали. Уже и отдельным блоком заппитал, и леонардо настроил. Перед блоком питания кондер стоит. Может стоит для сглаживания кондер и на выходе блока питания поставить? Поможет от Разброса номиналов резистивных? Хочу сказать что мерил тестером и напряжение стабильно держится ни десятой не просаживается

Плюсовой провод в USB кабеле разорвали? Рулевые кнопки подключены только к ардуино или к примеру параллельно магнитоле?

Chubaka885 30.06.2015 22:54

Цитата:

Сообщение от nikopol70 (Сообщение 331629)
Ну конечно отключается, через 10 сек после пропадания асс, схема то Ваша и скетч за основу тоже Ваш взял, только кнопки на руле сделаны с утилитой стрит контроль.
Может потому и не виден эффект от паузы...

Скетч бы посмотреть. Он у тебя залился без проблем. Библиотеки USBAPI.h, HID.cpp менял?

Цитата:

Сообщение от Ajlewka (Сообщение 331666)
Блин, мужики, не понимаю. Все меня эти сраные скачки номиналов достали. Уже и отдельным блоком заппитал, и леонардо настроил. Перед блоком питания кондер стоит. Может стоит для сглаживания кондер и на выходе блока питания поставить? Поможет от Разброса номиналов резистивных? Хочу сказать что мерил тестером и напряжение стабильно держится ни десятой не просаживается

Питание ардуино сделали к выводу "5В", как показывали вам раннее?

nikopol70 30.06.2015 23:06

Цитата:

Сообщение от Chubaka885 (Сообщение 331699)
Скетч бы посмотреть. Он у тебя залился без проблем. Библиотеки USBAPI.h, HID.cpp менял?

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

скетч вот
PHP код:

#include <avr/sleep.h>
#include <avr/power.h>

int ACCPin 2// Пин АСС
int sleepStatus 0// Переменная для хранения статуса (спим, проснулись) - не используется в коде

#define pinKIS1 7 // питание HUB KIS
#define pinIsoAmp 6 // питание ISOAmp
#define relePinTablet 10 // OTG + датчик холла
#define relePinAmp 9 // remote Усилителя, Антены
#define pinRearCam 5 // питание камеры заднего хода
#define ONKIS 100 // время включения KIS, isoAmp
#define ONTablet 2000 // время включения планшета
#define ONAmp 4000 // время включения Усилителя, Антены RemoteAmp
#define OFFKIS 10000 // время выключения KIS
#define OFFTablet 5000 // время выключения планшета
#define OFFAmp 4000 // время выключения Усилителя, Антены

unsigned long durationmillisoldoff 0;
boolean stateACCrelestate1relestate2relestate3 0;

int analogPin=A0//пин для резистивных кнопок
int data;  
int data1 0;  
int flag 0;  
unsigned long eventTime 0


void wakeUpNow()                 // Прерывание сработает после пробуждения
{
  if (
sleepStatus)               // Если мы спали,
  
{
    
sleep_disable();             // то первое, что нужно сделать после просыпания - выключить спящий режим
    
sleepStatus 0;             // В переменную заносим статус бодрствования
    
detachInterrupt(1);          // Выключаем прерывание - при нормальном режиме wakeUpNow() не будет вызываться
  
}
}


void setup()
{
  
pinMode(ACCPinINPUT);
  
attachInterrupt(1wakeUpNowFALLING);    // Используем прерывание 1 (pin 2) для выполнения функции wakeUpNow
  
pinMode(pinKIS1OUTPUT); 
  
pinMode(pinIsoAmpOUTPUT); 
  
pinMode(relePinTabletOUTPUT);
  
pinMode(relePinAmpOUTPUT);
  
pinMode(pinRearCamOUTPUT);
  
Serial.begin(9600);  
}

void sleepNow()                          // Функция увода ардуины в спячку.
{
  
set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // Здесь устанавливается режим сна
  
sleep_enable();                        // Включаем sleep-бит в регистре mcucr. Теперь возможен слип 
      
  
attachInterrupt(1wakeUpNowFALLING);   // Используем прерывание 1 (pin 2) для выполнения функции wakeUpNow при появлении низкого уровня на пине 2
  
  
sleepStatus 1;                       // В переменную заносим статус сна
  
sleep_mode();                          // Здесь устройство перейдет в режим сна!!!
  //-------------------------ПОСЛЕ ПРОСЫПАНИЯ ВЫПОЛНЕНИЕ КОДА ПРОДОЛЖИТСЯ ОТСЮДА!!!--------------------------//
}


void loop()
{
  
Power();
  
Knopki();
  
delay(5);
}

void Power()
 {
  if (!
digitalRead(ACCPin)&&stateACC
    {
    
stateACC=0;
    
duration millis();
    }
  if (
digitalRead(ACCPin)&&!stateACC
    {
    
stateACC=1;
    
off millis();
    }
  if(!
digitalRead(ACCPin) && !stateACC && millis ()-duration ONKIS)
    {
    
digitalWrite(pinKIS1HIGH);
    
digitalWrite(pinIsoAmpHIGH);
    
relestate1 1;
    
millisold millis();
    }
  if(!
digitalRead(ACCPin) && !stateACC &&  millis ()-duration ONTablet)
    {
    
digitalWrite(relePinTabletHIGH);
    
relestate2 1;
    
millisold millis();
    }
  if(!
digitalRead(ACCPin) && !stateACC &&  millis ()-duration ONAmp)
    {
    
digitalWrite(relePinAmpHIGH);
    
relestate3 1;
    
millisold millis();
    }
  if(
digitalRead(ACCPin) && stateACC && millis () -offOFFKIS)
    {
    
Remote.pause();// нажимаем пузу!
    
Remote.clear(); 
    
digitalWrite(pinKIS1LOW);
    
digitalWrite(pinIsoAmpLOW);
    
digitalWrite(pinRearCamLOW);
    
relestate1 0;
    
millisold millis();
    
Serial.end();
    
delay(100);
    
sleepNow(); 
    } 
  if(
digitalRead(ACCPin) && stateACC &&  millis ()-off OFFTablet)
    {
    
digitalWrite(relePinTabletLOW);
    
relestate2 0;
    
millisold millis();     
    }
  if(
digitalRead(ACCPin) && stateACC &&  millis ()-off OFFAmp)
    {
    
digitalWrite(relePinAmpLOW);
    
relestate3 0;
    
millisold millis();     
    }  
}

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

if(
data>=950 && data1 != && 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 != && millis()-eventTime>=50 && millis()-eventTime<=800)  
 {  
  
flag 2;  
  if(
millis()-eventTime <= 60data1 data;  
 }  

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

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



Ajlewka 01.07.2015 08:00

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

Сообщение от lti1 (Сообщение 331682)
Плюсовой провод в USB кабеле разорвали? Рулевые кнопки подключены только к ардуино или к примеру параллельно магнитоле?

Вот такая на данный момент схема.

Я так понимаю это действительно из за плохой фильтрации. Один вариант решения я знаю - больше разницу в номиналах резисторов на руле сделать. А вариант с кондером поможет или нет? Или может еще какие варианты есть

lti1 01.07.2015 11:11

Цитата:

Сообщение от Ajlewka (Сообщение 331717)
Вот такая на данный момент схема.

Я так понимаю это действительно из за плохой фильтрации. Один вариант решения я знаю - больше разницу в номиналах резисторов на руле сделать. А вариант с кондером поможет или нет? Или может еще какие варианты есть

Сопротивление от +5 к A0 забыли указать, или его нет?

Chubaka885 01.07.2015 18:43

Цитата:

Сообщение от nikopol70 (Сообщение 331700)
бибилотеки менял, залилось без проблем, прежде чем заливать изучил и отштудировал тему :tease:

Ступил я немного. Не успевает он наверное паузу принять. Вот так попробуй.
PHP код:

#include <avr/sleep.h>
#include <avr/power.h>

int ACCPin 2// Пин АСС
int sleepStatus 0// Переменная для хранения статуса (спим, проснулись) - не используется в коде

#define pinKIS1 7 // питание HUB KIS
#define pinIsoAmp 6 // питание ISOAmp
#define relePinTablet 10 // OTG + датчик холла
#define relePinAmp 9 // remote Усилителя, Антены
#define pinRearCam 5 // питание камеры заднего хода
#define ONKIS 100 // время включения KIS, isoAmp
#define ONTablet 2000 // время включения планшета
#define ONAmp 4000 // время включения Усилителя, Антены RemoteAmp
#define OFFKIS 10000 // время выключения KIS
#define OFFTablet 5000 // время выключения планшета
#define OFFAmp 4000 // время выключения Усилителя, Антены

unsigned long durationmillisoldoff 0;
boolean stateACCrelestate1relestate2relestate3 0;

int analogPin=A0//пин для резистивных кнопок
int data;  
int data1 0;  
int flag 0;  
unsigned long eventTime 0


void wakeUpNow()                 // Прерывание сработает после пробуждения
{
  if (
sleepStatus)               // Если мы спали,
  
{
    
sleep_disable();             // то первое, что нужно сделать после просыпания - выключить спящий режим
    
sleepStatus 0;             // В переменную заносим статус бодрствования
    
detachInterrupt(1);          // Выключаем прерывание - при нормальном режиме wakeUpNow() не будет вызываться
  
}
}


void setup()
{
  
pinMode(ACCPinINPUT);
  
attachInterrupt(1wakeUpNowFALLING);    // Используем прерывание 1 (pin 2) для выполнения функции wakeUpNow
  
pinMode(pinKIS1OUTPUT); 
  
pinMode(pinIsoAmpOUTPUT); 
  
pinMode(relePinTabletOUTPUT);
  
pinMode(relePinAmpOUTPUT);
  
pinMode(pinRearCamOUTPUT);
  
Serial.begin(9600);  
}

void sleepNow()                          // Функция увода ардуины в спячку.
{
  
set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // Здесь устанавливается режим сна
  
sleep_enable();                        // Включаем sleep-бит в регистре mcucr. Теперь возможен слип 
      
  
attachInterrupt(1wakeUpNowFALLING);   // Используем прерывание 1 (pin 2) для выполнения функции wakeUpNow при появлении низкого уровня на пине 2
  
  
sleepStatus 1;                       // В переменную заносим статус сна
  
sleep_mode();                          // Здесь устройство перейдет в режим сна!!!
  //-------------------------ПОСЛЕ ПРОСЫПАНИЯ ВЫПОЛНЕНИЕ КОДА ПРОДОЛЖИТСЯ ОТСЮДА!!!--------------------------//
}


void loop()
{
  
Power();
  
Knopki();
  
delay(5);
}

void Power()
 {
  if (!
digitalRead(ACCPin)&&stateACC
    {
    
stateACC=0;
    
duration millis();
    }
  if (
digitalRead(ACCPin)&&!stateACC
    {
    
stateACC=1;
    
off millis();
    }
  if(!
digitalRead(ACCPin) && !stateACC && millis ()-duration ONKIS)
    {
    
digitalWrite(pinKIS1HIGH);
    
digitalWrite(pinIsoAmpHIGH);
    
relestate1 1;
    
millisold millis();
    }
  if(!
digitalRead(ACCPin) && !stateACC &&  millis ()-duration ONTablet)
    {
    
digitalWrite(relePinTabletHIGH);
    
relestate2 1;
    
millisold millis();
    }
  if(!
digitalRead(ACCPin) && !stateACC &&  millis ()-duration ONAmp)
    {
    
digitalWrite(relePinAmpHIGH);
    
relestate3 1;
    
millisold millis();
    }
  if(
digitalRead(ACCPin) && stateACC && millis () -offOFFKIS)
    {
    
digitalWrite(pinKIS1LOW);
    
digitalWrite(pinIsoAmpLOW);
    
digitalWrite(pinRearCamLOW);
    
relestate1 0;
    
millisold millis();
    
Serial.end();
    
delay(100);
    
sleepNow(); 
    } 
  if(
digitalRead(ACCPin) && stateACC &&  millis ()-off OFFTablet)
    {
    
digitalWrite(relePinTabletLOW);
    
relestate2 0;
    
millisold millis();     
    }
  if(
digitalRead(ACCPin) && stateACC &&  millis ()-off OFFAmp)
    {
    
Remote.pause();// нажимаем пузу!
    
Remote.clear();
    
digitalWrite(relePinAmpLOW);
    
relestate3 0;
    
millisold millis();     
    }  
}

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

if(
data>=950 && data1 != && 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 != && millis()-eventTime>=50 && millis()-eventTime<=800)  
 {  
  
flag 2;  
  if(
millis()-eventTime <= 60data1 data;  
 }  

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

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



Ajlewka 01.07.2015 19:15

Цитата:

Сообщение от lti1 (Сообщение 331730)
Сопротивление от +5 к A0 забыли указать, или его нет?

да есть оно конечно, больше чем сопротивление кнопок.

Ajlewka 02.07.2015 16:36

Цитата:

Сообщение от Chubaka885 (Сообщение 331699)
Питание ардуино сделали к выводу "5В", как показывали вам раннее?

Делал. Не помогает

armlive 02.07.2015 18:41

Цитата:

Сообщение от Ajlewka (Сообщение 331666)
Блин, мужики, не понимаю. Все меня эти сраные скачки номиналов достали. Уже и отдельным блоком заппитал, и леонардо настроил. Перед блоком питания кондер стоит. Может стоит для сглаживания кондер и на выходе блока питания поставить? Поможет от Разброса номиналов резистивных? Хочу сказать что мерил тестером и напряжение стабильно держится ни десятой не просаживается

У меня такая же фигня, на выходе кондер обязателен. Особенно когда заведешь машину, разброс приличный. питается отдельно, но парадокс, если в хаб вставить еще оборудование, с приличным потреблением (к примеру SDR) то значения становятся другими. Спрашивается как???? Ведь хаб питается от одного преобразователя, а Леонардо от другого.

Ajlewka 03.07.2015 16:24

Цитата:

Сообщение от armlive (Сообщение 331880)
У меня такая же фигня, на выходе кондер обязателен. Особенно когда заведешь машину, разброс приличный. питается отдельно, но парадокс, если в хаб вставить еще оборудование, с приличным потреблением (к примеру SDR) то значения становятся другими. Спрашивается как???? Ведь хаб питается от одного преобразователя, а Леонардо от другого.

А есть стабилизаторы же общие, которые прям к аккумулятору ставятся. Может такая штука поможет? Ну или номиналы в руле менять... Другого выхода не вижу

armlive 03.07.2015 17:28

Цитата:

Сообщение от Ajlewka (Сообщение 331934)
А есть стабилизаторы же общие, которые прям к аккумулятору ставятся. Может такая штука поможет? Ну или номиналы в руле менять... Другого выхода не вижу

А ты проведи чисто эксперимент, возьми леонардо, подключи к ноутбуку и пусть питается от усб. Отдельно возьми два провода с кнопок и протестируй.

Блин , был-бы осциллограф, легче бы было найти причину

Ajlewka 04.07.2015 06:50

Цитата:

Сообщение от armlive (Сообщение 331937)
А ты проведи чисто эксперимент, возьми леонардо, подключи к ноутбуку и пусть питается от усб. Отдельно возьми два провода с кнопок и протестируй.

Блин , был-бы осциллограф, легче бы было найти причину

Я же так настраивал ее сначала. Значения идут пуля в пулю ровненькие. +-1 оооченеь редко. А как в машине питаю даже с заглушеным двигателем такая вот беда

Ajlewka 15.07.2015 13:43

Всем спасибо за советы! С разбросом разобрался путем полного переделывания схемы питания, добавлением еще одного преобразователя для хаба.

Maniac82 17.07.2015 19:55

А подскажите как реализовать следующее:
На руле nissan murano 6 кнопок. Две хочу оставить на управление штатной магнитолой (громкость), а остальные на управление планшетом (включение выключение планшета, перемотка, и т.д.)
Я так понимаю провода с руля отсекаем из магнитолы, вставляем на вход Адруино и с него как-то надо имитировать нужное сопротивление в магнитолу??
Может есть где готовые решения с нужным кодом под Adruino leonardo?

Anzic 18.07.2015 22:14

Вложений: 1
Может кто подсказать. Есть на руках вот такой адаптер. Есть контроллер от YAM. Есть инструкция к адаптеру, которая объясняет как сделать вывод джека, или провода под разный тип магнитол. Основной вопрос в том, какой из вариантов будет выдавать сигнал как с резестивных кнопок??

klimsky 21.07.2015 10:28

Цитата:

Сообщение от Maniac82 (Сообщение 333080)
А подскажите как реализовать следующее:
На руле nissan murano 6 кнопок. Две хочу оставить на управление штатной магнитолой (громкость), а остальные на управление планшетом (включение выключение планшета, перемотка, и т.д.)
Я так понимаю провода с руля отсекаем из магнитолы, вставляем на вход Адруино и с него как-то надо имитировать нужное сопротивление в магнитолу??
Может есть где готовые решения с нужным кодом под Adruino leonardo?

я от электроники далек (уровень знаний - лошара обыкновенный) но может мой совет поможет. я реализовал нажатие кнопок с ардуино на микросхеме К561КТ3, которая тут еже упоминалась. кстати, стоила 3 рубля в магазине радиотоваров.
управляя с ардуино, замыкаем контакт, сопротивление которого нужно будет подобрать равным сопротивлению кнопки
схема взята здесь: http://forum.xda-developers.com/show....php?t=2635159
пробный скетч написан на коленке в качестве примера, синтаксис не проверял. при нажатии на кнопки будут замыкаться контакты, при отпускании размыкаться

PHP код:

#include <Button.h>

#define pinButton1 7 // 7й пин - управляющий ключом 1 К561КТ3
#define pinButton2 8 // 8й пин - управляющий ключом 2 К561КТ3

const unsigned int DPin 13;
const 
unsigned int APin A0;  //аналоговые кнопки

Button button Button(DPinHIGH);
unsigned int value 0;
boolean holding false;

Boolean Button1IsPressed false;
Boolean Button2IsPressed false;

void setup()
{
  
Serial.begin(9600);
  
button.setDebounceDelay(10);
  
button.setHoldDelay(800);
}

void loop()
{
  
button.listen();

  if (
button.onPress()) {
    
value analogRead(APin);
    
Serial.print("<click:");
    
Serial.print(value); 
    
Serial.print(">");  
    
    if (
value>=495 && value<=505 && Button1IsPressed=false) {   //значение при нажатии кнопки = 500, с учетом дребезга кнопок +-5
       
digitalWrite(pinButton1HIGH);          //включаем ключ 1 
       
Button1IsPressed true;                 //запоминаем что включен ключ 1
    
}

    if (
value>=595 && value<=605  && Button2IsPressed=false) {   //значение при нажатии кнопки = 600, с учетом дребезга кнопок +-5
       
digitalWrite(pinButton2HIGH);         //включаем ключ 2 
       
Button2IsPressed true;                //запоминаем что включен ключ 2
    
}
  }

  if(!
holding && button.isHold()) {
    
Serial.print("<hold:");
    
Serial.print(value); 
    
Serial.print(">"); 
    
holding true;  
  }

  if(
holding && button.onRelease()) {
    
Serial.print("<release:");
    
Serial.print(value); 
    
Serial.print(">");
    
holding false;

    if (
Button1IsPressed true) {             //вспоминаем что включен ключ 1
       
digitalWrite(pinButton1LOW);          //выключаем ключ 1
       
Button1IsPressed false;               //запоминаем что выключен ключ 1
    
}

    if (
Button2IsPressed true) {             //вспоминаем что включен ключ 2
       
digitalWrite(pinButton1LOW);          //выключаем ключ 2
       
Button1IsPressed false;               //запоминаем что выключен ключ 2
    
}
 
  }



Oleg7874 23.07.2015 17:30

Добрый день.
Хочу управлять планшетом кнопками на руле, но возник вопрос:
Подскажите, можно как-то сделать управление и магнитолой и планшетом, или только чем то одним ?

timtman 23.07.2015 17:48

Цитата:

Сообщение от Oleg7874 (Сообщение 333544)
Добрый день.
Хочу управлять планшетом кнопками на руле, но возник вопрос:
Подскажите, можно как-то сделать управление и магнитолой и планшетом, или только чем то одним ?

можно,

З.Ы. если руки золотые то неважно из какого места они растут :big:

Oleg7874 24.07.2015 16:25

Цитата:

Сообщение от timtman (Сообщение 333545)
можно,

З.Ы. если руки золотые то неважно из какого места они растут :big:

Подскажите как ?

lti1 24.07.2015 16:31

Цитата:

Сообщение от Oleg7874 (Сообщение 333622)
Подскажите как ?

Вы бы поподробнее описали, что в итоге хотите получить, может ответ быстрее получите.

Oleg7874 24.07.2015 23:16

Хочу управлять планшетом и магнитолой кнопками на руле, но предполагаю что одновременно не получится !!
Хотя может как через аурдино можно запрограмировать короткие нажатия для магнитолы, а длинные для планшета, но как это сделать вообще не представляю !
Еще имеется одна замануха- магнитола по блютузу подключается к телефону или планшету как хендсфрии - можно на магнитоле нажать кнопку позвонить и на планшете или телефоне запустится последний набранный звонок, если долго держать кнопку звонка на магнитоле, то на планшете появится голосовой набор номера.
Собственно замануха в том как переназначить действия на планшете при нажатии кнопок на магнитоле.

klimsky 27.07.2015 13:42

Цитата:

Сообщение от Oleg7874 (Сообщение 333669)
Хочу управлять планшетом и магнитолой кнопками на руле, но предполагаю что одновременно не получится !!
Хотя может как через аурдино можно запрограмировать короткие нажатия для магнитолы, а длинные для планшета, но как это сделать вообще не представляю !
Еще имеется одна замануха- магнитола по блютузу подключается к телефону или планшету как хендсфрии - можно на магнитоле нажать кнопку позвонить и на планшете или телефоне запустится последний набранный звонок, если долго держать кнопку звонка на магнитоле, то на планшете появится голосовой набор номера.
Собственно замануха в том как переназначить действия на планшете при нажатии кнопок на магнитоле.

можно сделать все что угодно. наверное
назначаете аналоговый вход для приема нажатий кнопок
меряете сопротивления кнопок руля, подбираете резисторами соответстующие сопротивления.
arduino прошиваете как usb-клавиатуру, через нее будут передаваться нажатия в планшет
назначаете на ардуине цифровые выходы для замыкания цепей, например с помощью микросхемы к561кт3. подали HIGH на вход микросхемы, она замкнула соответствующие сопротивления, управление магнитолой работает
пишите (или переделываете из того что здесь есть) скетч для ардуино, который анализирует длительность нажатия кнопок: короткое нажатие - замыкаем цепь, длинное нажатие - передаем в планшет нужную клавишу клавиатуры. управление планшетом работает
переназначаете действия клавитуры на планшете, или используете tasker для обработки нажатий
а вот если понадобится с ардуины обрабатывать длинное нажатие на магнитоле - сложнее может оказаться, там наверняка нажатия не на резистивных кнопках, надо ещё будет продумать как к ним подключаться

Maniac82 27.07.2015 14:57

Через месяцок как придет всё буду пробовать реализовать именно такой вариант.

А почему это длинные нажатия не на резистивных кнопках? Немного не понял.

Oleg7874 27.07.2015 21:09

Цитата:

Сообщение от klimsky (Сообщение 333828)
можно сделать все что угодно. наверное
назначаете аналоговый вход для приема нажатий кнопок
меряете сопротивления кнопок руля, подбираете резисторами соответстующие сопротивления.
arduino прошиваете как usb-клавиатуру, через нее будут передаваться нажатия в планшет
назначаете на ардуине цифровые выходы для замыкания цепей, например с помощью микросхемы к561кт3. подали HIGH на вход микросхемы, она замкнула соответствующие сопротивления, управление магнитолой работает
пишите (или переделываете из того что здесь есть) скетч для ардуино, который анализирует длительность нажатия кнопок: короткое нажатие - замыкаем цепь, длинное нажатие - передаем в планшет нужную клавишу клавиатуры. управление планшетом работает
переназначаете действия клавитуры на планшете, или используете tasker для обработки нажатий
а вот если понадобится с ардуины обрабатывать длинное нажатие на магнитоле - сложнее может оказаться, там наверняка нажатия не на резистивных кнопках, надо ещё будет продумать как к ним подключаться

Спасибо Вам огромное за пояснение !!!
Но только для меня это не то что сложно, а вообще космос.
В теории я понимаю что нужно сделать, а вот как реализовать в жизни вот это проблема.
Буду искать инфу как это реализовать, но подозреваю что врятли смогу осилить.

maxymike 11.08.2015 13:10

Как думаете, реально ли приспособить эту вещь под андроид? http://carmonitor.ru/ru/joystick-p-1...03b1a268677f6f Она, вроде, тоже ардуино какая-то, я не в зуб ногой.

<<МиТяЙ>> 08.09.2015 23:47

Почему скейтч не загружается в леонардо, зависает под конец и тишина. Так же при нажатии сервис прога зависает на долго

lti1 09.09.2015 00:19

Цитата:

Сообщение от <<МиТяЙ>> (Сообщение 337627)
Почему скейтч не загружается в леонардо, зависает под конец и тишина. Так же при нажатии сервис прога зависает на долго

Выключите Bluetooth на ноутбуке.

<<МиТяЙ>> 09.09.2015 00:37

Цитата:

Сообщение от lti1 (Сообщение 337632)
Выключите Bluetooth на ноутбуке.

Спасибо. помогло.

А не подскажете еще, как выключить Bluetooth, я нашел только способом включения режима "В самолете", но там и вайфай обрубает. Вин8, Павлин6.

Maniac82 09.09.2015 14:35

Подскажите такой вопрос. Для Измерения напряжения бортсети хотел использовать ардуино с делителем напряжения. А потом возникла мысля. А будет ли работать если планшет и ардуина питается от NSD? Там же земля разная будет. Или надо будет землю от акб подсоединять и соответственно появятся наводки?

oleg707 09.09.2015 15:31

Цитата:

Сообщение от Maniac82 (Сообщение 337685)
Подскажите такой вопрос. Для Измерения напряжения бортсети хотел использовать ардуино с делителем напряжения. А потом возникла мысля. А будет ли работать если планшет и ардуина питается от NSD? Там же земля разная будет. Или надо будет землю от акб подсоединять и соответственно появятся наводки?

будет мерять относительно земли, к которой подключена ардуина(атмега). :yes4:Если будет разность напряжений по земле физической ( от аккумулятора авто) и землёй логической (от NSD), эта же разность будет при измерении напряжения.:shok:
В чем проблема использовать общую землю то?

Maniac82 09.09.2015 16:04

Проблема известная - наводки в звуке из за земляной петли. Разве они не появятся если я землю возьму с минуса авто? Избавился от них как раз NSDшкой.


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

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