极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 735|回复: 0

码盘计数器的问题

[复制链接]
发表于 2020-10-17 23:07:52 | 显示全部楼层 |阅读模式
本帖最后由 shihaipeng05 于 2020-10-17 23:09 编辑

做了一个绕圈的东西,需要记录旋转圈数,前前后后弄了3,4个模块样子也各异,奇怪的是大部分模块会多记,在旋转盘上沾了一个小翅膀会通过模块,可见的模块灯会闪一次,但是计数器有时候会记录3,4次。我是用中断函数记的,不知道是哪里的问题,请大神们给指点一下。

O1CN014XQP9g1vkE69RaJ3Z_!!0-saturn_solar.jpg_270x270.jpg
只有右边这个计数比较准。另外2个,总是差异很大。我的电机转速也不高,大约1分钟90转左右。


模块接的 2#, 3#是一个舵机可以忽略,  10,11#是电机的控制端口
  1. int la=0,ra=90;  //舵机左右角度  


  2. #define buttonpin 2    //定义按键引脚、外部中断0

  3. int spd=17;  //速度
  4. int turns=111;  //圈数 大约长度/3

  5. #include <Servo.h>

  6. int flag = 0;

  7. Servo myservo;  // create servo object to control a servo


  8. int pos = 0;    // variable to store the servo position

  9. void setup() {
  10.   Serial.begin(115200);
  11.   pinMode(3, OUTPUT);
  12.   pinMode(10, OUTPUT);
  13.   pinMode(11, OUTPUT);
  14.   
  15.   myservo.attach(3);  // attaches the servo on pin 9 to the servo object
  16.   digitalWrite(10, 0);

  17.   pinMode(buttonpin, INPUT_PULLUP);   //内部上拉
  18.   pinMode(13, OUTPUT);
  19.   attachInterrupt(0, inter,FALLING);//外部中断,下降沿触发

  20. }

  21. void inter(){     //调用的中断函数
  22.   
  23.   flag++;
  24.   Serial.print(flag);
  25.   Serial.print("     |      ");
  26.   Serial.println(millis()/1000);

  27. }


  28. void loop() {

  29.   
  30.   for(int sqq=0;sqq<255;sqq++)
  31.   {
  32.    analogWrite(11, sqq);
  33.    delay(10);
  34.   }
  35. //电机加速


  36.   while (flag < turns)   //达到要求的圈数就停机

  37.   {
  38.       //下面是电机旋转时的操作可以忽略   
  39.        for (pos = ra; pos > la; pos--) { // goes from 0 degrees to 180 degrees
  40.       // in steps of 1 degree
  41.       myservo.write(pos);              // tell servo to go to position in variable 'pos'
  42.       delay(spd);                       // waits 15ms for the servo to reach the position
  43.     }
  44.    
  45.    
  46.   }

  47. analogWrite(11, 0); //电机停机


  48.   while(1)
  49.   {
  50.   
  51.   }

  52.    

  53. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-11-27 07:55 , Processed in 0.050658 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表