Показать сообщение отдельно
Старый 12.01.2019, 14:35   #833
fishdimka
Новый Пользователь
 
Регистрация: 18.12.2018
Возраст: 42
Регион: 26
Сообщений: 7
fishdimka is on a distinguished road
По умолчанию

задача:
-при повороте энкодера по часовой стрелке срабатывала кнопка "стрелка вправо" 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();
}
}
fishdimka вне форума   Ответить с цитированием