วันพฤหัสบดีที่ 28 พฤษภาคม พ.ศ. 2558

วันที่ 9 ขอการฝึกงานที่ FIBO

1.ตอนเช้าได้ทำด้ทสเต็ปมอเตอร์ครับโดยการเขียนโปรแกรมโดนการเขียนให้สเต็ปมอเตอร์หมุนได้ 1 ลอบ ดดนการคำนวนจากสเป็คมอเตอร์ที่ให้มา จะเป็น 1.8 ถ้าอยากให้หมุน 1 รอบ จะไ้เป็น 360 องศาจะได้สูตร โดนนำ 1.8 ไปหาร 360 จะได้ 200 จะเป็น 1 รอบพอดีครับจะได้โปรแกรมประมาณนี้ครับ

#define EN 8
#define X_DIR 5
#define X_STP 2
void step (boolean dir, byte dirPin, byte stepperPin, int steps) 
    digitalWrite (dirPin, dir); 
    delay (50); 
    for (int i = 0; i <steps; i++)
   { 
   digitalWrite (stepperPin, HIGH); 
   delayMicroseconds (800); 
   digitalWrite (stepperPin, LOW); 
   delayMicroseconds (800); 
   } 
void setup () 
{
   pinMode (X_DIR, OUTPUT); 
   pinMode (X_STP, OUTPUT); 
   pinMode (EN, OUTPUT); 
   digitalWrite (EN, LOW); 
void loop ()
   step (false, X_DIR, X_STP, 200);  
   delay (1000); 
}

 2.ทำโปรแกรมรับค่าจากเอ็นโค้ดเดอร์โดยโจทย์ที่ได้คือถ้าหมุนตามนาฬิกาจะนับรอบเป็นบวก แต่ถ้าหมุนทวนเข็มนาฬิกาจะให้ค่าติดลบครับจากการเขียนโปรแกรมยังไม่เส็ดครับเลยได้โปรแกรมประมาณนี้ครับ
int A = 2;
int B = 3;
int rotate = 0;
void setup() 
{
  pinMode(B,INPUT_PULLUP);
  attachInterrupt(0, Interrupts, LOW);
  Serial.begin(9600); 
}

void loop() 
{
  Serial.println(rotate);
  delay(200);
}
void Interrupts()
{     
  if (digitalRead(B)==HIGH)
  {
  rotate++;
  }
  else 
  {
  rotate--; 
  }  
}

 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น