Arduino DIY X-Y 平面運動機構(gòu)
IMG_20191206_174648.jpg (65.56 KB, 下載次數(shù): 83)
下載附件
2019-12-6 18:46 上傳
IMG_20191206_174656.jpg (65.83 KB, 下載次數(shù): 78)
下載附件
2019-12-6 18:46 上傳
* 所需部件某寶上都可以買到,自己組裝就可以.
* 運轉(zhuǎn)起來很有趣(請看視頻).
* 改裝了可以做畫圖機器
代碼:
//激光切割機
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h> //引用I2C庫
- //I2C 引腳接A4, A5
- //設(shè)置LCD1602設(shè)備地址,這里的地址是0x3F,一般是0x20,或者0x27,具體看模塊手冊
- LiquidCrystal_I2C lcd(0x27,16,2);
- #include <Stepper.h>
- #include <Servo.h>
- Servo myservo1;
- Servo myservo2;
- #define JDQ 5 //激光頭繼電器
- #define LED1 8 //方向指示燈1
- #define LED2 9 //方向指示燈2
- #define LED3 10 //方向指示燈3
- #define LED4 11 //方向指示燈4
- int pos1 =0;
- int pos2 =0;
- //模擬1數(shù)據(jù)
- 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} ;
- 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,} ;
- void setup() {
- Serial.begin(9600); //串口
- lcd.init(); // 初始化LCD
- lcd.backlight(); //設(shè)置LCD背景等亮
- myservo1.attach(2);
- myservo1.write(1);
- myservo2.attach(3);
- myservo2.write(1);
- pinMode(JDQ,OUTPUT);
- pinMode(LED1,OUTPUT);
- pinMode(LED2,OUTPUT);
- pinMode(LED3,OUTPUT);
- pinMode(LED4,OUTPUT);
- }
- void loop() {
- myservo1.write(1);
- myservo2.write(1);
- delay(1000);
- //
- for ( int i = 0; i < 40; ++i ){
- lcd.setCursor(0,0);
- lcd.print("X-Y Draw Test");
- lcd.setCursor(0,1);
- lcd.print("X=");
- lcd.setCursor(2,1);
- lcd.print(" ");
- lcd.setCursor(2,1);
- lcd.print(X[i]);
- lcd.setCursor(6,1);
- lcd.print("Y=");
- lcd.setCursor(8,1);
- lcd.print(" ");
- lcd.setCursor(8,1);
- lcd.print(Y[i]);
- lcd.setCursor(12,1);
- lcd.print(i);
- delay(10);
- if(X[i]>90){digitalWrite(LED4,HIGH);digitalWrite(LED1,LOW);digitalWrite(LED2,LOW);digitalWrite(LED3,LOW);}
- if(X[i]<90){digitalWrite(LED2,HIGH);digitalWrite(LED1,LOW);digitalWrite(LED3,LOW);digitalWrite(LED4,LOW);}
- myservo1.write(X[i]);
- delay(600);
- if(Y[i]>90){digitalWrite(LED1,HIGH);digitalWrite(LED2,LOW);digitalWrite(LED3,LOW);digitalWrite(LED4,LOW);}
- if(Y[i]<90){digitalWrite(LED3,HIGH);digitalWrite(LED1,LOW);digitalWrite(LED2,LOW);digitalWrite(LED4,LOW);}
- myservo2.write(Y[i]);
- delay(600);
- digitalWrite(JDQ,LOW);
- delay(200);
- digitalWrite(JDQ,HIGH);
- delay(200);
- }
- //
- delay(5000);
- }
復(fù)制代碼
|