Ничего не перепутал?Kudryash писал(а):Arduino будет определять наши кнопки как HID клавиатуру
Подрулевой переключатель магнитолы.
Модератор: Техмодераторы
-
- Руководитель
- Сообщения: 42049
- Зарегистрирован: 10 янв 2010, 23:33
- Полное имя: Санчело Мастраяни
- Автомобиль: Другой
- Двигатель: Другой
- Трансмиссия: Другая
- Год выпуска: 2023
- Климатика: Климат-контроль
- Люк на крыше: Есть
- Откуда: Торжок [69]
- Контактная информация:
Re: Подрулевой переключатель магнитолы.
-
- Сообщения: 243
- Зарегистрирован: 26 мар 2011, 23:49
- Полное имя: Саня
- Автомобиль: FFn Elegance
- Двигатель: 1.4 Бензин
- Трансмиссия: Механическая
- Год выпуска: 2008
- Климатика: Нет
- Откуда: Североморск
- Контактная информация:
Re: Подрулевой переключатель магнитолы.
*Casper*,точно , попутал . Планшет будет понимать arduino как hid клавиатуру и наши кнопки будут кнопками этой самой клавиатуры. Ну как то так
-
- Руководитель
- Сообщения: 42049
- Зарегистрирован: 10 янв 2010, 23:33
- Полное имя: Санчело Мастраяни
- Автомобиль: Другой
- Двигатель: Другой
- Трансмиссия: Другая
- Год выпуска: 2023
- Климатика: Климат-контроль
- Люк на крыше: Есть
- Откуда: Торжок [69]
- Контактная информация:
Re: Подрулевой переключатель магнитолы.
Видимо эту лекцию я проспал. Когда ардуин стал хидом? Дуе...что-то там вроде мог быть хидом, а ардуина.... чет не помню. Хотя они там на армы перешли. Возможно что-то поменялось в политике партии.Kudryash писал(а):arduino как hid
-
- Сообщения: 243
- Зарегистрирован: 26 мар 2011, 23:49
- Полное имя: Саня
- Автомобиль: FFn Elegance
- Двигатель: 1.4 Бензин
- Трансмиссия: Механическая
- Год выпуска: 2008
- Климатика: Нет
- Откуда: Североморск
- Контактная информация:
Re: Подрулевой переключатель магнитолы.
Arduino Pro Micro и Arduino Leonardo на чипе ATmega32u4 работают.
-
- Руководитель
- Сообщения: 42049
- Зарегистрирован: 10 янв 2010, 23:33
- Полное имя: Санчело Мастраяни
- Автомобиль: Другой
- Двигатель: Другой
- Трансмиссия: Другая
- Год выпуска: 2023
- Климатика: Климат-контроль
- Люк на крыше: Есть
- Откуда: Торжок [69]
- Контактная информация:
Re: Подрулевой переключатель магнитолы.
Ну армы. Ага.
-
- Сообщения: 64
- Зарегистрирован: 03 дек 2015, 22:00
- Полное имя: Дима
- Двигатель: 1.6 Дизель
- Трансмиссия: Роботизированная
- Год выпуска: 2006
- Климатика: Нет
- Люк на крыше: Нет
- Откуда: Москва, СВАО
- Контактная информация:
Re: Подрулевой переключатель магнитолы.
Если в кожухе отверстия нету, вырезать можно? Джостик защёлкница? Есть размеры где делать дырку?
-
- Сообщения: 243
- Зарегистрирован: 26 мар 2011, 23:49
- Полное имя: Саня
- Автомобиль: FFn Elegance
- Двигатель: 1.4 Бензин
- Трансмиссия: Механическая
- Год выпуска: 2008
- Климатика: Нет
- Откуда: Североморск
- Контактная информация:
Re: Подрулевой переключатель магнитолы.
[youtube]x_WnOavBu1A[/youtube]
-
- Сообщения: 243
- Зарегистрирован: 26 мар 2011, 23:49
- Полное имя: Саня
- Автомобиль: FFn Elegance
- Двигатель: 1.4 Бензин
- Трансмиссия: Механическая
- Год выпуска: 2008
- Климатика: Нет
- Откуда: Североморск
- Контактная информация:
Re: Подрулевой переключатель магнитолы.
Для управления андроидом нам потребуется
Arduino pro micro
брал на али вот тут
Для начала скачать arduino 1.0.5 zip. Далее в папке \arduino-1.0.5\hardware\arduino\cores\arduino меняете два файла USBAPI.h, HID.cpp на эти , при этом версия ПО Arduino Software IDE должна быть 1.0.5,
Подключаемся по схеме с привязкой к +5v через резистор 1 кОм.
После заливаете
и считываете коды всех кнопок через "монитор порта" Arduino Software (IDE).
И так , мои показатели кнопок
855 присоединил пульт , кнопки не нажаты
vol + 130
vol - 50
seek + 235
seek- 365
mode 519
После определения кнопок заливаете
Радуемся проделанной работе
Arduino pro micro
брал на али вот тут
Для начала скачать arduino 1.0.5 zip. Далее в папке \arduino-1.0.5\hardware\arduino\cores\arduino меняете два файла USBAPI.h, HID.cpp на эти , при этом версия ПО Arduino Software IDE должна быть 1.0.5,
Подключаемся по схеме с привязкой к +5v через резистор 1 кОм.
После заливаете
int analogPin=0; //пин для подключения кнопок
int data;
void setup()
{
analogReference(DEFAULT); // подключение внутреннего напряжение AVCC к выводу AREF (опорное напряжение)
Serial.begin(9600);
}
void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки
Serial.println(data);
delay(1000);
}
int data;
void setup()
{
analogReference(DEFAULT); // подключение внутреннего напряжение AVCC к выводу AREF (опорное напряжение)
Serial.begin(9600);
}
void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки
Serial.println(data);
delay(1000);
}
и считываете коды всех кнопок через "монитор порта" Arduino Software (IDE).
И так , мои показатели кнопок
855 присоединил пульт , кнопки не нажаты
vol + 130
vol - 50
seek + 235
seek- 365
mode 519
После определения кнопок заливаете
//****************** Здесь необходимо указать свои значения ***************
int analogPin=0; // пин для подключения кнопок, по умолчанию A0
int release_button = 854; // значение при отпущенных кнопках
int button_release_range = 20; // диапазон значения + - при отпущенных кнопках
int button_range = 5; // диапазон значения нажатых кнопок + -
int time_holding = 500; // время для удержания кнопок в миллисекундах
int time_tinkling = 30; // время исключающее дребезг контактов в миллисекундах
int vol_up = 129; // значение кнопки увеличить громкость
int vol_down = 50; // значение кнопки уменьшить громкость
int alt_tab = 777; // значение кнопки которая будет работать как Alt + Tab
int next = 235; // значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании
int previous = 366; // значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании
int play_pause = 519; // значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании
//**************************************************************************
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;
void setup()
{
analogReference(DEFAULT); // подключение внутреннего напряжение AVCC к выводу AREF (опорное напряжение)
Keyboard.begin();
}
void loop()
{
data=analogRead(analogPin);
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 0)
{
eventTime=millis();
}
//********************** Громкость ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_up - button_range && data <= vol_up + button_range && flag == 0)
{
Remote.increase();
flag = 5;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= vol_up - button_range && data <= vol_up + button_range && flag == 5 || data >= vol_up - button_range && data <= vol_up + button_range && flag && flag == 3)
{
Remote.increase();
flag = 3;
Remote.clear();
delay(100);
}
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_down - button_range && data <= vol_down + button_range && flag == 0)
{
Remote.decrease();
flag = 6;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= vol_down - button_range && data <= vol_down + button_range && flag == 6 || data >= vol_down - button_range && data <= vol_down + button_range && flag == 3)
{
Remote.decrease();
flag = 3;
Remote.clear();
delay(100);
}
//********************** AltTab + Ещё что то ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= alt_tab - button_range && data <= alt_tab + button_range)
{
flag = 1;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis == 0)
{
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis != 0)
{
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}
if(pauseMillis && millis()-pauseMillis >= 800 && data>=release_button - button_release_range && data<=release_button + button_release_range)
{
flag = 0;
pauseMillis = 0;
Keyboard.releaseAll();
}
if(millis()-eventTime>time_holding && data >= alt_tab - button_range && data <= alt_tab + button_range && flag == 1)
{
flag = 0;
}
//********************** Next и Fast Forward ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= next - button_range && data <= next + button_range)
{
flag = 2;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 2)
{
Remote.next();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= next - button_range && data <= next + button_range && flag == 2 || data >= next - button_range && data <= next + button_range && flag == 3)
{
Remote.forward();
flag = 3;
Remote.clear();
delay(100);
}
//********************** Previous и Rewind ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= previous - button_range && data <= previous + button_range)
{
flag = 4;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 4)
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= previous - button_range && data <= previous + button_range && flag == 4 || data >= previous - button_range && data <= previous + button_range && flag == 3)
{
Remote.rewind();
flag = 3;
Remote.clear();
delay(100);
}
//********************** Play/pause + Mute ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= play_pause - button_range && data <= play_pause + button_range)
{
flag = 7;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 7)
{
Remote.play_pause();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= play_pause - button_range && data <= play_pause + button_range && flag == 7)
{
Remote.mute();
flag = 0;
delay(10);
Remote.clear();
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 3 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 5 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 6)
{
flag = 0;
}
}
int analogPin=0; // пин для подключения кнопок, по умолчанию A0
int release_button = 854; // значение при отпущенных кнопках
int button_release_range = 20; // диапазон значения + - при отпущенных кнопках
int button_range = 5; // диапазон значения нажатых кнопок + -
int time_holding = 500; // время для удержания кнопок в миллисекундах
int time_tinkling = 30; // время исключающее дребезг контактов в миллисекундах
int vol_up = 129; // значение кнопки увеличить громкость
int vol_down = 50; // значение кнопки уменьшить громкость
int alt_tab = 777; // значение кнопки которая будет работать как Alt + Tab
int next = 235; // значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании
int previous = 366; // значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании
int play_pause = 519; // значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании
//**************************************************************************
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;
void setup()
{
analogReference(DEFAULT); // подключение внутреннего напряжение AVCC к выводу AREF (опорное напряжение)
Keyboard.begin();
}
void loop()
{
data=analogRead(analogPin);
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 0)
{
eventTime=millis();
}
//********************** Громкость ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_up - button_range && data <= vol_up + button_range && flag == 0)
{
Remote.increase();
flag = 5;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= vol_up - button_range && data <= vol_up + button_range && flag == 5 || data >= vol_up - button_range && data <= vol_up + button_range && flag && flag == 3)
{
Remote.increase();
flag = 3;
Remote.clear();
delay(100);
}
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_down - button_range && data <= vol_down + button_range && flag == 0)
{
Remote.decrease();
flag = 6;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= vol_down - button_range && data <= vol_down + button_range && flag == 6 || data >= vol_down - button_range && data <= vol_down + button_range && flag == 3)
{
Remote.decrease();
flag = 3;
Remote.clear();
delay(100);
}
//********************** AltTab + Ещё что то ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= alt_tab - button_range && data <= alt_tab + button_range)
{
flag = 1;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis == 0)
{
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis != 0)
{
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}
if(pauseMillis && millis()-pauseMillis >= 800 && data>=release_button - button_release_range && data<=release_button + button_release_range)
{
flag = 0;
pauseMillis = 0;
Keyboard.releaseAll();
}
if(millis()-eventTime>time_holding && data >= alt_tab - button_range && data <= alt_tab + button_range && flag == 1)
{
flag = 0;
}
//********************** Next и Fast Forward ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= next - button_range && data <= next + button_range)
{
flag = 2;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 2)
{
Remote.next();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= next - button_range && data <= next + button_range && flag == 2 || data >= next - button_range && data <= next + button_range && flag == 3)
{
Remote.forward();
flag = 3;
Remote.clear();
delay(100);
}
//********************** Previous и Rewind ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= previous - button_range && data <= previous + button_range)
{
flag = 4;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 4)
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= previous - button_range && data <= previous + button_range && flag == 4 || data >= previous - button_range && data <= previous + button_range && flag == 3)
{
Remote.rewind();
flag = 3;
Remote.clear();
delay(100);
}
//********************** Play/pause + Mute ************************************
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-1 && data >= play_pause - button_range && data <= play_pause + button_range)
{
flag = 7;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 7)
{
Remote.play_pause();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= play_pause - button_range && data <= play_pause + button_range && flag == 7)
{
Remote.mute();
flag = 0;
delay(10);
Remote.clear();
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 3 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 5 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 6)
{
flag = 0;
}
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 23
- Зарегистрирован: 21 фев 2016, 18:13
- Полное имя: Ирина
- Автомобиль: FFn Trend
- Двигатель: 1.4 Бензин
- Трансмиссия: Механическая
- Год выпуска: 2007
- Люк на крыше: Нет
- Откуда: Пензенская область
Re: Подрулевой переключатель магнитолы.
Подходит ли рычаг открывания капота (из салона) с Фиесты на Фьюж? Вроде совместимы, пишут в разборке, родной не нашла, только с фиесты.
***
пардон, случайно не в ту тему написала
***
пардон, случайно не в ту тему написала
-
- Администратор
- Сообщения: 28722
- Зарегистрирован: 11 янв 2010, 07:46
- Полное имя: Дмитрий
- Автомобиль: FFn Elegance
- Двигатель: 1.6 Бензин
- Трансмиссия: Автоматическая
- Год выпуска: 2007-11
- Климатика: Климат-контроль
- Люк на крыше: Нет
- Откуда: Нижний Новгород
Re: Подрулевой переключатель магнитолы.
Да. Подходит.irisha писал(а):Подходит ли рычаг открывания капота (из салона) с Фиесты на Фьюж?
Those who are willing to sacrifice their essential freedom for a little bit of temporary security are not worthy of either freedom or security.(с)