Posted on

ควบคุมสเต็ปปิ้งมอเตอร์โดยใช้บอร์ดอาดูโน่และลิมิตสวิทช์

ควบคุมสเต็ปปิ้งมอเตอร์โดยใช้บอร์ดอาดูโน่

#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
            {
              // ชนลิมิตสวิตช์แล้ว มอเตอร์หยุด
            }
      }
}