20.12.2018, 20:16 | #831 | |
Старший Пользователь
Регистрация: 20.01.2017
Возраст: 60
Город: Енакиево
Регион: Украина
Машина: Peugeot 407
Сообщений: 110
|
Цитата:
|
|
22.12.2018, 16:59 | #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. |
12.01.2019, 14:35 | #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(); } } |
12.01.2019, 15:34 | #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. |
12.01.2019, 16:01 | #835 | |
Пользователь
Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
|
Цитата:
Сделал на прерываниях (здесь кусок, касающийся только энкодера): PHP код:
Последний раз редактировалось Alex15BV; 14.01.2019 в 18:03. |
|
12.01.2019, 20:49 | #836 |
Новый Пользователь
Регистрация: 18.12.2018
Возраст: 43
Регион: 26
Сообщений: 7
|
скетч не компилируется, ругается на эту строку
attachInterrupt(digitalPinToInterrupt(KeyEncPin), KeyEncPress, FALLING); |
12.01.2019, 20:58 | #837 |
Пользователь
Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
|
Arduino ProMicro - забыл указать... Не знаю, на чем ты делаешь
|
12.01.2019, 21:00 | #838 |
Новый Пользователь
Регистрация: 18.12.2018
Возраст: 43
Регион: 26
Сообщений: 7
|
на Arduino ProMicro делаю
|
12.01.2019, 21:07 | #839 |
Пользователь
Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
|
Нет проблем никаких
Последний раз редактировалось Alex15BV; 31.01.2019 в 17:43. |
12.01.2019, 21:19 | #840 |
Новый Пользователь
Регистрация: 18.12.2018
Возраст: 43
Регион: 26
Сообщений: 7
|
можешь прислать весь скетч целяком
|
Здесь присутствуют: 12 (пользователей: 0 , гостей: 12) | |
|
|