|
//旋转编码器 STM32F103C8T6 2017.12.29.ino fanjiezz@163.com long add1=0, dec1=0 ; void setup(){ Serial.begin( 115200 ); //打印输出设置 pinMode( 2, INPUT_PULLUP ); //2脚为旋转编码器上拉输入A2 pinMode( 3, INPUT_PULLUP ); //3脚为旋转编码器上拉输入A3 pinMode( 32, OUTPUT ); //指示灯设置 } void loop(){ while ( digitalRead( 2 ) & digitalRead( 3 )){ //当A2及A3均为高电平时开始计数准备 delay(5); if ( !digitalRead(2) ) { //当A2为低电平时正计数 add1 = add1 + 1; Serial.print( " +1 " ); Serial.println( add1-dec1 ); digitalWrite( 32, !digitalRead( 32 ) ); //指示灯状态翻转 } if ( !digitalRead(3) ) { //当A3为低电平时倒计数 dec1 = dec1 + 1; Serial.print( " -1 "); Serial.println( add1-dec1 ); digitalWrite( 32, !digitalRead( 32 ) ); //指示灯状态翻转 } } } |
微信公众号
手机版
下面放出全脉冲旋转编码器程序,欢迎高手放出更简程序。
//旋转编码器 STM32F103C8T6 2017.12.31.ino fanjiezz@163.com
long add1=0, dec1=0 ;
void setup(){
Serial.begin( 115200 ); //打印输出设置
pinMode( 2, INPUT_PULLUP ); //2脚为旋转编码器上拉输入A2
pinMode( 3, INPUT_PULLUP ); //3脚为旋转编码器上拉输入A3
pinMode( 32, OUTPUT ); //指示灯设置
}
void loop(){
while ( digitalRead( 2 ) & digitalRead( 3 )){ //当A2及A3均为高电平时开始计数准备
delay(5);
if ( !digitalRead(2) ) { addPR(); } //当A2为低电平时正计数
if ( !digitalRead(3) ) { decPR(); } //当A3为低电平时倒计数
}
while ( !digitalRead( 2 ) & !digitalRead( 3 )){ //当A2及A3均为低电平时开始计数准备
delay(5);
if ( digitalRead(2) ) { addPR(); } //当A2为高电平时正计数
if ( digitalRead(3) ) { decPR(); } //当A3为高电平时倒计数
}
}
void addPR(){
add1 = add1 + 1;
Serial.print( " +1 " );
Serial.println( add1-dec1 );
digitalWrite( 32, !digitalRead( 32 ) ); //指示灯状态翻转
}
void decPR(){
dec1 = dec1 + 1;
Serial.print( " -1 ");
Serial.println( add1-dec1 );
digitalWrite( 32, !digitalRead( 32 ) ); //指示灯状态翻转
}