#include <stdio.h>
#include "pico/stdlib.h"
#define CLK_PIN 0
#define DT_PIN 1
#define SW_PIN 2
int main() {
stdio_init_all();
gpio_init(CLK_PIN);
gpio_set_dir(CLK_PIN, GPIO_IN);
gpio_pull_up(CLK_PIN);
gpio_init(DT_PIN);
gpio_set_dir(DT_PIN, GPIO_IN);
gpio_pull_up(DT_PIN);
gpio_init(SW_PIN);
gpio_set_dir(SW_PIN, GPIO_IN);
gpio_pull_up(SW_PIN);
sleep_ms(2000); // Wait for serial
printf("====== Rotatory Encoder example ======");
int previousCLK = gpio_get(CLK_PIN);
int counter = 0;
while(1) {
int currentCLK = gpio_get(CLK_PIN);
if (currentCLK != previousCLK) {
if (gpio_get(DT_PIN) != currentCLK) {
counter++;
} else {
counter--;
}
printf("Position: %d\n", counter);
}
previousCLK = currentCLK;
sleep_ms(1);
if(!(gpio_get(SW_PIN))){
printf("Button presses\n");
}
}
}