Цитата:
Сообщение от 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(DPin, HIGH);
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(pinButton1, HIGH); //включаем ключ 1
Button1IsPressed = true; //запоминаем что включен ключ 1
}
if (value>=595 && value<=605 && Button2IsPressed=false) { //значение при нажатии кнопки = 600, с учетом дребезга кнопок +-5
digitalWrite(pinButton2, HIGH); //включаем ключ 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(pinButton1, LOW); //выключаем ключ 1
Button1IsPressed = false; //запоминаем что выключен ключ 1
}
if (Button2IsPressed = true) { //вспоминаем что включен ключ 2
digitalWrite(pinButton1, LOW); //выключаем ключ 2
Button1IsPressed = false; //запоминаем что выключен ключ 2
}
}
}