add support for encoders to core
This commit is contained in:
		
							parent
							
								
									e22c399245
								
							
						
					
					
						commit
						85688e5b52
					
				
					 11 changed files with 166 additions and 29 deletions
				
			
		| 
						 | 
				
			
			@ -52,6 +52,7 @@
 | 
			
		|||
  * [Combos](feature_combo)
 | 
			
		||||
  * [Command](feature_command.md)
 | 
			
		||||
  * [Dynamic Macros](feature_dynamic_macros.md)
 | 
			
		||||
  * [Encoders](feature_encoders.md)
 | 
			
		||||
  * [Grave Escape](feature_grave_esc.md)
 | 
			
		||||
  * [Key Lock](feature_key_lock.md)
 | 
			
		||||
  * [Layouts](feature_layouts.md)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,6 +52,7 @@
 | 
			
		|||
  * [Combos](feature_combo)
 | 
			
		||||
  * [Command](feature_command.md)
 | 
			
		||||
  * [Dynamic Macros](feature_dynamic_macros.md)
 | 
			
		||||
  * [Encoders](feature_encoders.md)
 | 
			
		||||
  * [Grave Escape](feature_grave_esc.md)
 | 
			
		||||
  * [Key Lock](feature_key_lock.md)
 | 
			
		||||
  * [Layouts](feature_layouts.md)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										41
									
								
								docs/feature_encoders.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								docs/feature_encoders.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
# Encoders
 | 
			
		||||
 | 
			
		||||
Basic encoders are supported by adding this to your `rules.mk`:
 | 
			
		||||
 | 
			
		||||
    ENCODER_ENABLE = yes
 | 
			
		||||
 | 
			
		||||
and this to your `config.h`:
 | 
			
		||||
 | 
			
		||||
    #define NUMBER_OF_ENCODERS 1
 | 
			
		||||
    #define ENCODERS_PAD_A { B12 }
 | 
			
		||||
    #define ENCODERS_PAD_B { B13 }
 | 
			
		||||
 | 
			
		||||
Each PAD_A/B variable defines an array so multiple encoders can be defined, e.g.:
 | 
			
		||||
 | 
			
		||||
    #define ENCODERS_PAD_A { encoder1a, encoder2a }
 | 
			
		||||
    #define ENCODERS_PAD_B { encoder1a, encoder2b }
 | 
			
		||||
 | 
			
		||||
If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions.
 | 
			
		||||
 | 
			
		||||
Additionally, the resolution can be specified in the same file (the default & suggested is 4):
 | 
			
		||||
 | 
			
		||||
    #define ENCODER_RESOLUTION 4
 | 
			
		||||
 | 
			
		||||
## Callbacks
 | 
			
		||||
 | 
			
		||||
The callback functions can be inserted into your `<keyboard>.c`:
 | 
			
		||||
 | 
			
		||||
    void encoder_update_kb(uint8_t index, bool clockwise) {
 | 
			
		||||
        encoder_update_user(index, clockwise);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
or `keymap.c`:
 | 
			
		||||
 | 
			
		||||
    void encoder_update_user(uint8_t index, bool clockwise) {
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Hardware
 | 
			
		||||
 | 
			
		||||
The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue