Google
 

星期一, 3月 31, 2014

ATOM 3D印表機負座標顯示修正

ATOM一開始就被我發現LCD顯示有點問題, 當座標值是負數時顯示結果是錯的。

例如, X = -4會顯示是這樣:













雖然不影響功能, 但龜毛如我, 這種事是很難令人忍受的。

忍不住動手改了一下firmware, 找了一下在 ultralcd.cpp 裡, 將 itostr3 這個函數改成這樣:

char *itostr3(const int &xx)
{
  int xx1 = abs(xx);
  if (xx1 >= 100)
    conv[0]=(xx1/100)%10+'0';
  else
    conv[0]=' ';
  if (xx1 >= 10)
    conv[1]=(xx1/10)%10+'0';
  else
    conv[1]=' ';
  conv[2]=(xx1)%10+'0';
  conv[3]=0;
  if (xx < 0) conv[0] = '-';
  return conv;
}

如此一來, 就可以正確顯示負座標了。
























============================================================
4/1補充(不是愚人節把戲, 請放心!)

空白的地方改'0', 填滿3位數比較好看. 請自行選擇喜歡的顯示方式服用:

char *itostr3(const int &xx)
{
  int xx1 = abs(xx);
  if (xx1 >= 100)
    conv[0]=(xx1/100)%10+'0';
  else
    conv[0]='0';
  if (xx1 >= 10)
    conv[1]=(xx1/10)%10+'0';
  else
    conv[1]='0';
  conv[2]=(xx1)%10+'0';
  conv[3]=0;
  if (xx < 0) conv[0] = '-';
  return conv;
}


沒有留言: