天天看点

<kbd># 最简化编码器计数程序( 有效5行,验证于arduino ) <kbd>

# 最精简arduino编码器计数程序( 有效5行,验证于arduino Nano

    • 插入链接与图片

#include <TM1637.h>

TM1637 tm1637(3, 2 ); //定义引脚连接 这是编码器程序 可按可加减计数

int coderCLK = 4; // Connected to CLK on KY-040 CLK接 pin4

int coderDT = 5; // Connected to DT on KY-040 DT接pin5

int coderSW = 6; // Connected to DT on KY-040 SW接pin6 SW是按键,

int8_t ListDisp[4];

int encoderPosCount = 50;

int val = 0;

void setup() {

tm1637.set();

tm1637.init();

pinMode (10, OUTPUT);

pinMode (11, OUTPUT);

pinMode (12, OUTPUT);

pinMode(coderCLK, INPUT);

pinMode(coderDT, INPUT);

pinMode (coderSW, INPUT);

Serial.begin (9600);

}

void loop() {

coder();

ListDisp[0] =(encoderPosCount / 1000) % 10;

ListDisp[1] =(encoderPosCount / 100) % 10;

ListDisp[2] =(encoderPosCount / 10) % 10;

ListDisp[3] =(encoderPosCount / 1) % 10;

tm1637.display(0, ListDisp[0]);

tm1637.display(1, ListDisp[1]);

tm1637.display(2, ListDisp[2]);

tm1637.display(3, ListDisp[3]);

}

void coder() {

1 val = val * 10 + digitalRead(coderCLK);

2 val = val * 10 + digitalRead(coderDT);

3 if (val == 1110) encoderPosCount–;

4 if (val == 1101) encoderPosCount++;

//digitalWrite(10, val / 1000);

//digitalWrite(11, val / 10);

//digitalWrite(12, val % 10);

//if (val / 100 != val % 100) { Serial.print(val); //Serial.print(" "); }

5 val = val % 100;

}**

插入链接与图片

链接: link.

图片:

&lt;kbd&gt;# 最简化编码器计数程序( 有效5行,验证于arduino ) &lt;kbd&gt;