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

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

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

举报

14个回答
枫天123 回答时间: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上,不是只放代码
fanjiezz 回答时间:2017-12-31 18:06:59

在STM32F1XX芯片上用Arduino好像不是主流方向,本专业社区中也很少有人感兴趣。
譬如我去年发的帖子看的人比较多,但响应极少:
https://www.stmcu.org.cn/module/forum/thread-609751-1-1.html
所以我也不多啰嗦,仅仅是凑凑热闹而已。谢谢版主的指点,也拜谢各位光顾!
fanjiezz 回答时间:2017-12-31 20:47:59
若希望了解一下Arduino软件用于STM32F1XX芯片的,请看:
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=608305&extra=page%3D5%26filter%3Dtypeid%26typeid%3D2
gwb88 回答时间:2017-12-31 21:36:59
Arduino软件用于STM32开发,效率很高,我也常用.
robter 回答时间:2018-4-22 22:06:26
刚刚接触旋转编码器,还没有入门
tdi110 回答时间:2018-4-24 22:23:19
定时器直接就有编码器的 功能·很方便

所属标签

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