Резистивные кнопки + arduino
- Войдите на сайт для отправки комментариев
Вечер добрый! Написал в соседней ветке, а там тишина... короче, непроходите мимо, люди добрые...
Бьюсь со скетчем уже неделю, и к бабкам ходил, и с бубном прыгал, даже на шоу экстрасенсов звонил..... ничего не помогает.... вообще задача рулить треками резистивными кнопками с руля, для этого добавлены мультимедия кнопки (добавлен remote в файлы USBAPI.h, HID.cpp подробнее тут _ttp://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/), а прблема в том, что громкость регулируется, а переключение/перемотка нет, т.е. иногда может переключить(было 2 раза за неделю)
Схема подключения: к пину А0 подтянута через резистор 10КОм 5В, а к земле и А0 подключены кнопки с руля, но есть небольшая особенность, я вывел от руля 2 контакта (одна из них масса и подключена а ардунио на массу) И 5В подключена на A0.
ARDUNIO Leonardo
Вот скетч:
//****************** Здесь необходимо указать свои значения ***************
int analogPin=0; // пин для подключения кнопок, по умолчанию A0
int release_button = 1023; // значение при отпущенных кнопках
int button_release_range = 50; // диапазон значения + - при отпущенных кнопках
int button_range = 30; // диапазон значения нажатых кнопок + -
int time_holding = 500; // время для удержания кнопок в миллисекундах
int time_tinkling = 40; // время исключающее дребезг контактов в миллисекундах
int vol_up = 200; // значение кнопки увеличить громкость
int vol_down = .400; // значение кнопки уменьшить громкость
int next = 600; // значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании
int previous = 800; // значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании
//**************************************************************************
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= 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= 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);
}
//********************** Next и Fast Forward ************************************
if(millis()-eventTime= 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();
}
//********************** Previous и Rewind ************************************
if(millis()-eventTime= 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();
}
}
Вы, когда тему создали, могли заметить ПРЯМО над вашей темой - прилепленная тема о том, КАК, ЧОРТ ВОЗЬМИ, ВСТАВЛЯТЬ КОД.
Сделайте это пожалуйста. Если не понимате зачем - то просто в знак уважения к правилам этого дома.
Сделайте это пожалуйста.
я запретил. форум должен выглядеть, как кусок нечитаемого дерьма.
Вы, когда тему создали, могли заметить ПРЯМО над вашей темой - прилепленная тема о том, КАК, ЧОРТ ВОЗЬМИ, ВСТАВЛЯТЬ КОД.
Сделайте это пожалуйста. Если не понимате зачем - то просто в знак уважения к правилам этого дома.
Сижу с телефона га работе, чет никак не выходит (((
В хроме с включенной галочкой полная версия, появилась строка, надеюсь это поможет
1.поглядите на строки 147 и 179 и попытайтесь понять, что за херня там написана.
2. дело даже не в том, что перепутан = и ==, там не это, там просто куска кода нет. Я не стану выяснять - какого. Раз Вы это не увидели - значит код не Ваш. А с чужим кодом - это за бабки в "Ищу исполнителя".
ни разу не претендовал на авторство того кода, меня даже больше интересует правильность подключения, которое я описал в 1 посте. а свой код вот, но и сним ни черта не работает (в смысле громкость работает, а переключение никак) (((((
Схема подключения: к пину А0 подтянута через резистор 10КОм 5В, а к земле и А0 подключены кнопки с руля, но есть небольшая особенность, я вывел от руля 2 контакта (одна из них масса и подключена а ардунио на массу) И 5В подключена на A0.
Если Вы про это описание, то в нем я почти ничего не понял. Напишите внятно и нарисуйте.
А так - что за два провода? Зачем и куда? Ничерта не ясно.
Код, который вы привели как свой- должен работать, если значения соответствуют и ремоут работает. Вы проверяли ремоут отдельно и что выдает монитор порта?
С рисованием туго на телефоне. Пробую внятное описать: 10КОм резистор идет от контакта А0 к 5в на ардунии, от руля с резистивными кнопками вывел 2 провода, и подключил их к GND и А0 на ардунио. Но есть особенность, на контактах, которые идут от руля уже присутствует 5В.
Монитор порта выдает 1023 при нажатии на кнопки, значения меняются на те что я указал в скетче
Но есть особенность, на контактах, которые идут от руля уже присутствует 5В.
Вот эта фраза так и осталась мне непонятной. %)
Но если монитор порта так выдает, то все должно работать. Проверьте сам ремоут отдельно просто командами с ком-порта.
через Serial.read(). В таком коде, как Вы привели, просто негде ошибиться. Все должно работать.
то есть кнопки подтянуты к +5 еще и на руле? тогда на контроллере подтяжка уже не нужна, но 10К - ни на что не повлияют. Вообще не приципиально.
Больше +5 могут прийти от руля? Это единственный риск.
А код ремоут все-таки проверьте отдельно.
=============
все вышесказанное верно, если +5 на руле не грязные. если там помехи, это может быть проблеммой.
У меня в машине Кан Шина и поэтому пришлось от сим модуля кинуть 2 провода, и видимо в этом модуле добавляется 5в . т.е я подпаял не к самим кнопкам, а уже когда они приходят на сим модуль
Перепроверю все, больше 5 не должно прийти.
и еще просто любопытно: а чем вы управляете через HID, в машине?... Я - прям сильно удивлен - никак придумать не могу!
и еще просто любопытно: а чем вы управляете через HID, в машине?... Я - прям сильно удивлен - никак придумать не могу!
Давай на ты, если не против, у меня стоит комп в машине carpc как у нас принято его называть, он и рулит аудиосистемой
Ясно. Комп - это хорошо.
У меня - одна из машин - кемпер (Hymer Camp 622 CL). Я на нем по Европе катаюсь... Ну, когда есть пара лишних копеек ;).
Я все хочу на него общий комп сделать, чтобы в нем и музыку и навигацию и управление всем питанием, техникой (холодильник, отопление, вода) ...и прочее собрать. Может тарелку еще с автонаведением на спутник... кондей на крыше, если поставлю.
На американских кемперах (ну, сам знаешь, там это целая культура) все удобнее придумано, чем на немецких, как мой. Но американцы и сильно больше по размерам.
Блин, прям моя мечта, на кемпере по Европе, а то появилась копеечка и вместо авантюризма надо было решать жилищный вопрос, сейчас 2 ребенок 3 мес... и все откладывается на неопределенный срок. А на легковушке много не накатаешь тем более в 4 ром.
Мой кемпер, если посмотришь в гугле - как раз на папа+мама + двое детей (на корме - детская зона из двух коек одна-над-другой). Но я катаюсь только с женой. У меня, слава Б..гу, один сын и уже папа.
Конечно сразу посмотрел на твою хату)). Зачетная! Надеюсь тоже осуществлю мечту)
Мистика, вчера вечером заработало, и сегодня утром работает как так...