Upload files to 'EncoderTester'
This commit is contained in:
		
							
								
								
									
										76
									
								
								EncoderTester/EncoderTester.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								EncoderTester/EncoderTester.ino
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
// define the pins for the rotary encoder
 | 
			
		||||
const int pinA = 2;
 | 
			
		||||
const int pinB = 3;
 | 
			
		||||
const int sw = 4;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// define the current and previous state of the rotary encoder pins
 | 
			
		||||
int currA = 0;
 | 
			
		||||
int currB = 0;
 | 
			
		||||
int prevA = 0;
 | 
			
		||||
int prevB = 0;
 | 
			
		||||
int prevButton = 1;
 | 
			
		||||
int currButton = 0;
 | 
			
		||||
 | 
			
		||||
// define the current and previous positions of the rotary encoder
 | 
			
		||||
int position = 0;
 | 
			
		||||
int prevPosition = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void setup() {
 | 
			
		||||
  // set the pin modes for the rotary encoder
 | 
			
		||||
  pinMode(pinA, INPUT_PULLUP);
 | 
			
		||||
  pinMode(pinB, INPUT_PULLUP);
 | 
			
		||||
  pinMode(sw, INPUT_PULLUP);
 | 
			
		||||
 | 
			
		||||
  // enable pull-up resistors on the rotary encoder pins
 | 
			
		||||
 // digitalWrite(pinA, HIGH);
 | 
			
		||||
 // digitalWrite(pinB, HIGH);
 | 
			
		||||
 | 
			
		||||
  // initialize the serial communication
 | 
			
		||||
  Serial.begin(9600);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void loop() {
 | 
			
		||||
  // read the current state of the rotary encoder
 | 
			
		||||
  currA = digitalRead(pinA);
 | 
			
		||||
  currB = digitalRead(pinB);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  //read state of button
 | 
			
		||||
  currButton = digitalRead(sw);
 | 
			
		||||
 | 
			
		||||
  // check if the state of pin A has changed
 | 
			
		||||
  if (currA != prevA) {
 | 
			
		||||
    
 | 
			
		||||
    // if pin A has changed, check the state of pin B to determine direction
 | 
			
		||||
    if (currA == currB) {
 | 
			
		||||
      // clockwise rotation
 | 
			
		||||
      position++;
 | 
			
		||||
    } else {
 | 
			
		||||
      // counter-clockwise rotation
 | 
			
		||||
      position--;
 | 
			
		||||
    }
 | 
			
		||||
  delay(50);
 | 
			
		||||
  
 | 
			
		||||
    Serial.println(position);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
  if(currButton == 0 && prevButton == 1){
 | 
			
		||||
    Serial.println("button press");
 | 
			
		||||
    delay(20);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  prevButton = currButton;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // update the previous state and position of the rotary encoder
 | 
			
		||||
  prevA = currA;
 | 
			
		||||
  prevB = currB;
 | 
			
		||||
  prevPosition = position;
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user