วันอาทิตย์ที่ 5 กรกฎาคม พ.ศ. 2558

วันที่34 ที่Fibo

-เริ่มจากการแก้ ดีบัคโค้ด ของโปรแกรม โดยการฟินเตอร์แต่ละคำที่ส่งเข้าไป โดยที่ไนท์เป็นคนที่แนะนำสอนและทำให้ดูเป็นตัวอย่าง อย่างชัดเจน

//___Pin assigned___//
const int pin_Pwm = 9;
String inputstring = "";                                                       //a string to hold incoming data from the PC
int inputstringLength=0;

void setup()
{
  Serial.begin(115200);                                                       //Serial with PC to 38400
  Serial2.begin(38400);                                                      //Serial with pH meter to 38400
  Serial3.begin(38400);                                                      //Serial with EC meter to 38400

  //attachInterrupt(0,Millis,RISING);
}

void loop()
{
  //___Receive Command___//
  if(Serial.available()>0)
  {
    while(Serial.available()>0)
    {
   
      inputstring += char(Serial.read());
      inputstringLength += 1;
      delay(1);
    }
  }
  //___Command Checker___//
  Command_Checker();
}


ฟังชันก์การทำงานคือการส่งคำสั่งเข้ามาจะมาฟินเตอร์ที่ฟังชันก์นี้
void Command_Checker()
{
  if(inputstringLength==6)
  {
    if((inputstring[4]=='Y')&&(inputstring[5]=='U'))
    {
      if(inputstring[0]=='M')
      {
        Serial.print("Motor Command : ");
        Serial.println(inputstring);
        inputstring = "";
        inputstringLength=0;
      }
      else if(inputstring[0]=='P')
      {
        Serial.print("pH Command : ");
        Serial.println(inputstring);
        inputstring = "";
        inputstringLength=0;
      }
      else if(inputstring[0]=='E')
      {
        Serial.print("EC Command : ");
        Serial.println(inputstring);
        inputstring = "";
        inputstringLength=0;
      }
      else
      {
        Serial.print("Command (heading) ERROR!!! : ");
        Serial.println(inputstring);
        inputstring = "";
        inputstringLength=0;
      }
    }
    else
    {
      Serial.print("Command (ending) ERROR!!! : ");
      Serial.println(inputstring);
      inputstring = "";
      inputstringLength=0;
    }
  }
  else if(inputstringLength == 0)
  {
    // Do nothing
  }
  else
  {
    Serial.print("Command (overall) ERROR!!! : ");
    Serial.println(inputstring);
    inputstring = "";
    inputstringLength=0;
  }
}

จากตรงนี้พอเข้าใจดีแต่มีปัญหาคือ การส่งคำสั่งไปแล้วมันยังคงฟินออกมาทุกตัวโดยที่ยังไม่สามารถตัดออกไปได้ และกำลังหาวิธีแก้ปัญหา
string คือการรับค่าเป็นอักษรแบบยาวๆได้ แต่ถ้าเป็น char จะได้แค่8บิต
แฟฃหล่งที่มา https://www.arduino.cc/en/Reference/string





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

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