求助!电机停止转动1、4脚指示灯常亮问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 440|回复: 2

[未解决] 求助!电机停止转动1、4脚指示灯常亮问题

[复制链接]
发表于 2022-8-26 16:02 | 显示全部楼层 |阅读模式
66金币

按钮按下去转动后,电机的1和4脚(ULN2003)指示灯常亮,不能关闭,用万用表测量1、4脚都带3.8V左右电压,导致电机发热严重,
如果按下板子复位按钮就正常,只要按钮按下转一圈停止后,1、4脚就这样,只能复位,谁能给帮我看看是不是按键代码问题?

  1. #include <Stepper.h>
  2. const int key1 = 12; // 正传按钮
  3. const int key2 = 14; // 反转按钮
  4. boolean direct = false; //初始化为静止;
  5. const int stepsPerRevolution = 32;
  6. Stepper myStepper(stepsPerRevolution, 13, 4, 5, 0);

  7. void setup() {
  8.   myStepper.setSpeed(500);  //设置转速
  9.   pinMode(key1, INPUT);
  10.   pinMode(key2, INPUT);
  11. Serial.begin(115200);
  12. }

  13. void loop() {
  14.   if (digitalRead(key1) == HIGH)
  15.   {
  16. clockwise(); //正传
  17.   }

  18.   if (digitalRead(key2) == LOW)
  19.   {
  20. anticlockwise(); //反转
  21.   }

  22. }

  23. void stop1() {
  24. myStepper.step(0);
  25.   }

  26. boolean key_scan() //检测外部按键是否有按下;
  27. {
  28.   if (digitalRead(key1) == HIGH)  //按键1检测
  29.   {
  30.     delay(20); //前沿延时消抖;
  31.     if (digitalRead(key1) == HIGH)
  32.     {
  33.       direct = true; //有按下,取反direct;
  34.     }
  35.     while (digitalRead(key1) == HIGH); //a等待按键松开,后沿不消抖处理;
  36.   }

  37.   if (digitalRead(key2) == LOW)  //按键2检测
  38.   {
  39.     delay(20); //前沿延时消抖;
  40.     if (digitalRead(key2) == LOW)
  41.     {
  42.       direct = true; //有按下,取反direct;
  43.     }
  44.     while (digitalRead(key2) == LOW); //a等待按键松开,后沿不消抖处理;
  45.   }

  46.   return direct;
  47. }

  48. void clockwise()
  49. {
  50. Serial.println("正转");
  51.     myStepper.step(312);
  52.     delay(10);
  53. }
  54. void anticlockwise()
  55. {
  56. Serial.println("反转");
  57.     myStepper.step(-312);
  58.     delay(10);
  59. }
复制代码


发表于 2022-8-26 16:05 | 显示全部楼层
你自己判断下电机到不到位,然后直接把引脚输出低电平就行了
 楼主| 发表于 2022-8-26 16:43 | 显示全部楼层
我用示例文件跑也是1、4脚不能关闭,很奇怪的问题。
  1. #include <Stepper.h>
  2. #define STEPS 64
  3. Stepper stepper(STEPS, 13, 4, 5, 0);
  4. void setup()
  5. {
  6.   stepper.setSpeed(200);
  7.   Serial.begin(9600);
  8. }

  9. void loop()
  10. {
  11.     Serial.println("shun");
  12.     stepper.step(48);
  13.     delay(900);
  14. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-30 23:45 , Processed in 0.075348 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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