![]() |
![]() |
#831 | |
Старший Пользователь
![]() Регистрация: 20.01.2017
Возраст: 61
Город: Енакиево
Регион: Украина
Машина: Peugeot 407
Сообщений: 110
![]() |
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#832 |
Пользователь
![]() Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
![]() ![]() ![]() |
![]() Доброго времени суток Всем.
Дико извиняюсь... А никто не думал над упрощением обсуждаемого кода? (Над избыточностью переменных и сложностью логических конструкций при проверке) ... или это не нужно никому? Работает, и ладно... Пример: зачем сначала "vol_up = 111", потом к этому "button_range = 5" и потом к этому ещё "data >= vol_up - button_range && data <= vol_up + button_range" когда можно "vol_up_porog = 120" и затем "data < vol_up_porog" и к тому же эту переменную можно потом использовать в loop для однозначной идентификации нажатой кнопки (в качестве флага)... Последний раз редактировалось Alex15BV; 22.12.2018 в 23:06. |
![]() |
![]() |
![]() |
#833 |
Новый Пользователь
Регистрация: 18.12.2018
Возраст: 43
Регион: 26
Сообщений: 7
![]() |
![]() задача:
-при повороте энкодера по часовой стрелке срабатывала кнопка "стрелка вправо" KEY_RIGHT_ARROW -при повороте против часовой "стрелка влево" KEY_LEFT_ARROW -при нажатии энкодера Enter "KEY_RETURN" собрал скетч, работает только нажатие энкодера Enter "KEY_RETURN" если не чего не трогаешь просто перелистываются приложения, как будто нажата клавиша "стрелка вправо" KEY_RIGHT_ARROW подключил так: pin 16 кнопка энкодера SW pin 2 нога энкодера CLK pin 3 нога энкодера DT GDN средняя нога энкодера и с кнопки GDN подскажите, что нужно поправить в скетче или что переподключить? скетч #include <HID.h> #include <keyboard.h> #include <Tablet.h> #include <Encoder.h> #define BTN_pin 16 // pin 16 кнопка энкодера SW const int pin_A = 2; // pin 2 нога энкодера CLK const int pin_B = 3; // pin 3 нога энкодера DT unsigned char encoder_A; //переменная unsigned char encoder_B; //переменная unsigned char encoder_A_prev=0; //переменная uint32_t vibor = 0; //Здесь будем хранть время int perek = 0; //переменная переключатель void setup() { digitalWrite(BTN_pin, 1); //подтяжка кнопки энкодера pinMode(pin_A, INPUT); //пины энкодера объявляем входами pinMode(pin_B, INPUT); //пины энкодера объявляем входами Serial.begin(9600); Keyboard.begin(); //подключим как клава } void loop() { //////////////ЭНКОДЕР/////////// { encoder_A = digitalRead(pin_A); // считываем состояние выхода А энкодера encoder_B = digitalRead(pin_B); // считываем состояние выхода B энкодера if((!encoder_A) && (encoder_A_prev)){ // если состояние изменилось с положительного к нулю if(encoder_B) { Keyboard.press(KEY_RIGHT_ARROW); delay(200); Keyboard.releaseAll(); } else { Keyboard.press(KEY_LEFT_ARROW); delay(200); Keyboard.releaseAll(); } } encoder_A_prev = encoder_A; // сохраняем значение А для следующего цикла } if(digitalRead(BTN_pin)==LOW) //Если кнопка нажата то делаем то что ниже. { Keyboard.press(KEY_RETURN); //При нажатии на кнопку команда Enter delay(200); //Делаем небольшую задержку чтоб не засыпало командами. Keyboard.releaseAll(); } } |
![]() |
![]() |
![]() |
#834 |
Пользователь
![]() Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
![]() ![]() ![]() |
![]() После комментария "//////////////ЭНКОДЕР///////////" открывающая скобка не лишняя, случайно? (перед encoder_A = digitalRead(pin_A)
![]() ... И инклюды лишние: если используются только функции клавиатуры - то зачем подключать ещё и Tablet, и Encoder? Последний раз редактировалось Alex15BV; 12.01.2019 в 16:17. |
![]() |
![]() |
![]() |
#835 | |
Пользователь
![]() Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
![]() ![]() ![]() |
![]() Цитата:
![]() Сделал на прерываниях (здесь кусок, касающийся только энкодера): PHP код:
Последний раз редактировалось Alex15BV; 14.01.2019 в 18:03. |
|
![]() |
![]() |
![]() |
#836 |
Новый Пользователь
Регистрация: 18.12.2018
Возраст: 43
Регион: 26
Сообщений: 7
![]() |
![]() скетч не компилируется, ругается на эту строку
attachInterrupt(digitalPinToInterrupt(KeyEncPin), KeyEncPress, FALLING); |
![]() |
![]() |
![]() |
#837 |
Пользователь
![]() Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
![]() ![]() ![]() |
![]() Arduino ProMicro - забыл указать... Не знаю, на чем ты делаешь
|
![]() |
![]() |
![]() |
#838 |
Новый Пользователь
Регистрация: 18.12.2018
Возраст: 43
Регион: 26
Сообщений: 7
![]() |
![]() на Arduino ProMicro делаю
|
![]() |
![]() |
![]() |
#839 |
Пользователь
![]() Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
![]() ![]() ![]() |
![]() Нет проблем никаких
![]() Последний раз редактировалось Alex15BV; 31.01.2019 в 17:43. |
![]() |
![]() |
![]() |
#840 |
Новый Пользователь
Регистрация: 18.12.2018
Возраст: 43
Регион: 26
Сообщений: 7
![]() |
![]() можешь прислать весь скетч целяком
|
![]() |
![]() |
![]() |
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3) | |
|
|