2017-06-16 48 views
0

我必須在機器人編碼器電機的反饋處理中繪製圖形。所以我基本上有兩個變量,分別是電機編碼器和右電機編碼器。我計劃在x軸和y軸上改變。當我瀏覽互聯網上的一些代碼時,我發現幾乎每個人都在串行事件本身編寫了圖形部分代碼?使用處理的實時圖形繪圖

所以我的第一個疑問是,爲什麼他們在串行事件()函數而不是void draw()中寫入?另一件事是,當我試着寫我在虛空畫(圖碼),它有一個僞代碼是這樣的:

  xpos1=0,ypos1=height; 
     void draw(): 
     line(xpos1,ypos1,xpos,height-ypos);// obviously the data(xpos,ypos) is mapped with the width and height of the processing ide window. 
      xpos1=xpos; 
      ypos1=height-ypos; 
      if(xpos1>=width) 
      { 
       xpos1=0; 
      } 
      if(ypos1>=height) 
      { 
       ypos1=0; 
      } 

所以我能看到只有一小點穿越的處理IDE窗口和我無法看到我的線路已走過的較舊路徑,在我描述的站點情況下,當它們在serial event()中編寫類似的代碼段時,他們在處理窗口中創建了一個完整的圖表。

我在哪裏出錯?還有沒有其他的方法可以使用void draw()來繪製圖形?我想要改變xpos以及ypos,因爲我得到了兩個反饋,包括左電機和右電機。

graph

截圖我試圖圖在不同的幀!

Image

通過稍微做出的圖形顯示類似上面的代碼,但寫入串行事件()在互聯網上公佈的一個截圖:

+3

您可以請發表[mcve]嗎?暫時忘記系列內容。你可以隨時間繪製出'mouseX'變量嗎? –

+0

我認爲這裏有兩個很多的子問題。請將它縮減爲您想要修復的第一件事,並添加Kevin要求的MCVE。它感覺相當廣泛,目前「修復一切」。 – halfer

+0

@KevinWorkman ok讓我試着繪製mouseX變量隨着時間的推移,我會相應地編輯問題。那麼請告訴我爲什麼他們在串行事件()中寫出繪圖代碼而不是void draw()?我向你發送一個參考文件: https://arduining.com/2013/08/05/arduino-and-processing-graph-example/ –

回答

0

正如評論指出,有太多子問題在這裏。

關於與代碼相關的問題,有一條主線使代碼比它的複雜程度要複雜得多。您試圖在兩個編碼器接收到的每個數字之間劃一條線。沒有必要這樣做。繪製圖形時,我個人使用點(x,y)函數。爲了實現原型目的而實現起來更容易,並且調整草圖運行的frameRate(),您將不會注意到其中的差異。

void draw() { 

    point(encoder1, encoder2); 

    if (encoder1 >= width) { 
    encoder1 = encoder1 - width; 
    } 
    if (encoder2 >= height) { 
    encoder2 = encoder2 - height; 
    } 
} 

像這樣一個簡單的草圖將完成這項工作。

另一個不太清楚的事情是變量的初始化。通常情況下,如果變量持續增加(如時間),則初始化一個變量,但是從描述中您要在X軸上繪製一個編碼器,在Y軸上繪製另一個編碼器。因此,爲了不讓它們超出畫布範圍,將這些值映射到最初是不是更好?

請編輯該問題,以便代碼清晰簡潔,遵循these準則,並嘗試爲每個帖子提出一個問題。