rotary encoder to keyboard error

I’m using leonardo board
i want if encoder turn counterclockwise then press any keyboard button
and if encoder turn clockwise then press another keyboard button
and if encoder don’move release those keys
but i check my encoder, there is no error but if i turn the encoder more than 4 or lots then keep press button until shut off the arduino is ther any problem in my code?

#include <Encoder.h>
typedef struct{
byte KeyL;
byte KeyR;
long Old;
long Now;
int Wait;
int Current;

void EncoderRead(ENCODER* Enc);

void EncoderRead(ENCODER* Enc){
if ((Enc->Old != Enc->Now)) {
Enc->Current = millis();
if (Enc->Old < Enc->Now) {>KeyR);
}else if((int)(Enc->Current+Enc->Wait) <= millis()){
Enc->Old = Enc->Now;

ENCODER NovA ={0,0,0,0,0,0};

Encoder NovA_Pin(10,11);

void setup() {

NovA.Wait = 12;

//키 값 정의(아스키코드 기준)
NovA.KeyL = ‘j’;
NovA.KeyR = ‘k’;


void loop() {
NovA.Now =;


Welcome to the forum.

Please read the first post in any forum entitled how to use this forum.,148850.0.html then look down to item #7 about how to post your code.
It will be formatted in a scrolling window that makes it easier to read.

Thanks… Tom… :slight_smile:

Values used with millis() should be ‘unsigned long’, not ‘int’ so change ENCODER.Current and ENCODER.Wait.

  if ((int)(Enc->Current + Enc->Wait) <= millis()) {

This should generally be written as:

  if (millis() - Enc->Current >= Enc->Wait) {

thx error fixed plus sometimes when i change the turning position keyL and keyR press together... but i want smooth change like jjjjjjjkkkkkkkjjjjkkkk if i change novA.WAIT does it fixed?