找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2852|回复: 0
收起左侧

Arduino DIY X-Y 平面运动机构

[复制链接]
ID:426684 发表于 2019-12-6 19:07 | 显示全部楼层 |阅读模式
Arduino DIY X-Y 平面运动机构

IMG_20191206_174648.jpg IMG_20191206_174656.jpg

* 所需部件某宝上都可以买到,自己组装就可以.

* 运转起来很有趣(请看视频).

* 改装了可以做画图机器


代码:

//激光切割机
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h> //引用I2C库
  3. //I2C 引脚接A4, A5
  4. //设置LCD1602设备地址,这里的地址是0x3F,一般是0x20,或者0x27,具体看模块手册
  5. LiquidCrystal_I2C lcd(0x27,16,2);
  6. #include <Stepper.h>
  7. #include <Servo.h>
  8. Servo myservo1;  
  9. Servo myservo2;
  10. #define JDQ   5                       //激光头继电器
  11. #define LED1  8                      //方向指示灯1
  12. #define LED2  9                       //方向指示灯2


  13. #define LED3  10                      //方向指示灯3


  14. #define LED4  11                       //方向指示灯4


  15. int pos1 =0;
  16. int pos2 =0;
  17. //模拟1数据
  18. int X[ 40 ] = { 0, 40, 40, 0,90,35,60,10,87,110,10, 26, 20, 0,45,15,30,70,98,12,0, 40, 40, 0,90,35,60,10,87,110,10, 26, 20, 0,45,15,30,70,98,12} ;
  19. int Y[ 40 ] = { 0, 20, 40, 0,110,23,85,44,90,100,0, 80, 30, 80,40,0,15,89,56,20,0, 20, 40, 0,110,23,85,44,90,100,0, 80, 30, 80,40,0,15,89,56,20,} ;

  20. void setup() {
  21. Serial.begin(9600);                             //串口
  22. lcd.init();                                              // 初始化LCD
  23. lcd.backlight();                                   //设置LCD背景等亮
  24. myservo1.attach(2);
  25. myservo1.write(1);  
  26. myservo2.attach(3);
  27. myservo2.write(1);
  28. pinMode(JDQ,OUTPUT);
  29. pinMode(LED1,OUTPUT);
  30. pinMode(LED2,OUTPUT);
  31. pinMode(LED3,OUTPUT);
  32. pinMode(LED4,OUTPUT);
  33. }

  34. void loop() {
  35. myservo1.write(1);  
  36. myservo2.write(1);
  37. delay(1000);
  38. //
  39. for ( int i = 0; i < 40; ++i ){
  40. lcd.setCursor(0,0);
  41. lcd.print("X-Y Draw Test");
  42. lcd.setCursor(0,1);               
  43. lcd.print("X=");                  
  44. lcd.setCursor(2,1);            
  45. lcd.print("   ");   
  46. lcd.setCursor(2,1);              
  47. lcd.print(X[i]);     
  48. lcd.setCursor(6,1);            
  49. lcd.print("Y=");     
  50. lcd.setCursor(8,1);              
  51. lcd.print("   ");     
  52. lcd.setCursor(8,1);               
  53. lcd.print(Y[i]);     
  54. lcd.setCursor(12,1);            
  55. lcd.print(i);   
  56. delay(10);
  57. if(X[i]>90){digitalWrite(LED4,HIGH);digitalWrite(LED1,LOW);digitalWrite(LED2,LOW);digitalWrite(LED3,LOW);}
  58. if(X[i]<90){digitalWrite(LED2,HIGH);digitalWrite(LED1,LOW);digitalWrite(LED3,LOW);digitalWrite(LED4,LOW);}
  59. myservo1.write(X[i]);
  60. delay(600);
  61. if(Y[i]>90){digitalWrite(LED1,HIGH);digitalWrite(LED2,LOW);digitalWrite(LED3,LOW);digitalWrite(LED4,LOW);}
  62. if(Y[i]<90){digitalWrite(LED3,HIGH);digitalWrite(LED1,LOW);digitalWrite(LED2,LOW);digitalWrite(LED4,LOW);}
  63. myservo2.write(Y[i]);
  64. delay(600);  
  65. digitalWrite(JDQ,LOW);
  66. delay(200);
  67. digitalWrite(JDQ,HIGH);
  68. delay(200);
  69. }
  70. //
  71. delay(5000);
  72. }
复制代码



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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