极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9848|回复: 0

这个如果要控制电机转动时间该怎么弄啊。我这个电机总是只能转动几秒。。

[复制链接]
发表于 2013-4-26 17:06:53 | 显示全部楼层 |阅读模式
  1. #include <Password.h>
  2. #include <Keypad.h>
  3. #include <Stepper.h>
  4. #define STEPS 200
  5. Stepper stepper(STEPS,  4,5, 10, 13);
  6. int previous = 0;
  7. Password password = Password( "123" ); //解锁密码
  8. const byte ROWS = 2; // 四行
  9. const byte COLS = 4; // 四列
  10. // 定义键盘
  11. char keys[ROWS][COLS] = {
  12. { '1','2','3','A'},
  13. {'4','5','6','B'},
  14. };
  15. //行
  16. byte rowPins[ROWS] = {3,2};
  17. //列
  18. byte colPins[COLS] = { 9, 6, 7, 8};
  19. // 建立键盘
  20. Keypad keypad = Keypad( makeKeymap(keys),rowPins,colPins ,ROWS,COLS);
  21. void setup(){
  22.   Serial.begin(9600);
  23.   Serial.write(254);
  24.   Serial.write(0x01);
  25.   delay(200);
  26.   pinMode(11, OUTPUT);  //绿灯
  27.   pinMode(12, OUTPUT);  //红灯
  28.   stepper.setSpeed(100);
  29.   keypad.addEventListener(keypadEvent);
  30.   }
  31.   void loop(){
  32.   keypad.getKey();
  33.   
  34.   }
  35.   //注意一些特殊的事件
  36.   void keypadEvent(KeypadEvent eKey){
  37.   switch (keypad.getState()){
  38.   case PRESSED:
  39.   Serial.print("Enter: ");
  40.   Serial.println(eKey);
  41.   delay(10);
  42.   
  43.   Serial.write(254);
  44.   switch (eKey){
  45.     case 'A': checkPassword(); delay(1); break;
  46.     case 'B': password.reset(); delay(1); break;
  47.     default: password.append(eKey); delay(1);
  48. }
  49. }
  50. }
  51. void checkPassword(){
  52. if (password.evaluate()){  
  53.     Serial.println("Accepted");//如果密码正确开锁
  54.     Serial.write(254);delay(10);
  55.     //如果开始工作,运行以下代码

  56.     digitalWrite(11, HIGH);//打开
  57.     delay(500); //等待5秒
  58.     int val = analogRead(0);
  59.     stepper.step(val - previous);
  60.     previous = val;
  61.     digitalWrite(11, LOW);// 关闭
  62. }else{
  63.     Serial.println("Denied"); //如果密码错误保持锁定
  64.     Serial.write(254);delay(10);
  65.     //如果没有开始工作,运行以下代码
  66.     digitalWrite(12, HIGH); //打开
  67.     delay(500); //等待5秒
  68.     digitalWrite(12, LOW);//关闭
  69. }
  70. }
复制代码
回复

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 07:18 , Processed in 0.033830 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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