ควบคุมสเต็ปปิ้งมอเตอร์โดยใช้บอร์ดอาดูโน่
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#define Go_L 8 // กำหนดขาที่ต่อกับสวิตช์โยก #define Go_R 9 // กำหนดขาที่ต่อกับสวิตช์โยก #define Limit_R 11 //กำหนดขาที่ต่อกับลิมิตสวิทช์ #define Limit_L 12 //กำหนดขาที่ต่อกับลิมิตสวิทช์ int speed1 = 900; //กำหนดความเร็ว ค่าน้อย มอเตอร์หมุนเร็ว ค่ามาก มอเตอร์หมุนช้า void setup(){ pinMode(5, OUTPUT); pinMode(2, OUTPUT); pinMode(Go_L, INPUT_PULLUP); pinMode(Go_R, INPUT_PULLUP); pinMode(Limit_R, INPUT_PULLUP); pinMode(Limit_L, INPUT_PULLUP); } void loop() { if(digitalRead(Go_R)==0) //โยกไปขวา { if (digitalRead(Limit_R))//ตราบเท่าที่ยังไม่ชนลิมิตสวิตช์ สั่งให้มอเตอร์หมุนต่อไป { digitalWrite(2, LOW); digitalWrite(5, HIGH); delayMicroseconds(speed1); digitalWrite(5, LOW); delayMicroseconds(speed1); } else { // ชนลิมิตสวิตช์แล้ว มอเตอร์หยุด } } if(digitalRead(Go_L)==0) //โยกไปซ้าย { if (digitalRead(Limit_L))//ตราบเท่าที่ยังไม่ชนลิมิตสวิตช์ สั่งให้มอเตอร์หมุนต่อไป { digitalWrite(2, HIGH); digitalWrite(5, HIGH); delayMicroseconds(speed1); digitalWrite(5, LOW); delayMicroseconds(speed1); } else { // ชนลิมิตสวิตช์แล้ว มอเตอร์หยุด } } } |