Allow for removal of hysteresis on 4x encoders (#13698)
* Remove hysteresis on 4x encoders Sometimes, controller skips encoder pulses and when it returns to default position, the encoder_pulses variable isn't equals 0. And when I turn encoder in opposite direciton, it skips first click becase of encoder_pulses crosses zero. To prevent this, I add the ENCODER_DEFAULT_POS constant, and reset encoder_pulses into 0 when the state variable equals ENCODER_DEFAULT_POS. * Documentation for ENCODER_DEFAULT_POS
This commit is contained in:
		
							parent
							
								
									b8e913c8db
								
							
						
					
					
						commit
						703f027717
					
				
					 2 changed files with 11 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -119,6 +119,11 @@ static bool encoder_update(uint8_t index, uint8_t state) {
 | 
			
		|||
        encoder_update_kb(index, ENCODER_CLOCKWISE);
 | 
			
		||||
    }
 | 
			
		||||
    encoder_pulses[i] %= resolution;
 | 
			
		||||
#ifdef ENCODER_DEFAULT_POS
 | 
			
		||||
    if ((state & 0x3) == ENCODER_DEFAULT_POS) {
 | 
			
		||||
        encoder_pulses[i] = 0;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
    return changed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue