encoder คืออะไร ทำหน้าที่อะไร ใช้และเขียนยังไง

ตามหัวกระทู้เลยค่ะ คือว่าตอนนี้กำลังเขียนโปรแกรมภาษาซี โดยเขียนโดยโปรแกรม Arduino ซึ่งเอาไปบังคับหุ่นยนต์ มีคนแนะนำมาว่าให้ใช้ encoder ไปด้วยเพื่อเพิ่มความแม่นยำ แต่อ่านยังไงๆก็ไม่เข้าใจว่ามันใช้ยังไงแล้วเขียนยังไง แล้วต้องใช้ตอนไหน

#include <ATX2.h>
int L,R,RefL=384,RefR=465;
int x;
void setup()
{  
}

void loop()
{ }

void FFF()
{
  while(1)
  {
    L=analog(5);
    R=analog(4);
    if(L<RefL&&R<RefR)
    {
      FD(40);delay(800);
      break;
    }
    else if(L>RefL&&R>RefR) {FD(60);}
    if(L>RefL&&R<RefR){SR(70);}
    if(L<RefL&&R>RefR) {SL(70);}
  }
}

void RRR()
{
  while(1)
  {
    L=analog(5);
    R=analog(4);
    if(L<RefL&&R<RefR)
    {
      FD(50);
      while(analog(4)>RefR){SR(70);}
      while(analog(4)<RefR){SR(70);}
      break;
      
    }
    else if(L>RefL&&R>RefR) {FD(60);}
    if(L>RefL&&R<RefR){SR(70);}
    if(L<RefL&&R>RefR) {SL(70);}
  }
}

void LLL()
{
  while(1)
  {
    L=analog(5);
    R=analog(4);
    if(L<RefL&&R<RefR)
    {
      FD(50);
      while(analog(4)>RefR){SL(70);}
      while(analog(4)<RefR){SL(70);}
      break;
      
    }
    else if(L>RefL&&R>RefR) {FD(50);}
    if(L>RefL&&R<RefR){SR(70);}
    if(L<RefL&&R>RefR) {SL(70);}
  }
}

void BBB()
{
  while(1)
  {
    L=analog(5);
    R=analog(4);
    if(L<RefL&&R<RefR)
    {
     BK(50);delay(100);
     break;
     }
    else if(L>RefL&&R>RefR) {FD(60);}
    if(L>RefL&&R<RefR){SR(70);}
    if(L<RefL&&R>RefR) {SL(70);}
  }
}

void AAA()
{
  while(1)
  {
    L=analog(5);
    R=analog(4);
    if(L<RefL&&R<RefR)
    {
      AO();
      break;
    }
    else if(L>RefL&&R>RefR) {FD(60);}
    if(L>RefL&&R<RefR){SR(70);}
    if(L<RefL&&R>RefR) {SL(70);}
  }
}

void UUU()
{
  while(1)
  {
    FD(40);
    while(sonar()>10);
    BK(100);AO();
    servo(8,160);delay(500);
    servo(7,161);delay(300);
    servo(8,64);delay(500);
    BK(60); delay(550);AO();
    break;
  }
}

void DDD()
{
  while(1)
  {
    L=analog(5);
    R=analog(4);
    if(L<RefL&&R<RefR)
    {
      BK(50);delay(100);AO();
      servo(8,160);delay(300);
      servo(7,106);delay(300);
      servo(8,64);delay(300);
      break;
    }
    else if(L>RefL&&R>RefR) {FD(50);}
    if(L>RefL&&R<RefR) {SR(70);}
    if(L<RefL&&R>RefR) {SL(70);}
  }
}

นี่คือโค้ตที่เขียนส่วนนึง แต่ยังไงมันก็ยังไม่เข้าที่ อยากจะลองใช้ encoder เพิ่ม ต้องเพิ่ในส่วนไหน รบกวนผู้รู้ทีนะคะ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่