Показать сообщение отдельно
Старый 21.07.2015, 10:28   #505
klimsky
Пользователь
 
Регистрация: 13.10.2014
Возраст: 44
Город: Томск
Регион: 70
Машина: Ford Mondeo MK4
Сообщений: 32
klimsky is on a distinguished road
По умолчанию

Цитата:
Сообщение от Maniac82 Посмотреть сообщение
А подскажите как реализовать следующее:
На руле 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
    
}
 
  }


Последний раз редактировалось klimsky; 21.07.2015 в 10:59.
klimsky вне форума   Ответить с цитированием