你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

最最简单的旋转编码器程序(且不用中断)

[复制链接]
fanjiezz 发布时间:2017-12-29 17:43
//旋转编码器 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 ) );  //指示灯状态翻转      
      }
  }
}
收藏 3 评论14 发布时间:2017-12-29 17:43

举报

14个回答
枫天2015 回答时间:2017-12-29 18:19:19
没看明白。。。
fanjiezz 回答时间:2017-12-29 18:23:56
哪句不明白?
anywill 回答时间:2017-12-29 18:27:24
arduino的程序,stm32不太兼容
fanjiezz 回答时间:2017-12-29 18:33:02
请出例题。让我试试
fanjiezz 回答时间:2017-12-29 20:53:02
自我解释一下:    此程序运行成功,但只利用了编码器的一半脉冲数。相信各位完善它也是举手之劳的。
黑皮男 回答时间:2017-12-30 07:46:26
感觉这样干不太准确
Paderboy 回答时间:2017-12-30 22:48:59
stm32duino大法好。。
fanjiezz 回答时间:2017-12-31 11:45:45
不错,还有STMduino知音。
下面放出全脉冲旋转编码器程序,欢迎高手放出更简程序。
//旋转编码器 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 ) );  //指示灯状态翻转  
}

努力的人 回答时间:2017-12-31 17:21:01
发帖的话,要尽量详细说明一下,毕竟你用的那个就是ardunio的,怎么用在STM32上,不是只放代码
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版